Quiz submission record for quiz2-2-2 at Thu Jul 1 00:22:10 2004: Your Answer for Question 1: To reduce register spilling, MIPS offers two class of registers: temporary ($t0-$t9) and saved ($s0-$s7). Temporary registers are not preserved by the called procedure on a procedure call whereas saved registers are. This way after a call to a produce, the values in saved registers are guaranteed for future use by the caller whereas those in temporary ones are not. This avoids saving and restoring a register whose value is never used and thus reduces register spilling. Your Answer for Question 2: A programming language that forbids the use of recursion does not need to allocate frames on a stack. In a nonrecursive language, each procedure’s frame maybe statically allocated since only one invocation of a procedure can be active at a time. I did not take CS61a and learn Scheme, so I’m not sure how recursion works in that language. Your Answer for Question 3: In A6, it says that the before a called routine starts running, the frame pointer must be established by adding the stack frame's size minus four to $sp and storing the sum in register $fp. I guess I'm confused on what exactly $fp is supposed to point to. Based on the reading, $fp points to the first word of the satck frame and is used to easily access values in the frame. Is the adding of the stack frame's size minus four to $sp just balancing out the adjusted stack pointer (which is adjusted to save values of registers needed later by the caller)? Other than that, the other confusing part was figuring out the difference between temporary and saved registers and what exactly it means to "preserve" the value. However, on the second read through of the section, more concepts seem to make sense. Your unique submission ID is quiz2-2-2-cs61c-ei-1088666530-1692.