【计算机系统原理】Intel 与 AT&T 汇编指令格式转换

目录

核心转换规则

常见寄存器名对应的AT&T指令后缀

练习1:逐条指令转换与含义说明

[1. push ebp](#1. push ebp)

[2. mov edx, DWORD PTR [esp + 8]](#2. mov edx, DWORD PTR [esp + 8])

[3. mov al, 255](#3. mov al, 255)

[4. mov WORD PTR [ebp + 20], cx](#4. mov WORD PTR [ebp + 20], cx)

[5. lea eax, [ecx + edx * 2 + 4]](#5. lea eax, [ecx + edx * 2 + 4])

[练习2: 更精简版本](#练习2: 更精简版本)


核心转换规则

特性 Intel 格式 AT&T 格式
操作数顺序 目标, 源 (dst, src) 源, 目标 (src, dst)
寄存器命名 直接写寄存器名(如 ebp 寄存器名前加 % 前缀(如 %ebp
立即数 直接写数值(如 255 立即数前加 $ 前缀(如 $255
操作数大小 BYTE/WORD/DWORD PTR 显式指定 用指令后缀 b(8 位)/w(16 位)/l(32 位) 指定
内存寻址 [基址 + 索引*比例 + 偏移] 偏移(基址, 索引, 比例)

常见寄存器名对应的AT&T指令后缀

练习1:逐条指令转换与含义说明

1. push ebp
  • AT&T 格式pushl %ebp
  • 指令含义 :将 32 位基址指针寄存器 ebp 的值压入栈中,常用于函数栈帧初始化,保存旧栈帧基地址。

2. mov edx, DWORD PTR [esp + 8]
  • AT&T 格式movl 8(%esp), %edx
  • 指令含义 :从栈指针 esp 偏移 8 字节的内存地址处,读取一个 32 位双字(DWORD)数据,存入寄存器 edx,通常用于获取函数参数。

3. mov al, 255
  • AT&T 格式movb $255, %al
  • 指令含义 :将立即数 255(8 位)存入 8 位累加器寄存器 al,后缀 b 明确操作数为字节(8 位)。

4. mov WORD PTR [ebp + 20], cx
  • AT&T 格式movw %cx, 20(%ebp)
  • 指令含义 :将 16 位寄存器 cx 的值,写入到基址指针 ebp 偏移 20 字节的内存地址处,后缀 w 明确操作数为字(16 位)。

5. lea eax, [ecx + edx * 2 + 4]
  • AT&T 格式leal 4(%ecx, %edx, 2), %eax
  • 指令含义 :计算有效地址 ecx + edx×2 + 4,并将该地址值存入 32 位寄存器 eaxlea 指令本质是地址计算,不访问内存)。

练习2: 更精简版本

相关推荐
努力学习的小廉2 小时前
redis学习笔记(九)—— Redis 持久化
redis·笔记·学习
小陈项目管理PMP2 小时前
2026年6月PMP考试:70天冲刺,这5个“备考误区”正在偷偷浪费你的时间
学习·项目管理·pmp
山楂树の2 小时前
【计算机系统原理】 直接映射(模映射) Cache 地址划分与访问过程
学习·缓存
cyforkk2 小时前
缓存穿透难题:当 Value 为空字符串时,该如何优雅处理?
缓存
呆子也有梦2 小时前
redis 的延时双删、双重检查锁定在游戏服务端的使用(伪代码为C#)
redis·后端·游戏·缓存·c#
网络工程小王3 小时前
【Python数据分析基础】
大数据·数据库·人工智能·学习
FluxMelodySun3 小时前
机器学习(二十七) 降维:度量学习与随机梯度下降法求解
人工智能·学习·机器学习
roman_日积跬步-终至千里3 小时前
【2025下半年系统架构设计师案例分析】电商平台 MySQL + Redis 与缓存击穿治理
mysql·缓存·系统架构
一尘之中3 小时前
利用QPanda测试量子系统噪声:从理论到QAOA实践
学习·ai写作·量子计算