在汇编程序中调试 xmm 寄存器
Debugging xmm registers in Assembler
我使用 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 寄存器的值,并且在调试期间显示在寄存器 window 中的红色颜色上,因为值已更改。
但是如果我更改 xmm 寄存器的值,它不会显示为红色,并且该寄存器的值仍然是:
XMM0 = 00000000000000000000000000000000
XMM1 = 00000000000000000000000000000000
只有在调试期间我在 c# 中时 ret 之后,我才能注意到寄存器发生了变化。
XMM0 = 00000000000000000000000000000007
XMM1 = 00000000000000000000000000000002
我的问题是:为什么在调试期间 xmms 的值在寄存器 window 中没有改变,但程序运行正常?
如您所知,12 月 1 日发布的 VS 的 RTM 更新未在调试器中正确显示 YMM/XMM 寄存器的数据。此问题已引起 MSFT 团队的注意,并正在处理中。
如果您可以提取 2015 年 12 月 1 日之前的 SW 版本,更新,则不会显示此特定问题。
希望这对您有所帮助...
我使用 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 寄存器的值,并且在调试期间显示在寄存器 window 中的红色颜色上,因为值已更改。
但是如果我更改 xmm 寄存器的值,它不会显示为红色,并且该寄存器的值仍然是:
XMM0 = 00000000000000000000000000000000
XMM1 = 00000000000000000000000000000000
只有在调试期间我在 c# 中时 ret 之后,我才能注意到寄存器发生了变化。
XMM0 = 00000000000000000000000000000007
XMM1 = 00000000000000000000000000000002
我的问题是:为什么在调试期间 xmms 的值在寄存器 window 中没有改变,但程序运行正常?
如您所知,12 月 1 日发布的 VS 的 RTM 更新未在调试器中正确显示 YMM/XMM 寄存器的数据。此问题已引起 MSFT 团队的注意,并正在处理中。
如果您可以提取 2015 年 12 月 1 日之前的 SW 版本,更新,则不会显示此特定问题。
希望这对您有所帮助...