XMM寄存器值

时间:2011-10-17 09:58:55

标签: sse visual-studio-debugging

我发现很难在Visual Studio的注册窗口中解释xmm寄存器的值。窗口显示以下内容:

XMM0 = 00000000000000004018000000000000 XMM1 = 00000000000000004020000000000000 
XMM2 = 00000000000000000000000000000000 XMM3 = 00000000000000000000000000000000 
XMM4 = 00000000000000000000000000000000 XMM5 = 00000000000000000000000000000000 
XMM6 = 00000000000000000000000000000000 XMM7 = 00000000000000000000000000000000 

XMM00 = +0.00000E+000      XMM01 = +2.37500E+000      XMM02 = +0.00000E+000      
XMM03 = +0.00000E+000      XMM10 = +0.00000E+000      XMM11 = +2.50000E+000      
XMM12 = +0.00000E+000      XMM13 = +0.00000E+000

从我运行的代码中,XMM0和XMM1的值应该是6和8(或其他方式)。此处显示的寄存器值为:XMM01 = +2.37500E+000

这转化为什么?

1 个答案:

答案 0 :(得分:6)

是的,看起来像是:

XMM0 = { 6.0, 0.0 }  // 6.0 = 0x4018000000000000 (double precision)
XMM1 = { 8.0, 0.0 }  // 8.0 = 0x4020000000000000 (double precision)

您解释这个问题的原因是您的调试器只显示十六进制的每个128位XMM寄存器,然后低于4 x 精度浮点数,但您显然使用精确浮动。

我不熟悉Visual Studio调试器,但理想情况下应该有一种方法来更改XMM寄存器的表示形式 - 您可能需要查看手册或在线帮助。

请注意,通常使用SSE的双精度很少有任何值,特别是如果你有一个相当现代的x86 CPU和两个FPU。