MIPS寄存器使用约定

编程入门 行业动态 更新时间:2024-10-09 16:31:53

MIPS<a href=https://www.elefans.com/category/jswz/34/1768029.html style=寄存器使用约定"/>

MIPS寄存器使用约定

ref:.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子函数寄存器变量,子函数必须保存和在返回之前恢复寄存器的值

更多推荐

MIPS寄存器使用约定

本文发布于:2024-02-07 08:27:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755018.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:寄存器   MIPS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!