在MIPS中使用不同的寄存器

时间:2018-01-29 20:01:43

标签: assembly mips cpu-registers

我一直在使用一些寄存器(特别是对于$ t0和$ s0),这似乎没什么大问题,可能是因为我正在研究一些非常简单的程序。

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

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

1 个答案:

答案 0 :(得分:2)

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

并且许多选择同样有效,因为通用寄存器是真正通用的;堆栈指针只是一个软件约定;没有隐含地使用它的push指令。使用$t0代替$t3作为临时用户并不是更快,更好或其他任何事情。

此规则至少有一个例外:jal隐式地将返回地址写入$31(链接寄存器)。 ()。使用5位编码目标寄存器将使这5位远离直接分支目标。

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