0

我正在尝试将 64 位寄存器中的数字移动到 xmm 寄存器以进行算术运算。我的想法是:

movq xmm1, r14

在我的程序中,r14 持有计数器,我需要将它移动到 xmm1 中,这样我就可以将它与存储在 xmm0 中的数字之和相除。然后显示它。

当我执行代码时,它将 0 存储到 xmm1 中。

有人请帮忙。

4

1 回答 1

2

我创建test.asm为:

section .code
global _start
_start:
    mov r14,0x123456789abcdef0
    movq xmm1, r14
    int 3

编译并链接:

nasm.exe -f win64 -o test.obj test.asm
link.exe test.obj /entry:_start /subsystem:console

并在 64 位 WinDbg 下运行。当它击中int 3WinDbg 时,寄存器显示为:

r14      123456789abcdef0
xmm1     0.000000e+000: 0.000000e+000: 5.690457e-028:-7.811515e-023
xmm1/0   9abcdef0
xmm1/1   12345678
xmm1/2   0
xmm1/3   0
xmm1l    1234:5678:9abc:def0
xmm1h    0:0:0:0

...并且输入了所有这些,您是否有可能将其xmm1视为浮点而不是整数值?

于 2013-09-04T03:28:28.760 回答