如何使用临时寄存器-是返回后保留的值



我正在使用MARS模拟器在MIPS汇编中编写一个程序。我使用jal进行函数调用,然后在调用结束时使用jr $ra返回到程序中的原点。

我感到困惑的是,我在函数中使用的$t寄存器在返回主程序后仍然有值。

我是否应该在返回之前将这些寄存器清零,以便将来使用临时寄存器的函数可以从头开始?我是不是遗漏了什么?

我感到困惑的是,我在函数中使用的$t寄存器在返回主程序后仍然有值。

是的,就像所有其他寄存器都有相同的值一样(没有什么特别的事情发生,只是因为你从函数返回(。

我是否应该在返回之前将这些寄存器清零,以便将来使用临时寄存器的函数可以从头开始?我是不是遗漏了什么?

无需将它们归零,它们就在那里供您使用!您可以随意使用临时寄存器,只需记住,如果您调用另一个函数(或您自己的函数!(,它们也会做同样的事情,因此您不能依赖于函数调用之间的值。相比之下,如果修改$s寄存器,则需要保存和恢复这些寄存器,但您可以(通常(依赖其他函数为您做同样的事情。这是呼叫约定的一部分。

相关内容

最新更新