2010-02-01から1ヶ月間の記事一覧

profile 

ためしに fib のプロファイルをとってみた。コンシングが多すぎる。 fib20 で、わたしのsecd マシンでは 8179872 bytes。SBCL では0。もちろん速度もsbcl版よりわたしのがずっと遅い。 ようするに、わたしのコンパイラもどきが処理系の cons を呼びまくって…

命令

OP S E D NIL 更新 なし なし LDC 更新 なし なし binary op 更新 なし なし CONS 更新 なし なし SEL なし なし 更新 JOIN なし なし 更新 LD 更新 locate なし LDF 更新 参照 なし AP 更新 更新 更新 RTN 更新 更新 更新

Memo

Y-combinator の最大の実利は、letrec を実装していなくてもフィボナッチ数列が計算できることだ。たぶん。 VSECD> (run '(((lambda (f) ((lambda (g) (f (lambda (arg) ((g g) arg)))) (lambda (g) (f (lambda (arg) ((g g) arg)))))) (lambda (f) (lambda …

メモ

OP 説明 捕捉 状態 NIL push a nil done LD 環境から値を取得 done LDC スタックに定数をプッシュ done LDF 関数をロード done AP done RTN done SEL 分岐。 done JOIN done RAP done DUM done CAR built in unary op. リスト操作 done +,-,* built in binar…

Toy VM(8)

ビッグピクチャーを書こう。今やっていることを見失わないように。 ( SECD マシン+コンパイラ) --> (命令列だけベクターにした SECD マシン+コンパイラ)--> (スタックもベクターにした SECD マシン+コンパイラ) --> (gauche VM の一部だけ動くようなマシン…

Toy VM(7)

ようやく分かってきた。 「継続」というのは、結局、様々な本や解説で書かれているとおり、これから行う計算でしかないんだ。Gauche の VM。 SECD マシン。 扱いは違うように見えるけど。SECD マシンは、命令列もスタックもリストだった。このことが、少し比…