Stackmachine

命令が4つ、メモリが10個の仮想スタックマシンです。

inputs

outpus


		

memory

stack

status

phase -
counter -
opecode -
stop -

これは?

命令が4つ、メモリが20個の仮想スタックマシンです。

使い方

「reset machine」をクリック。仮想スタックマシンがリセットされます。

「load to memory」をクリック。inputs(ソース)の内容をメモリにロードします。

「-stop」が[Yes]になるまで「tick」をクリック。

「-stop」が[Yes]になると、仮想スタックマシンはもう停止状態なので、また「reset ~」から始めて下さい。

命令

push (整数)

(整数) を「stack」に積みます。

add

「stack」に積んである2つの (整数) をおろして、加算し、その結果を「stack」に積みます。「stack」に2つ以上の (整数)が積んでないときは、「Stack under-flow」で停止します。

print

「stack」に積んである1つの (整数) をおろして、「ouputs」に出力します。「stack」に1つ以上の (整数)が積んでないときは、「Stack under-flow」で停止します。

stop

仮想スタックマシンが停止状態になります。

inputs

ソースファイルのようなものです。前述の命令を記述します。メモリが10個しかないので、停止することを考えると、実質命令は9個しか書けません。
サンプルソース
push 3
push 4
add
push 5
add
print

status

ステータスはCPUの状態を表しています。

phase

phase はCPUが命令を読み込む、「fetch」、実行する「exec」、メモリカウンタを1つ進める「increment」があります。 「tick」をクリックするごとにCPUはその3つを順に行います。

counter

メモリカウンタです。CPUは「fetch」のときにこの数値のaddress から「- opecode」に命令を読み込ます。

opecode

CPUが「exec」で実行する命令です。

stop

CPUが停止状態のときに「Yes」になるフラグです。

ライセンス

MIT ライセンスで公開しています。 ライセンスの全文は下で参照できます。

https://raw.github.com/quwahara/stackmachine/master/LICENSE