- @enodranoeL #
ついうっかりで小1時間も時間潰してしまった・・・俺のバカ・・・
- @enodranoeL #@enodranoeL
もしかするとコンパイルが必要なのかもしれない・・
- @enodranoeL #@enodranoeL
テキトーなスタックマシーンでイメージした感じ、レキシカルスコープならもしかするとどうにかなるかもしらんが・・・
- @enodranoeL #@enodranoeL
プログラムコードが膨らみそう
- @enodranoeL #@enodranoeL
PUSH <CODE>
コードデータをスタックにプッシュする - @enodranoeL #@enodranoeL
GET <R-POS>
現在のスタックポインタから相対的な位置にあるスタック上のデータのコピーをスタックにプッシュする - @enodranoeL #@enodranoeL
CALL <PROG-POS>
現在のプログラムポジションをスタックに積み、指定のプログラムポジションのプログラムを実行する - @enodranoeL #@enodranoeL
RET
戻り値と戻りポジションをスタックから取り出し
戻り値をスタックにプッシュしたのち戻りポジションにプログラムポジションを移して実行 - @enodranoeL #@enodranoeL
JUMP <PROG-POS>
指定したプログラムポジションにジャンプする - @enodranoeL #@enodranoeL
JUMP-IF-TRUE <PROG-POS>
JUMP-IF-FALSE <PROG-POS>
JUMP-IF-NIL <PROG-POS>
JUMP-IF-NOT-NIL <PROG-POS>
スタックから値を取り出し値が指定の値と一致するなら指定のプログラムポジションへジャンプ - @enodranoeL #@enodranoeL
CALL-BUILTIN <FN-POINTER>
ビルトイン関数を呼ぶ - @enodranoeL #@enodranoeL
RAISE-ERROR <ERR-INFO>
エラー発生させて実行中断する - @enodranoeL #@enodranoeL
スタックに積んだ引数の除去処理が必要だた・・・
- @enodranoeL #@enodranoeL
引数の数は静的に解決できるはずだから
RET <ARG-COUNT>
あたりにしといてやればいいか() - @enodranoeL #@enodranoeL
絶対位置も必要だな・・・・再帰だと相対じゃ取れない?
- @enodranoeL #@enodranoeL
問題があるとすれば微妙な引数のバインド作法をどうにかしないとな・・・
- @enodranoeL #@enodranoeL
受け取り引数に対して解体してリバインドしないとけいない