2013年11月13日水曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の5(レジスタ計算機での計算)、5.1(レジスタ計算機の設計)、5.1.4(再帰を実装するためのスタックの使用)、二重再帰、問題 5.6を解いてみる。

その他参考書籍

問題 5.6

Fibonacci計算機の制御列。

(controller
   (assign continue (label fib-done))
 fib-loop
   (test (op <) (reg n) (const 2))
   (branch (label immediate-answer))
   (save continue)
   (assign continue (label afterfib--1))
   (save n)
   (assign n (op -) (reg n) (const 1))
   (goto (label fib-loop))
 afterfib-n-1
   ;; 除去する余分なrestore
   ;; (restore continue)
   (assign n (op -) (reg n) (const 2))
   ;; 除去する余分なsave
   ;; (save continue)
   (assign continue (label (afterfib-n-2)))
   (save val)
   (goto (label fib-loop))
 afterfib-n-2
   (assign n (reg val))
   (restore val)
   (assign val
           (op +) (reg val) (reg n))
 immediate-answer
   (assign val (reg n))
   (goto (reg continue))
 fib-done)

0 コメント:

コメントを投稿