0
我已經瞭解到,按照慣例,當在函數中使用's'寄存器時,它們不應該被修改並且應該被堆疊存儲。 將s寄存器的值移到臨時寄存器並使用並返回它是錯誤的嗎?如果是這樣,爲什麼?爲什麼我們將s寄存器中的值存入堆棧而不是在函數中移動到新的寄存器?
我已經瞭解到,按照慣例,當在函數中使用's'寄存器時,它們不應該被修改並且應該被堆疊存儲。 將s寄存器的值移到臨時寄存器並使用並返回它是錯誤的嗎?如果是這樣,爲什麼?爲什麼我們將s寄存器中的值存入堆棧而不是在函數中移動到新的寄存器?
這沒有錯。但是,存在一些限制,有時您必須將寄存器的內容存儲在內存中。
如果您的函數沒有調用任何其他函數,那麼您可以將s
寄存器保存在臨時寄存器中,前提是您的例程不需要使用這些臨時寄存器。如果您需要使用這些臨時寄存器,那麼您將最終使用內存來備份原始內容。另一方面,如果您的例程調用另一個例程,則不能假定臨時寄存器將被保留(約定規定s
寄存器將被保留)。因此,如果您調用另一個例程,則可能需要將s
寄存器保存在內存中(例如在堆棧中)。