程序集x64:使用带整数的MULPD指令

时间:2015-06-09 12:40:56

标签: assembly 64-bit sse fasm

我正在学习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

感谢您的帮助。

0 个答案:

没有答案