【发布时间】:2008-11-04 15:27:58
【问题描述】:
为什么 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?
【问题讨论】:
标签: windows win64 cpu-registers