[1] One might argue that we don't need to save the old n; after we decrement it and solve the subproblem, we could simply increment it to recover the old value. Although this strategy works for factorial, it cannot work in general, since the old value of a register cannot always be computed from the new one.
[2] In section 5.3 we will see how to implement a stack in terms of more primitive operations.
5.1.4 Using a Stack to Implement Recursion