Quiz submission record for quiz2-2-2 at Thu Jul 1 10:52:43 2004: Your Answer for Question 1: One convention that reduces register spilling is designating 10 temporary registers ($to-$t9) and 8 saved registers ($s0-$s7). This way, the called procedure need only save and restore the $si registers to memory before and after it is called. In the example in the book, the leaf_example function saved and restored $t0 and $t1 before and after the function call, but this is unnecessary according to the convention - only the $si registers need to be saved. Your Answer for Question 2: Every procedure call in any programming language creates a stack frame or activation for itself when it is invoked. However, in a language without recursion, there is no need to allocate additional frames for itself on the stack because it cannot call itself. Thus, any procedure's stack frame need only be invoked once and can be active in the duration of the procedure. In this non-recursive language, we almost certainly eliminate the problem of stack-overflow, when then stack grows too big due to recursion that has gone too deep, or infinite recursion. Your Answer for Question 3: I'm a bit confused about $sp and $fp. It seems like the stack pointer can move within a procedure call and the frame pointer remains static, so that we can quickly reference local variables relative to the frame pointer, so does this mean that as the stack pointer changes, it's up to the programmer to remember where the last local variable was stored relative to $fp even if the variable were stored relative to the address of the dynamic $sp? Your unique submission ID is quiz2-2-2-cs61c-ck-1088704363-1493.