我正在尝试将继承的 32 位 Windows 应用程序转换为 64 位。我挂断了嵌入在 32 位 C 文件中的这个位:
__asm {
pxor mm0,mm0
punpcklbw mm0, dword ptr[x]
... }
'x' 是 C 中的结构。
根据 MASM 64 位的要求,我将 ASM 重构为一个外部文件,如下所示:
mmx_speedup_asm PROC x:PTR DWORD
pxor mm0,mm0
punpcklbw mm0, x
...
mmx_spedup_asm ENDP
在编译时,我收到此错误:
invalid instruction operands
在“punpcklbw”线上
这似乎可能是 64 位/32 位之间的不匹配,但我无法确切说明原因或如何修复它。