汇编语言过程中的寄存器保存、栈操作与激活记录
在汇编语言编程中,寄存器保存、栈操作以及激活记录是非常重要的概念,它们对于程序的正确性和性能有着关键的影响。
1. 寄存器保存
在汇编语言中,寄存器保存有两种方式:调用者保存和被调用者保存。
- 被调用者保存的优势
- 空间优势 :如果被调用者(过程)保存所有受影响的寄存器,那么只有一份
push和pop指令,即过程中包含的那些。例如,若某个过程需要保存寄存器,只需在该过程内部进行一次保存和恢复操作。 - 可维护性优势 :若由调用者保存寄存器的值,程序需要在每个调用周围都有一组保存指令。这不仅会使程序变长,而且更难维护。因为在每次过程调用时,要记住保存和恢复哪些寄存器并非易事。
- 空间优势 :如果被调用者(过程)保存所有受影响的寄存器,那么只有一份
- 被调用者保存的劣势
子程序可能会不必要地保存一些寄存器。例如,print40Spaces过程改变了RBX,但不保存RBX也不会影响程序的操作。如果由调用者保存寄存器,就不必保存那些它不关心的寄存器。 - 调用者保存的问题
程序可能会随时间变化。可能会修改调用代码或过程以使用额外的寄存器,这样的更改可能会改变必须保存的寄存器集合。更糟糕的是,如果修改在子程序本
超级会员免费看
订阅专栏 解锁全文
1626

被折叠的 条评论
为什么被折叠?



