Microsoft x86-64 调用约定中需要保留哪些寄存器



我似乎找不到x86-64 Microsoft调用约定中需要保留哪些寄存器。我知道前 4 个参数在 rcx/rdx/r8/r9 中(假设非浮点数)。但是我还需要保留哪些其他寄存器/如果有的话?

例如,在CDECL中,我必须保留EBX/EDI/ESI。x86-64 中是否有这样的概念,或者我可以简单地使用任何可用的寄存器吗?

x86-64 Microsoft (Windows x64) 是与 x86-64 System V ABI 不同的调用约定:为什么 Windows64 使用的调用约定与 x86-64 上的所有其他操作系统不同?

这个答案是由哈罗德作为评论提供的,但将其移至此处,以便我可以将其标记为答案:

x64 调用约定 - 注册用法

最新更新