2008-09-14から1日間の記事一覧

Scheme Compiler の勉強 (9) - define-syntax

そもそも scheme が良くわかっていないので勉強。 define-macro と関数定義と。http://practical-scheme.net/gauche/man/gauche-refj_24.html#SEC30 より。 注: いくつかのSchemeの実装ではformalsの構文を拡張して、 CommonLispのように省略可能引数やキー…

コンパイラー

A「なんだ、コンパイラなんて、所詮誰かが決めたルールの中で悪あがきするだけじゃあないか」 B「俳句に感動したことはないのかい?」

Scheme Compiler の勉強 (8) - define-primitive マクロ

元のだと、 define-primitive なるマクロを定義している。ここが LLVM 用だともう変えざるを得ない。しょうがないのでいくつか定義しながらマクロも都合がいいように変更していこう。ここの大変さが、http://llvm.org/docs/FAQ.html#langirgen にあった、 "a…

Scheme Compiler の勉強 (7) - LLVM と PowerPC の返り値

ちょっと整理。今のところ、コンパイラーといっても与えられた即値に対応する LLVM アセンブラを生成して、それをテスト用の runtime.c の main から呼び出しているだけ。primitive の定義も、手続きを定義するというより個々のに対応するアセンブラを出力す…

Scheme Compiler の勉強 (6) - レジスタ %eax

primitive を定義するところで少し知識不足でつっかえている。 "Compilers: Backend to Frontend and Back to Front Again" の実装では、レジスタ %eax を特別扱いとしている。 これって特別なのかと思ったら、http://ja.wikipedia.org/wiki/呼出規約 を見る…