为什么 Windows 64 选择要求保存/恢复 xmm6 和 xmm7?
在 Windows 32 中,您可以编写破坏 xmm0...xmm7 的汇编程序。但是如果你使用相同的汇编代码并在 Windows 64 中运行它,它通常会导致应用程序错误,因为 VS2007 将双精度值存储在 xmm6 和 xmm7 中。
在我看来,既然 X64 有 16 个 xmm 寄存器 xmm0...xmm15(而 X32 只有 8 个 xmm 寄存器),那么微软本可以选择允许用户破坏 xmm0..xmm7(这样他们就可以重用 Win32 中的汇编程序)无需考虑)但要求用户保存/恢复 xmm8...xmm15。
那么,为了满足我自己的好奇,为什么 Windows 64 选择要求保存/恢复 xmm6 和 xmm7?