2013年12月30日月曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の5(レジスタ計算機での計算)、5.5(翻訳系)、翻訳系の概観、5.5.5(翻訳したコードの例)、問題 5.38-b.を解いてみる。

その他参考書籍

問題 5.38-b.

コード(BBEdit)

sample.scm

(define (compile exp target linkage)
  (cond ((…)
         (…))
        …
        ((open-code? exp)
         (compile-open-code exp target linkage))
        …))

(define (open-code? exp) (memq (car exp) '(= * - +)))

(define (compile-open-code exp target linkage)
  (end-with-linkage linkage
   (preserving '(env continue)
    (spread-arguments (operands exp))
    (make-instruction-sequence '(arg1 arg2) (list target)
     '((assign ,target (op ,(operator exp)) (reg arg1) (reg arg2)))))))

0 コメント:

コメントを投稿