新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

コンパイラの勉強会に向けて

コンパイラの勉強会(じゃないかもしれないけど、本人はそう思っている)にむけて駄文を重ねる。

CPS

CPS は「Compiling with Continuations」という本に詳しい。Kindle の本もある。これが、1992 年の本。ML を使っている。なんで ML なんだ~と一瞬思うが、後になってい見ると Appel の (Apple じゃないよ)先見性がわかる。英語を読むのは大変なので、http://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/scheme_compiler/gen/resume/all.pdfを読むとよい。この通りにやると Schemeコンパイラができる。Lisp のいいところは構文解析がほぼいらないことね。

実際に作ってみた感想は、

  • コンパイラを作ることはそう難しくない
  • 最後にマシンコードに落とすところ(とくにスピル)はめんどくさい
  • VM に落としてしまえスピルはごまかせる
  • 浮動小数点を扱おうと思うと
  • Lisp での開発でなくてもよい(きっと Java とか使った方が簡単)

SSA

google の論文検索でさがせる。古い論文は再度そのタイトルで google で探すと(ついでに filetype:pdf とかすると)みつかったりする。わざわざどっかの研究機関の有料サービスを使うまでもない。

年段的にはやはり 1990 年代の初め位の研究が多い。つまり、CPSSSA は 20年以上前の技術。重要だけど、もっと新しい技術を取り入れた方がいいのではないかという気になる。この時点で 25年遅れの私。

行番号などの付加情報

実際に Scheme でつくったが、多くの人は(わたしもそうだったが)コンパイラを作ることだけに焦点を絞っているので、その後でそのコンパイラを使って開発するところまでイメージしていない。だから、デバッグ機能がごっそりぬける。これは結構いたい。あとで付け加えることが困難。最初からこの辺の寄稿を考えながら実装するのがベター。

A正規形:CPS は否定された?

https://users.soe.ucsc.edu/~cormac/papers/pldi93.pdf を読むと CPS は否定されているようにおもった。理解していない。A正規形のコンパイラを作る必要があると感じた。

K 正規形というのもあるらしい。
A正規形とかCPSとか - sumiiの日記

ここまで到達すると 20 年遅れまで挽回する予定。

OCaml型推論

よくわからないのだが、勉強中。「プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで」がよくできている。絶版ぽい。Kindle 版がある。他の本はダメなのがある。出版社の問題。技術評論社はなんだかんだいってよいということか?

OCaml 型推論ができる。浮動小数点を扱おうとすると必須の機能。ML の系譜らしい。Appel の最新コンパイラ構築技法もなぜか ML 。Appel はここまで見通してたんだろうね。

Lisp が最強とか思って(思考停止していた)たけど、型推論で新たな扉が開いた感じがする。勉強しようっと。コンパイラも作る。住井先生という人の資料等が刺激になる。


ここまで到達すると 10 年遅れまで挽回する予定。