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

相关推荐
Canmag 兴隆磁性33 分钟前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁
新手unity自用笔记2 小时前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
zyf1044162 小时前
暑期实践日志 Day32:完成第六章字幕添加,推进工作
学习·计算机网络·剪辑·暑期实践·课题任务
小雪崩2 小时前
嵌入式学习 day27:标准IO
linux·c语言·学习
hsjiasb2 小时前
FreeRTOS学习(三十五)——系统架构综合项目
学习·学习笔记·freertos
YM52e3 小时前
语言地区选择器-鸿蒙ArkTS国际化页面设计
学习·华为·harmonyos
不是光头 强3 小时前
Java 后端 AI 技术选型与学习路线
java·人工智能·学习
cloudification3 小时前
virtual
学习
MartinYeung53 小时前
[论文学习]δ-STEAL:基于本地差分隐私的大语言模型窃取攻击
网络·学习·语言模型
paopaokaka_luck4 小时前
基于springboot3+vue3的文山民族文化资源展示与推广平台(协同过滤算法、Echarts 图形化分析)
java·前端·spring boot·学习·echarts