我似乎找不到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 调用约定 - 注册用法