EE Registers
General-Purpose Registers (GPRs)
As per MIPS tradition, the EE has 32 GPRs. Notably, they are all 128-bit, though the full 128 bits are only used in certain instructions.
| Name | Convention | 
|---|---|
| zero | Hardwired to 0, writes are ignored | 
| at | Temporary register used for pseudo-instructions | 
| v0-v1 | Return register, holds values returned by functions | 
| a0-a3 | Argument registers, holds first four parameters passed to a function | 
| t0-t7 | Temporary registers. t0-t3 may also be used as additional argument registers | 
| s0-s7 | Saved registers. Functions must save and restore these before using them | 
| t8-t9 | Temporary registers | 
| k0-k1 | Reserved for use by kernels | 
| gp | Global pointer | 
| sp | Stack pointer | 
| fp | Frame pointer | 
| ra | Return address. Used by JAL and (usually) JALR to store the address to return to after a function | 
Aside from zero, all GPRs may be freely accessed if convention rules are respected.
Special Registers
| Name | Purpose | 
|---|---|
| pc | Program counter, address of currently-executing instruction (32-bit) | 
| hi/lo | Stores multiplication and division results (64-bit) | 
| hi1/lo1 | Used by MULT1/DIV1 type instructions, same as above (64-bit) | 
| sa | Shift amount used by QFSRV instruction |