開発環境
- 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 コメント:
コメントを投稿