【计算机系统原理】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: 更精简版本

相关推荐
要加油GW1 天前
[ACTF2020 新生赛]Include
学习
早睡早起身体好1231 天前
Vue 3 路由与懒加载入门:从零完成一个迷你学习中心
javascript·vue.js·学习
minglie11 天前
蚂蚁S9矿板PS 将驱动编译到内核
学习
华如锦1 天前
【AGENT开发】python学习 Python Level 5
python·学习·elasticsearch
醉城夜风~1 天前
HTML表单域学习博客:表单标签、输入框、按钮详解
android·java·缓存
MartinYeung51 天前
[论文学习]Learning to Inject:基于强化学习的自动化提示注入攻击
网络·学习·自动化
難釋懷1 天前
Nginx外置缓存-error_page
运维·nginx·缓存
hqyjzsb1 天前
AI应用人才需求爆发:区分AI研发与AI应用,普通人学习路线清晰指南
人工智能·学习·金融·数据挖掘·数据分析·创业创新·业界资讯
迈阿密皇马1 天前
一步一步学习使用LiveBindings() 绑定到自定义外观的ListBox
学习
lonely掉粉1 天前
一步一步学习使用FireMonkey动画() 使用Delphi的基本动画组件类
学习