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「環境フレームは引数フレームと環境ヘッダからなり、また環境フレームへのポインタは 環境ヘッダを指す」。指しているとこがずっと分からなかった、、
- > 分かってから見るとちゃんと src/gauche/vm.h に書いてある。ScmEnvFrame. ということは http://practical-scheme.net/gauche/memo-stack-j.html の環境フレームの AA が古い。
- 継続
PRE-CALL で継続を積むようにした。RET とペアなのでちゃんと動いているかよくわからない。問題は、1)call/cc の自明でない使い方で、2)#