Answer from cs61c-ei (Jing Chen 16669246) 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.