您的位置:首页 > 其它

MIPS汇编:MIPS32中通用寄存器的使用约定

2017-06-12 14:19 253 查看
这段时间一直在学习MIPS32汇编。

MIPS32并没有强制指定通用寄存器的使用规则(除了0号寄存器始终为0,比较特殊),但是在实际使用中大家都会遵循一系列的约定。这里以表格的方式予以展示,当作是做个笔记,方便自己以后回看。

名称寄存器号用途调用时是否保存
$zero0常数0不适用
$v0~$v12~3计算结果和表达式求值
$a0~$a34~7参数
$t0~$t78~15临时变量
$s0~$s716~23保存的寄存器
$t8~$t924~25更多临时变量
$gp28全局指针
$sp29栈指针
$fp30帧指针
$ra31返回地址
摘自《计算机组成与设计:硬件/软件接口》

寄存器名字约定命名用途
$0zero总是为0
$1at留作汇编器生成一些合成指令
$2、$3v0、v1用来存放子程序返回值
$4~$7a0~a3调用子程序时,使用这4个寄存器传输前4个非浮点参数
$8~$15t0~t7临时寄存器,子程序使用时可以不用存储和恢复
$16~$23s0~s7子程序寄存器变量,改变这些寄存器值的子程序必须存储旧的值并在退出前恢复,对调用程序来说值不变
$24、$2
4000
5
t8、t9临时寄存器,子程序使用时可以不用存储和恢复
$26、$27k0、k1由异常处理程序使用
$28gp全局指针
$29sp堆栈指针
$30fp子程序可以用来作堆栈帧指针
$31ra存放子程序返回地址
摘自《自己动手写CPU》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编 寄存器 硬件 MIPS