哪里可以查到 x86-64 的 AT&T 汇编语法手册?
数据小陈
结论
目前没有找到适合作为通用 x86-64 AT&T 汇编权威手册的 AT&T 官方文档。AT&T 风格指的是汇编器采用的一种语法,x86 本身没有统一的汇编语法标准。查 GNU as 手册的 x86 章节最直接,尤其是 Memory References:其中说明了 AT&T 内存操作数的格式,也介绍了 x86-64 的 RIP-relative addressing。GNU as 手册:AT&T Syntax versus Intel Syntax 与 Memory References
寻址模式在哪里看
GNU 手册把 Intel 风格的内存引用形式:
[base + index*scale + disp]
写作对应的 AT&T 格式:
disp(base, index, scale)
base、index 和 disp 都可以省略;scale 可以是 1、2、4 或 8,省略时默认为 1。例如:
-4(%rbp) # 基址寄存器加位移
symbol(,%rax,4) # 符号地址加 %rax * 4
symbol(%rip) # RIP-relative addressing
在 x86-64 中,普通寄存器使用对应的 64 位寄存器。手册也列出了 symbol(%rip) 这种 RIP-relative 写法。更多寻址形式和差异说明见 GNU 手册的 Memory References 小节。
Oracle 手册的适用范围
Oracle 的 x86 Assembly Language Reference Manual 介绍了通常所说的 AT&T syntax,也涵盖操作数、寻址和指令映射。该手册记录的是 Oracle Solaris x86 assembler 的语法与工具行为,可用于查阅 Solaris 汇编器相关信息。不同汇编器的语法和功能存在差异,因此不宜把它当作所有汇编器通用的规范。
推荐查阅方式
- 查 GNU
as手册中的 i386 Dependent Features,了解 GNU 汇编器中 AT&T 与 Intel 语法的差异,包括寄存器写法、操作数顺序、后缀和内存引用格式。 - 对照所用汇编器的文档。使用 Solaris
as时查 Oracle 手册;使用 GNUas时以 GNU 手册为准。 - 查指令的具体语义时,另看处理器厂商的指令集手册。语法手册说明汇编器如何解析文本,指令集手册说明机器指令的行为。
备注:内容仅供参考。
