Exercise 5.6. Ben Bitdiddle observes that the Fibonacci machine’s controller sequence has an extra save and an extra restore, which can be removed to make a faster machine. Where are these instructions?
我们可以在 afterfib-n-1 这个地方找到
afterfib-n-1 ; upon return, val contains Fib(n - 1)
(restore n)
(restore continue)
;; set up to compute Fib(n - 2)
(assign n (op -) (reg n) (const 2))
(save continue)
(assign continue (label afterfib-n-2))
(save val) ; save Fib(n - 1)
(goto (label fib-loop))
这里的 (restore continue) 和 (save continue) 实际多余了。因为 restore 之后并没有使用 continue 而马上又把 continue 放到了 stack 上。