1

是否需要在汇编函数调用之前将任何 XMM 寄存器保存/推送到堆栈?因为我正在使用 64 位开发的发布模式(使用 AVX2)观察我的代码中的崩溃问题。在调试模式下它工作正常。我尝试保存 XMM8 寄存器的内容并在函数调用结束时恢复它,然后它工作正常。

有什么想法或参考吗?

4

1 回答 1

4

是的,在 Microsoft Windows 上,您需要保留 XMM6-XMM15 寄存器。请参阅http://msdn.microsoft.com/en-us/library/7kcdt6fy.aspx - 这包括 xmm8,因此要么保留它们,要么不在您的函数中使用它们。

但是在 Linux 上,这些是临时寄存器,因此不必保留。请参阅http://www.x86-64.org/documentation/abi.pdf第 21 页。

于 2015-06-17T19:25:46.463 回答