スタックマシンの命令 | ||
オプコード | 引数 | 処理内容 |
CONST | x | 定数をスタックに載せる |
LVAR | i,j | iフレームのj番目の局所変数の値をスタックに載せる |
GVAR | sym | symで表される大域変数の値をスタックに載せる |
LSET | i,j | スタックトップの値をiフレームのj番目変数の値とする |
GSET | sym | スタックトップの値をsymで表される大域変数の値とする |
POP | スタックトップの値を1つ取り除く | |
FJUMP | label | スタックトップの値がnilならば,スタックをpopしてlabel へ飛ぶ |
JUMP | label | labelへ飛ぶ(スタックのpopはしない) |
CALL | n | スタックトップがn個の引数を使う関数であると いうことで,CALLから帰ってくるべき場所をスタックに積んで, 関数を呼ぶ. |
FN | closure | closure をスタックに積む. |
ARGS | n | n個の引数をスタックから評価環境へ取り込む |
RETURN | スタックトップにリターンすべき値があり, そのつぎにリターン場所があるとして, プログラムカウンタをそのリターン場所にし,スタックへ リターンすべき値を積み戻す. |