プログラミング再入門

プログラミングをもう一度ちゃんと勉強する読書ノート

2015-04-01から1ヶ月間の記事一覧

SICP 5.5.7 Interfacing Compiled Code to the Evaluator / Exercise 5.52

ノート Exercise 5.52 C言語でShemeコンパイラを作れと言っているのではなく、この章のコンパイラをCのプログラムを吐く様に改造せよと言っている。 ここでもswiftを使う事にする。直ぐに気づく問題点は レジスタマシンやアセンブラのレベルに変換する訳では…

SICP 5.5.7 Interfacing Compiled Code to the Evaluator / Exercise 5.51

ノート Exercise 5.51 5.2ではレジスタマシン・シミュレータをSchemeで実装したが、これをC言語で実装するなら5.4のExplicit Evaluatorは基本的には何も変換する必要はない筈なのできっと問題の意図とは異なる。そうすると『レジスタマシン相当の実行環境をC…

SICP 5.5.7 Interfacing Compiled Code to the Evaluator

ついに最終節 ノート REPLからコンパイラを呼び出して、REPLの環境で実行する。 explicit controller machineはインタープリタだが、コードをコンパイルする組み込みの手続きを用意する。変数として格納されている手続きをオペレータとしてprocに入れた後に…

SICP 5.5.2 Compiling Expressions

ノート Compiling linkage code compile-linkageは各式を命令に変換した後、次の命令への繋ぎを生成する。 引数が'returnの時はレジスタcontinueの内容にジャンプ、'nextであれば何もしない、その他であれば引数をラベルとみなしてそのラベルにジャンプする…

SICP 5.5 Compilation

ノート 前節のインタープリタのプログラムは機械語のプログラムと捉えることができる。 ソースプログラムと機械語とを橋渡しする方法には二つある。 一つはインタープリタ。インタープリタの基本的な命令は機械語のサブルーチンとして実現されていて、ソース…

SICP 5.4.4 Running the Evaluator

ノート ここに書いてあるドライバーループは既に実装として使っている。しかもExcersese 5.25では少し変更もしている。 Exercise 5.25の結果でもちゃんと例は動作する。 (define (append x y) (if (null? x) y (cons (car x) (append (cdr x) y)))) ;;; EC-E…