当编写内联汇编器时,有没有办法强制使用rex.W前缀?
所以而不是
“psllq 12 美元,%%xmm1 ”
生成
66 0f x73 f1 0c
我想要
66 48 0f x73 f1 0c
带有额外的 0x48 rex.W 前缀。
您只需添加
rex.W
前缀即可:
rex.W psllq $12, %xmm1
这正是 GNU binutils 反汇编您给出的操作码字节的方式。 来自包含内容的文件 psllq.s
.byte 0x66, 0x48, 0x0f, 0x73, 0xf1, 0x0c
我们可以运行
as psllq.s -o psllq.o && objdump -d psllq.o
来获得:
psllq.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <.text>:
0: 66 48 0f 73 f1 0c rex.W psllq $0xc,%xmm1