我正在使用一本旧书中的示例代码,但该代码是作为内联汇编编写的! 我创建了一个新的控制台应用程序项目。添加了 MASM 依赖项,文件类型为 Microsoft Macro Assembler。
无论是针对 32 还是 64,我都会收到此错误!
=>MOVAPS XMM0, [esi]
Exception thrown at 0x00D4101C in Project3.exe: 0xC0000005: Access violation reading location 0xFFFFFFFF
Exception thrown at 0x00000000004F101C in Project3.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.
asmcode.asm
.model flat,c
.const
.data
A dd 0.1,0.2,0.3,0.4
B dd 1,2,3,4
.code
main PROC
MOV esi, A
MOV edi, B
MOVAPS XMM0, [esi]
MOVUPS XMM1, [edi]
ADDPS XMM0, XMM1
MOVAPS XMM1, XMM0
MOVAPS[esi], XMM0
MOVUPS[edi], XMM1
main endp
end
知道为什么它不起作用吗? 当我尝试获取 A 和 B 的地址而不是寄存器 esi 和 edi 的地址时,它起作用了
所以这有效
MOVAPS XMM0, [A]
MOVUPS XMM1, [B]
仅供参考该代码与内联汇编中的寄存器一起使用