3imp

Scheme コンパイラの勉強(49) - lambda, closure, frame

コンパイルの過程。以下3impに書いていること、そのまま。 lambda (lambda vars body) は (close vars cbody) へコンパイルされる。body をコンパイルするときは next を '(return) にしておく。 (return) インストラクションは、スタックから最初のフレーム…

Scheme コンパイラの勉強(48)

再度整理。 rec -> gauche では定義しなくてよい。SRFI-31 として定義済み。 recur -> named let を使えば不要。 record-case -> match で書き換えできるので不要。 この 3imp 3.4 の VM + Compiler で、まずは普通の四則演算ができるようにしたい。さてどう…

Scheme コンパイラの勉強(47)

あまり進んでいないがメモ。VM のレジスタの役割を再度確認中。 VM にわたる引数を全て出力して一つ一つ追って行く。 うーん、コンパイラとVMとどちらがどこまで正しいのかよくわからないなぁ。もっと理解できる最小の系にしないと駄目だ。

Scheme コンパイラの勉強(46)

いろんな実装を真似して何とか 3imp 3.4 の compiler/VM が動くようになった。まだ理解しているとは言いがたいのでコードは貼付けない。 record, record-case は結局 define-macro で書いた。syntax-case は良くわかっていない。 recur って let (named let)…

Scheme Compiler の勉強(45) - 3imp 関連リンク

chapter 3. とりあえず動かしてから眺める、というやり方はうまく行かなそうなことが分かった。もう少しやり方を考えよう。3imp 関連のブログなどのメモ。(20090726 追加) http://cadr.g.hatena.ne.jp/mokehehe/?word=%2a%5b3imp%5d mokehehe さん http://sv…