适用于我的 AT&T 语法mov $-1, %rax
or mov $0xFFFFFFFFFFFFFFFF, %rax
,或与movq
而不是隐式保留操作数大小。
在 Intel 语法中,您不能再使用操作数大小q
设置操作数大小的后缀;它是由寄存器或一个暗示的qword ptr
覆盖内存操作数。
movq
是类似指令的助记符movq xmm0, rax
or movq xmm0, xmm1
(两个单独的操作码/指令集手动条目都使用 movq 助记符,其中一个是 REX 形式movd xmm, r/m32
,另一个是 xmm/mmxmovq xmm, xmm/m64
)
mov $-1, %rax
mov $0xFFFFFFFFFFFFFFFF, %rax
.intel_syntax noprefix
mov rax, -1
mov rax, 0xFFFFFFFFFFFFFFFF
组装得很好clang -c
,到同一条指令的 4 个副本:
0: 48 c7 c0 ff ff ff ff mov rax,0xffffffffffffffff
注意-f...
and -O3
code-gen 选项仅在汇编时无效,不编译 C/C++ 时也无效-march=native
。 Clang 的汇编器不限制指令选择-march
;它仅设置编译器的代码生成的目标。 (您给出的选项都没有hurts,但它们没有效果.S
除了也许-g
.)