Toy VM(3)

メモ。

  • Gauche を構造を理解する目的で読む場合、古いバージョンから読む。

例えば Reading Gauche が対象にしている 0.8.11 では、src/vm.c と src/gauche/vm.h にかなりの情報が有る。YAGHG も0.8.6 が対象。現在の gauche のソースはずっと複雑な作りになっていて、入門には難しい。ただし、古いバージョンを読んでいると新しいバージョンとの違いでひっかかる可能性もあるため注意。gauche を高速化したいとか速度で勝負したいとかなら新しいバージョンを読む必要がある。

  • Stack の操作としてLOCAL-ENV, LREF, LSET, CONST, PUSHがようやく分かったかもしれない。

YAGHG「環境フレームは引数フレームと環境ヘッダからなり、また環境フレームへのポインタは 環境ヘッダを指す」。指しているとこがずっと分からなかった、、

  • 継続

PRE-CALL で継続を積むようにした。RET とペアなのでちゃんと動いているかよくわからない。問題は、1)call/cc の自明でない使い方で、2)# が出てこないような、意味のあるテストを考えなければならない。