【发布时间】:2015-08-05 23:32:15
【问题描述】:
我正在编写以下代码:
__asm__ volatile ("movq %%rax, %%mm1\n"
"movq %%rcx, %%mm2\n"
: : "a" (0xDEADBEEFDEADBEEF), "c" (0xBADFACE5BADFACE5));
在这种情况下,我将值从 rax 移动到 mm1,它们都是 64b 寄存器(将 qword 值从一个寄存器移动到另一个)。但是当我编译我的代码时,我看到:
mov rax, 0xDEADBEEFDEADBEEF
mov rcx, 0xBADFACE5BADFACE5
movd mm1, rax <-------------- Why it is doing a dword operation ??
movd mm2, rcx <-------------- Why it is doing a dword operation ??
我在 64 位模式下编译我的代码,我不确定它为什么将 64 位操作更改为 32 位。
【问题讨论】: