MIPS Registers
Register
Number
Alternative
Name
Description
0 $zero Always the value 0.
1 $at assembler temporary, reserved by the assembler.
2 $v0 (values) from expression evaluation and function results.
3 $v1
4 $a0 $a0 - $a3
(arguments) First four parameters for subroutine.
Not preserved across procedure calls
5 $a1
6 $a2
7 $a3
8 $t0 $t0 - $t7
(temporaries) Caller saved if needed. Subroutines can use w/out saving.
Not preserved across procedure calls.
9 $t1
10 $t2
11 $t3
12 $t4
13 $t5
14 $t6
15 $t7
16 $s0 $s0 - $s7
(saved values) - Callee saved.
A subroutine using one of these must save original and restore it before exiting.
Preserved across procedure calls.
17 $s1
18 $s2
19 $s3
20 $s4
21 $s5
22 $s6
23 $s7
24 $t8 $t8 - $t9
(temporaries) Similar to $t0 - $t7 above.
25 $t9
26 $k0 $k0 - $k1
reserved for use by the interrupt/trap handler.
27 $k1
28 $gp global pointer. Points to middle of 64K block of memory in the static data segment.
29 $sp stack pointer. Points to the top of the stack.
30 $fp or $s8 saved value or frame pointer. Preserved across procedure calls.
31 $ra return address