Quiz submission record for quiz2-2-2 at Thu Jul 1 08:39:50 2004: Your Answer for Question 1: To stop register spilling with procedure calls, a stack is used called $sp. When a procedure is called, then $sp makes room for the callee's variables that will be overwritten in the new function, and stores them. When the function being called is finished, it is popped off the stack. Ways in which global variables stay static, are that there is another register called $gp. Your Answer for Question 2: If recursion were removed, we would still need some type of looping mechanism in order to reduce repetitive lines of code. Scheme had to use recursion because unlike C, it did not have for loops. Loops in MIPs are done with the command j and slt. With loops, it would eliminate the need to store and load local variables of the callee function after its been called and returned. In scheme, we saw infinite loops due to recursion, which could be prevented in a language without recursion. Your Answer for Question 3: At first I found the $sp stack a bit confusing. But after reading it over a dozen times, I grasped it completely. What made it difficult to see was that I thought in a recursive function, the $sp which was storing the variables, would be overwritten. But now I understand that $sp is a pointer, which keeps pointing further down the stack for each recursive call. Your unique submission ID is quiz2-2-2-cs61c-av-1088696390-2486.