AT&T格式的汇编与Intel格式的汇编

AT&T 格式和 Intel 格式是两种主流的汇编语言语法风格,而 NASM 是一个广泛使用的汇编器,支持 Intel 语法。以下是它们的对比和关键区别:


1. AT&T 格式 vs Intel 格式

(1) 操作数顺序

  • AT&T: 源操作数在前,目标操作数在后
    movl %eax, %ebx   # 将 eax 的值复制到 ebx
    
  • Intel: 目标操作数在前,源操作数在后
    mov ebx, eax      # 将 eax 的值复制到 ebx
    

(2) 寄存器与立即数表示

  • AT&T:
    • 寄存器前加 %%eax, %ebx
    • 立即数前加 $$42, $0x80
    addl $10, %eax    # eax += 10
    
  • Intel:
    • 寄存器直接写:eax, ebx
    • 立即数无前缀:42, 80h
    add eax, 10       # eax += 10
    

(3) 操作数大小

  • AT&T: 通过指令后缀表示操作数大小:
    • b(byte, 8位)
    • w(word, 16位)
    • l(long, 32位)
    • q(quad, 64位)
    movw %ax, %bx     # 16位移动
    
  • Intel: 通过操作数或关键字(如 BYTE PTR)指定大小:
    mov bx, ax        # 16位移动
    mov BYTE PTR [eax], 0x80
    

(4) 内存引用

  • AT&T: 用 () 表示内存地址,偏移量写在括号外:
    movl 4(%eax), %ebx   # ebx = *(eax + 4)
    
  • Intel: 用 [] 表示内存地址,偏移量写在括号内:
    mov ebx, [eax + 4]   # ebx = *(eax + 4)
    

(5) 其他差异

  • AT&T 更常见于 Unix/Linux 系统(如 GCC 内联汇编)。
  • Intel 更常见于 Windows、MASM、NASM 和官方文档(如 Intel 手册)。

2. NASM 的特点

NASM(Netwide Assembler)是一个跨平台的汇编器,主要特点包括:

  • 语法风格: 使用 Intel 语法(与 AT&T 相反)。
  • 跨平台: 支持 x86/x86-64,可生成 Linux、Windows 等平台的目标文件。
  • 宏支持: 提供强大的宏功能。
  • 标签处理: 标号后需加 :(如 label:),而 MASM 允许省略。

NASM 示例

section .data
    msg db "Hello, World!", 0xA  ; 定义字符串
    len equ $ - msg               ; 计算长度

section .text
global _start
_start:
    mov eax, 4       ; sys_write
    mov ebx, 1       ; stdout
    mov ecx, msg     ; 字符串地址
    mov edx, len     ; 长度
    int 0x80         ; 调用内核

    mov eax, 1       ; sys_exit
    int 0x80

3. 常见汇编器与语法对照

汇编器 默认语法 典型使用场景
NASM Intel Linux/Windows 跨平台
GAS (GCC) AT&T Linux 内联汇编
MASM Intel Windows 开发
FASM Intel 自举编译、跨平台

4. 如何选择?

  • 学习/阅读 Intel 手册 → Intel 语法(如 NASM)。
  • Linux 内核/驱动开发 → AT&T 语法(GCC 内联汇编)。
  • Windows 开发 → MASM 或 NASM(Intel 语法)。

5. 转换示例

同一段代码的两种语法:

; Intel (NASM)
mov eax, [ebx + 8]   ; eax = *(ebx + 8)
add ecx, 20          ; ecx += 20
# AT&T (GAS)
movl 8(%ebx), %eax   # eax = *(ebx + 8)
addl $20, %ecx       # ecx += 20

建议根据工具链和目标平台选择合适的语法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容