MIPS寄存器使用约定

本文详细介绍了MIPS架构下不同ABI规范中通用寄存器(GPR)及浮点寄存器(FPR)的功能与使用规定,包括各寄存器的编号、助记符及其在子函数调用过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ref:https://hev.cc/805.html

GPR(MIPS O32 ABI)

寄存器编号助记符使用说明
0zero永远返回0
1at汇编器的暂时变量
2-3v0-v1子函数调用返回值
4-7a0-a3子函数调用的参数
8-15(24-25)t0-t7(t8-t9)暂时变量,子函数使用时不需要保存和恢复
16-23s0-s7子函数寄存器变量,子函数必须保存和在返回之前恢复寄存器的值
26-27k0-k1通常被中断或异常处理程序使用作为保存一些系统参数
28gp全局指针,一些运行系统维护这个指针来更方便的存取static和extern变量(caller-saved)
29sp堆栈指针
30s8/fp第9个寄存器变量,子函数可以用来做栈指针
31ra子函数返回地址

GPR(MIPS N32 ABI/N64 ABI)

寄存器编号助记符使用说明
0zero永远返回0
1at汇编器的暂时变量
2-3v0-v1子函数调用返回值
4-11a0-a7子函数调用的参数
12-15(24-25)t0-t3(t8-t9)暂时变量,子函数使用时不需要保存和恢复
16-23s0-s7子函数寄存器变量,子函数必须保存和在返回之前恢复寄存器的值
26-27k0-k1通常被中断或异常处理程序使用作为保存一些系统参数
28gp全局指针,一些运行系统维护这个指针来更方便的存取static和extern变量(caller-saved)
29sp堆栈指针
30s8/fp第9个寄存器变量,子函数可以用来做栈指针
31ra子函数返回地址

FPR(MIPS O32 ABI)

寄存器编码助记符使用说明
0,2$f0,$f2子函数调用返回值($f2在C语言中未使用)
4,6,8,10,16,18$4,$6,$8,$10,$16,$18暂时变量,子函数使用时,不需要保存和恢复
12,14$f12,$f14子函数调用的参数
20,22,24,26,28,30$20,$22,$24,$26,$28,$30子函数寄存器变量,子函数必须保存和在返回之前恢复寄存器的值

FPR(MIPS N32 ABI)

寄存器编码助记符使用说明
0,2$f0,$f2子函数调用返回值($f2在C语言中未使用)
1,3-11,(16.17)21,23,25,27,29,31$1,($16.$17)$21,$23,$25,$27,$29,$31暂时变量,子函数使用时,不需要保存和恢复
12-19$f12-$f19子函数调用的参数
20,22,24,26,28,30$20,$22,$24,$26,$28,$30子函数寄存器变量,子函数必须保存和在返回之前恢复寄存器的值

FPR(MIPS N64 ABI)

寄存器编码助记符使用说明
0,2$f0,$f2子函数调用返回值($f2在C语言中未使用)
1,3-11,20-23$1,$3-$11,$20-$23暂时变量,子函数使用时,不需要保存和恢复
12-19$f12-$f19子函数调用的参数
20,22,24,26,28,30$20,$22,$24,$26,$28,$30子函数寄存器变量,子函数必须保存和在返回之前恢复寄存器的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值