Exercise 5.31. In evaluating a procedure application, the explicit-control evaluator always saves and restores the env register around the evaluation of the operator, saves and restores env around the evaluation of each operand (except the final one), saves and restores argl around the evaluation of each operand, and saves and restores proc around the evaluation of the operand sequence. For each of the following combinations, say which of these save and restore operations are superfluous and thus could be eliminated by the compiler's preserving mechanism: (f 'x 'y) ((f) 'x 'y) (f (g 'x) y) (f (g 'x) 'y) ———————————————————————————————————————————————————————————————————————— (f 'x 'y) all of them are superfluous. ((f) 'x 'y) env needs to be saved around the evaluation of (f), but not of the arguments. argl and proc do not need to be saved. (f (g 'x) y) env, proc, and argl need to be saved when the first argument is evaluated. The rest are superfluous. (f (g 'x) 'y) In this case the env will not be used by the last argument, so it does not need to be saved before (g 'x) is evaluated. proc and argl still need to be saved before (g 'x) is evaluated.