Quiz submission record for quiz2-2-2 at Thu Jul 1 10:26:57 2004: Your Answer for Question 1: In procedure calls, first, one can avoid spilling by employing the registers $a0-$a3 and $v0-$v1, which are parameters and return values. If he needs more, he can use the $sp, the stack pointer, to store the original register values on stack. He should only store the number of registers that he will have to use. Your Answer for Question 2: The problem with recursion is that it constantly builds on top of the previous frame, increasing the number of of stacks, possibly to an extent that memory will eventually run out (memory overflow in Scheme). This is not likely to happen in our new language. If we forbid the use of recursion and employ only iteration, we would be eliminating the tedium of having manipulate the stack frames--keeping track of the stack pointer, storing all previous parameters, return values, and other registers on stack, and moving the stack pointer for the next function call, and moving everything back when the function is done. This will also reduce spilling greatly. Your Answer for Question 3: It's interesting to see how it's possible to make complicated procedure calls with limited number of registers. And at the same time, it's depressing to see how complicated each function call is in MIPS. Your unique submission ID is quiz2-2-2-cs61c-ew-1088702817-2402.