繁体   English   中英

在MIPS中使用不同的寄存器

[英]Using different registers in MIPS

我一直在交替使用某些寄存器(尤其是对于$ t0和$ s0),这似乎没什么大问题,可能是因为我目前正在处理一些非常简单的程序。

在MIPS中是否有使用不同寄存器的规则?

什么时候使用$ t0- $ t9或$ s0- $ s7或$ a0- $ a3或$ v0- $ v1?

MIPS是有意设计的,因此没有“特殊”寄存器。 只要您同意代码必须与之交互的任何其他软件功能(调用约定/ ABI),您就可以执行最有效的操作。

而且,有许多选择同样有效,因为通用寄存器是真正的通用寄存器。 堆栈指针只是一种软件约定。 没有push指令隐式使用它。 使用$t0代替$t3临时不是更快或更佳。


该规则至少有一个例外: jal将返回地址隐式写入$31 (链接寄存器)。 http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html )。 使用5位编码目标寄存器将使这5位脱离直接分支目标。

当然,平台的调用约定是围绕指令集中的任何隐式寄存器用法设计的,因此,当然,被调用的函数期望它们的返回地址为$31 ,按照惯例,在MIPS上,其返回地址为$ra (返回地址)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM