我使用XMM寄存器在汇编程序dll库中用c#编写程序。
我在asm中的代码:
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的值在调试期间在寄存器窗口中不会改变,但程序是否正常工作?
答案 0 :(得分:2)
您知道,12月1日发布的VS的RTM更新不会在调试器中正确显示YMM / XMM寄存器中的数据。这个问题已经引起了MSFT团队的注意,并且正在进行中。
如果您可以提取2015年12月1日之前的SW版本,请更新,但不会显示此特定问题。
希望这会有所帮助......