《深入理解计算机系统》中关于寄存器保存的一个不理解的问题?

codinghuang
  • 142

在书中有这么一句话:

根据惯例,寄存器eax,edx,ecx被划分为调用者保存(caller save)寄存器。当过程P调用Q时,Q可以覆盖这些寄存器,而不会破坏P所需要的数据。

我感到有些奇怪,Q覆盖了这些调用者保存寄存器之后,那怎么恢复值?难道在覆盖调用者保存寄存器之前被压入了调用者的栈帧里面?

回复
阅读 2.5k
1 个回答

caller save的意思是保存这个值的责任在caller (P), 如果P需要则应该自己保存到栈上。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏