为什么我们将s寄存器中的值存储到堆栈而不是移动到函数中的新寄存器?

时间:2015-10-18 16:20:57

标签: stack mips cpu-registers

据我所知,在函数中使用's'寄存器时,它们不应该被修改,应该堆叠存储。 将s寄存器的值移动到临时寄存器并使用它并将其返回是不对的?如果是这样,为什么?

1 个答案:

答案 0 :(得分:0)

没错。但是,存在一些限制,有时您必须将寄存器的内容存储在内存中。

如果您的函数没有调用任何其他函数,那么您可以将s寄存器保存在临时寄存器中,前提是您的例程不需要使用这些临时寄存器。如果您需要使用这些临时寄存器,那么您最终将使用内存来备份原始内容。

另一方面,如果您的例程调用另一个例程,则不能假定将保留临时寄存器(约定规定要保留s个寄存器)。因此,如果你调用另一个例程,你可能需要在内存中保存s个寄存器(例如在堆栈中)。