【发布时间】:2014-06-19 05:44:59
【问题描述】:
是否需要在调用汇编函数之前将任何 XMM 寄存器保存/推送到堆栈? 因为我正在使用 64 位开发的发布模式(使用 AVX2)观察我的代码中的崩溃问题。在调试模式下它工作正常。我尝试保存 XMM8 寄存器的内容并在函数调用结束时恢复它,然后它工作正常。
有什么想法或参考吗?
【问题讨论】:
-
是的,但是哪种调用约定? Win64 还是 SystemV? xmm8 在两者中都是调用者保存的,但我会给你一个不同的参考。
-
我正在使用标准调用约定。
-
嗯,这并不是 64 位代码的真正选项之一。您可以继续使用它,但如果您调用任何外部函数,它将无法正常工作。
-
@Falcon,哈罗德真的在问你使用的是哪个操作系统。在 x86 上,Windows 和其他所有人的调用约定不同。我猜你是在 Windows 上;)