GPR (MIPS O32 ABI)
寄存器编号 | 助记符 | 使用说明 |
0 | zero | 永远返回值0 |
1 | at | 汇编器的暂时变量 |
2-3 | v0-v1 | 子函数调用返回值 |
4-7 | a0-a3 | 子函数调用的参数 |
8-15(24-25) | t0-t7(t8-t9) | 暂时变量,子函数使用时不需要保存和恢复 |
16-23 | s0-s7 | 子函数寄存器变量,子函数必需保存和在返回之前恢复寄存器的值 |
26-27 | k0-k1 | 通常被中断或异常处理程序使用作为保存一些系统参数 |
28 | gp | 全局指针,一些运行系统维护这个指针来更方便的存取“static”和“extern”变量 (caller-saved) |
29 | sp | 堆栈指针 |
30 | s8/fp | 第9个寄存器变量,子函数可以用来作桢指针 |
31 | ra | 子函数返回地址 |
GPR (MIPS N32/N64 ABI)
寄存器编号 | 助记符 | 使用说明 |
0 | zero | 永远返回值0 |
1 | at | 汇编器的暂时变量 |
2-3 | v0-v1 | 子函数调用返回值 |
4-11 | a0-a7 | 子函数调用的参数 |
12-15(24-25) | t0-t3(t8-t9) | 暂时变量,子函数使用时不需要保存和恢复 |
16-23 | s0-s7 | 子函数寄存器变量,子函数必需保存和在返回之前恢复寄存器的值 |
26-27 | k0-k1 | 通常被中断或异常处理程序使用作为保存一些系统参数 |
28 | gp | 全局指针,一些运行系统维护这个指针来更方便的存取“static”和“extern”变量 (callee-saved) |
29 | sp | 堆栈指针 |
30 | s8/fp | 第9个寄存器变量,子函数可以用来作桢指针 |
31 | ra | 子函数返回地址 |
FPR (MIPS O32 ABI)
寄存器编号 | 助记符 | 使用说明 |
0, 2 | $f0, $f2 | 子函数调用返回值, $f2 C语言中未使用 |
4, 6, 8, 10, 16, 18 | $f4, $f6, $f8, $f10, $16, $f18 | 暂时变量,子函数使用时不需要保存和恢复 |
12, 14 | $f12, $f14 | 子函数调用的参数 |
20, 22, 24, 26, 28, 30 | $f20, $f22, $f24, $f26, $f28, $f30 | 子函数寄存器变量,子函数必需保存和在返回之前恢复寄存器的值 |
FPR (MIPS N32 ABI)
寄存器编号 | 助记符 | 使用说明 |
0, 2 | $f0, $f2 | 子函数调用返回值, $f2 C语言中未使用 |
1, 3-11, (16, 18) 21, 23, 25, 27, 29, 31 | $f1, $f3-$f11, ($16, $f18), $f21, $f23, $f25, $f27, $f29, $f31 | 暂时变量,子函数使用时不需要保存和恢复 |
12-19 | $f12-$f19 | 子函数调用的参数 |
20, 22, 24, 26, 28, 30 | $f20, $f22, $f24, $f26, $f28, $f30 | 子函数寄存器变量,子函数必需保存和在返回之前恢复寄存器的值 |
FPR (MIPS N64 ABI)
寄存器编号 | 助记符 | 使用说明 |
0, 2 | $f0, $f2 | 子函数调用返回值, $f2 C语言中未使用 |
1, 3-11, 20-23 | $f1, $f3-$f11, $f20-$f23 | 暂时变量,子函数使用时不需要保存和恢复 |
12-19 | $f12-$f19 | 子函数调用的参数 |
24, 25, 26, 27, 28, 29, 30, 31 | $f24, $f25, $f26, $f27, $f28, $f29, $f30, $f31 | 子函数寄存器变量,子函数必需保存和在返回之前恢复寄存器的值 |
Over!