"Instruction operands must be the same size" 来自 .data 数组的 MOVDQU
"Instruction operands must be the same size" for MOVDQU from .data array
我有一个包含 2 个数组的 .asm 文件:
.DATA
compara byte 16 dup (?)
subtrai byte 16 dup (128)
然后我尝试在数组上使用 movdqu
(到 xmm1
和 xmm2
),但我遇到了问题。
尽管它们的大小相同,但每个数组存储 16 个字节的数据,我得到错误:
error A2022: instruction operands must be the same size
movdqu xmm2, compara
movdqu xmm1, subtrai
MASM 是指一个元素(字节)的大小,而不是数组的总大小。就像你写 mov eax, compara
一样,你需要 mov eax, dword ptr compara
才能让它从 1 字节元素的数组中发出 4 字节的负载,即使它是 byte 4 dup(?)
movdqu xmm2, xmmword ptr [compara]
方括号是可选的,但 IMO 良好的风格总是将它们用于内存操作数。
我有一个包含 2 个数组的 .asm 文件:
.DATA
compara byte 16 dup (?)
subtrai byte 16 dup (128)
然后我尝试在数组上使用 movdqu
(到 xmm1
和 xmm2
),但我遇到了问题。
尽管它们的大小相同,但每个数组存储 16 个字节的数据,我得到错误:
error A2022: instruction operands must be the same size
movdqu xmm2, compara
movdqu xmm1, subtrai
MASM 是指一个元素(字节)的大小,而不是数组的总大小。就像你写 mov eax, compara
一样,你需要 mov eax, dword ptr compara
才能让它从 1 字节元素的数组中发出 4 字节的负载,即使它是 byte 4 dup(?)
movdqu xmm2, xmmword ptr [compara]
方括号是可选的,但 IMO 良好的风格总是将它们用于内存操作数。