開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Scheme (プログラミング言語)
- MIT/GNU Scheme (処理系)
計算機プログラムの構造と解釈(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 コメント:
コメントを投稿