MIPS
二、MIPS操作数之32个寄存器
寄存器名字 | 寄存器编号 | 寄存器功能 |
---|---|---|
$zero |
$0 |
恒等于零 |
$at |
$1 |
被汇编器保留,用于处理大的常数 |
$v0 – $v1 |
$2-$3 |
存放函数返回值 |
$a0 – $a3 |
$4-$7 |
传递函数参数 |
$t0 – $t7 |
$8-$15 |
存放临时变量 |
$s0 – $s7 |
$16-$23 |
存放需要保存的临时值 |
$t8 – $t9 |
$24-$25 |
额外的存放临时变量 |
$k0 – $k1 |
$26-$27 |
用于操作系统内核 |
$gp |
$28 |
指向全局变量的指针 |
$sp |
$29 |
指向栈顶的指针 |
$fp |
$30 |
指向栈帧[^footnote2]的指针 |
$ra |
$31 |
返回地址,用于函数调用 |
三、MIPS汇编语言指令类型及寻址方式


不调用其他过程的过程称为叶过程(leaf procedure)
编译一个不调用其他过程的C过程
思考步骤:
- 保存调用过程之后,还需要使用的寄存器
$t0~$t7
、$a0~$a1
、$v0~$v1
- 保存用到的参数(
$a0~$a1
) - 保存返回地址
$ra
1 |
|
MIPS:
1 |
|
编译一个递归C过程
1 |
|
MIPS:
1 |
|
未完待续……
参考资料
[1]https://blog.csdn.net/qq_32146369/article/details/79006728
MIPS
https://wuhlan3.github.io/2020/10/16/MIPS/