SICP 読み (287) 5.4 積極制御評価器
早起きしてデバッガを試してみたら動かない。これはこれで原因を調べないと駄目だな。
問題 5.24 の続き
exp を push していないのが原因だった模様。ev-cond-なんたらを以下に。
ev-cond (assign exp (op cond-clauses) (reg exp)) ev-cond-loop (test (op null?) (reg exp)) (branch (label ev-cond-false)) (assign unev (op cdr) (reg exp)) (assign exp (op car) (reg exp)) (test (op cond-else-clause?) (reg exp)) (branch (label ev-cond-consequent)) (save exp) (save unev) (save env) (save continue) (assign continue (label ev-cond-decide)) (assign exp (op cond-predicate) (reg exp)) (goto (label eval-dispatch)) ev-cond-decide (restore continue) (restore env) (restore unev) (restore exp) (test (op true?) (reg val)) (branch (label ev-cond-consequent)) (assign exp (reg unev)) (goto (label ev-cond-loop)) ev-cond-consequent (save continue) (assign unev (op cond-actions) (reg exp)) (goto (label ev-sequence)) ev-cond-false (assign val (const false)) (goto (reg continue))
ev-cond-false も動作確認は未実施。一応の動作確認はできてますが ...
# 別途確認入れ次第、追記を予定しとります。