0
我已经了解到,按照惯例,当在函数中使用's'寄存器时,它们不应该被修改并且应该被堆叠存储。 将s寄存器的值移到临时寄存器并使用并返回它是错误的吗?如果是这样,为什么?为什么我们将s寄存器中的值存入堆栈而不是在函数中移动到新的寄存器?
我已经了解到,按照惯例,当在函数中使用's'寄存器时,它们不应该被修改并且应该被堆叠存储。 将s寄存器的值移到临时寄存器并使用并返回它是错误的吗?如果是这样,为什么?为什么我们将s寄存器中的值存入堆栈而不是在函数中移动到新的寄存器?
这没有错。但是,存在一些限制,有时您必须将寄存器的内容存储在内存中。
如果您的函数没有调用任何其他函数,那么您可以将s
寄存器保存在临时寄存器中,前提是您的例程不需要使用这些临时寄存器。如果您需要使用这些临时寄存器,那么您将最终使用内存来备份原始内容。另一方面,如果您的例程调用另一个例程,则不能假定临时寄存器将被保留(约定规定s
寄存器将被保留)。因此,如果您调用另一个例程,则可能需要将s
寄存器保存在内存中(例如在堆栈中)。