You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win64与Linux-x86_64调用约定下未使用寄存器是否被修改问题咨询

Win64 调用约定问题解答

问题1

微软官方的x64调用约定规则里,前四个参数对应的RCX、RDX、R8、R9都属于调用者保存寄存器,和函数实际用到多少个参数无关:

  • 被调用的函数没有义务保留这四个寄存器的原有值,内部可以随意占用修改
  • 哪怕你调用的是只需要1个参数的ExitProcess,RDX、R8、R9的值在函数返回后也会被修改,不能默认保留。如果你需要保存这几个寄存器的内容,必须在调用函数前主动压栈存储,调用返回后再手动恢复。

只有RBX、RBP、RDI、RSI、RSP以及R12~R15属于被调用者必须保留值的寄存器,函数返回后这些寄存器的值和调用前一致。


内容的提问来源于stack exchange,提问作者HelloMachine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:48:03