我使用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比較和更改閾值? –