これは?
命令が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