I grateful to the many students at UW who used SPIM in their courses and happily found bugs in a professor's code. In particular, the students in CS536, Spring 1990, painfully found the last few bugs in an ``already-debugged'' simulator. I am grateful for their patience and persistence. Alan Yuen-wui Siow wrote the X-window interface.
For a description of the real machines, see Gerry Kane and Joe Heinrich, MIPS RISC Architecture, Prentice Hall, 1992.
These instructions are real---not pseudo---MIPS instructions. SPIM translates assembler pseudoinstructions to 1--3 MIPS instructions before storing the program in memory. Each source instruction appears as a comment on the first instruction to which it is translated.
In earlier version of SPIM, $sp was documented as pointing at the first free word on the stack (not the last word of the stack frame). Recent MIPS documents have made it clear that this was an error. Both conventions work equally well, but we choose to follow the real system.
The MIPS compiler does not use a frame pointer, so this register is used as callee-saved register $s8.