我正在学习SSE指令。但我无法解释MULPD的这种行为,因为它没有显示正确的值(例如; -9080 * 21 = -190680)。但是下面这个显示XMM0的原始值,即使在mulpd指令之后也是如此。答案不应该是xmm0 = xmm0 * xmm1吗?
format PE64 console
include 'win64a.inc'
movdqa xmm0,dqword[x]
movdqa xmm1,dqword[y]
mulpd xmm0,xmm1 ;xmm0 = -9080 * 21 | -67 * -89
movhpd qword[z],xmm0 ;copy higher portion
invoke printf,addr c,[z] ;why -9080?
invoke exit,0
align 16
x dq -67,-9080
y dq -89,21
z dq 0
c db "%d",0ah,0
感谢您的帮助。