SICP 全笔记

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 上。