我使用XMM寄存器在汇编器dll库中编写c#程序。在汇编器中调试xmm寄存器
我的汇编代码:
mov eax, 5
mov ecx, 2
movd xmm0, eax // here
movd xmm1, ecx // here
addss xmm0,xmm1 // and here no difference
movd eax, xmm0
ret
它的工作原理,因为我想但我想解决一个小问题。 虽然我正在调试此代码,但我正在更改eax和exc寄存器的值,并且它在调试期间显示在寄存器窗口中的红色colore上,因为值已更改。 但如果我改变的XMM寄存器的值,它不是红色,这个寄存器的值显示依然: XMM0 = 00000000000000000000000000000000 XMM1 = 00000000000000000000000000000000 ,当我调试运行我可以看到,登记时我在C#中唯一的沤后改变。 XMM0 = 00000000000000000000000000000007 XMM1 = 00000000000000000000000000000002
我的问题是:为什么在调试过程中xmms的值在寄存器窗口中不会改变,但程序工作正常吗?
这取决于你的调试器,你显然忘了提及。 – Jester
我正在使用VS 2013. – alokkoolol123
您意识到您正在使用浮点添加,对吧?你要添加两个非常规浮点数:7.0E-45和2.8E-45来获得9.8E-45。这种情况发生了,但是当你使用大于2^23左右的整数时,就会中断,当某些非零位处于指数状态时。也许你的调试器正在使用FP比较和更改阈值? –