ATT(根据“AT&T“命名的,AT&T是运营贝尔实验室多年的公司)格式汇编代码,是GCC、OBJDUMP和其他一些工具的默认格式。其他一些编程工具,包括Microsoft的工具,以及来自Intel的文档,其汇编代码都是Intel格式的。

ATT汇编代码:

simple:pushl %ebpmovl %esp, %ebpmovl 8(%ebp), %edxmovl 12(%ebp), %eaxaddl (%edx), %eaxmovl %eax, (%edx)popl %ebpret

Intel汇编格式代码:

simple:push ebpmov ebp, espmov edx, dword ptr [ebp+8]mov eax, dword ptr [ebp+12]add eax, dword ptr [edx]mov dword ptr [edx], eaxpop ebpret

区别:

Intel代码省略了指示大小的后缀。如指令mov,不是movl。

Intel代码省略了寄存器名字前面的‘%’符号。用的是esp,而不是%esp。

Intel代码用不同的方式来描述寄存器中的位置。例如,是‘dword ptr [ebp+8]‘而不是’8(%ebp)‘。

Intel立即数(immediate),也就是常数值,不使用前缀’$’,如,十进制数123,不是$123;十六进制数123h,不是$0x123

Intel指令一般使用从右到左的顺序,而ATT使用从左到右,如Intel是 mov dst, src,而ATT是 mov src, dst

AT&T语法中立即数前面加一个字符'$';寄存器操作数名前要加字符百分号'%';绝对跳转/调用(相对于与程序计数器有关的跳转/调用)操作数前面要加星号'*'。而Intel汇编语法均没有这些限制。

AT&T语法与Intel语法使用的源和目的操作数次序正好相反。AT&T的源和目的操作数是从左到右‘源,目的’。例如Intel的语句‘add eax, 4'对应AT&T的’addl &4, %eax'。

AT&T语法中内存操作数的长度(宽度)由操作码最后一个字符来确定。操作码后缀‘b’、‘w’和‘l’分别指示内存引用宽度为8位字节(byte)、16位字(word)和32位长字(long)。Intel语法则通过在内存操作数前使用前缀‘byte prt’、‘word ptr’和‘dword ptr’来达到同样的目的。因此,Intel的语句‘mov al, byte ptr foo’对应于AT&T的语句‘movb $foo, %al’。

AT&T语法中立即形式的远跳转和远调用为‘ljmp/lcall $section, $offset’,而Intel的是‘jmp/call far section:offset’。同样,AT&T语法中远返回指令‘lret $stack-adjust’对应Intel的‘ret far stack-adjust’。

AT&T汇编器不提供对多代码段程序的支持,UNIX类操作系统要求所有代码在一个段中。

ATT寻址方式:

Intel寻址方式:

ATT与Intel汇编代码格式相关推荐

  1. linux ATT汇编 与 Intel汇编 语法格式对比

    由于绝大多数的国内程序员以前只接触过Intel格式的汇编语言,很少或几乎没有接触过AT&T汇编语言,虽然这些汇编代码都是Intel风格的.但在Unix和Linux系统中,更多采用的还是AT&a ...

  2. ATT和Intel汇编杂谈

    作者:小安 博客地址:我的博客 今天,我们来梳理一下这常见的x86/x64平台下汇编语言的格式. 前言 一个高级语言写的程序会编译为二进制文件,但是其中有一个步骤是反汇编,这也是人们所能可以理解最底层 ...

  3. 【ATT 与 Intel】汇编与C语言相互调用及内联汇编

    目录 一.ATT 与 Intel 二.函数调用的约定 三.C语言调用汇编程序 四.汇编程序调用C语言 五.内联汇编 5.1.基本asm格式 5.2.扩展asm格式 5.3.使用占位符来替代寄存器名称 ...

  4. 程序编码(机器级代码+汇编代码+C代码+反汇编)

    [-1]相关声明 本文总结于csapp: 了解详情,或有兴趣,建议看原版书籍: [0]程序编码 GCC调用了一系列程序,将源代码转化成可执行代码的流程如下: (1)C预处理器扩展源代码,插入所有用#i ...

  5. 【汇编语言与计算机系统结构笔记06】地址计算指令,lea / leal,x86-32与x86-64下的swap对比,汇编的格式对比(Intel/Microsoft Differs from GAS)

    本次笔记内容: 07.寻址模式与数据传输指令等-2 文章目录 变址寻址 寻址模式实例 总结mov指令 地址计算指令 lea 整数计算指令 将leal指令用于计算 实例1 实例2 x86-32与x86- ...

  6. 一步步编写操作系统 78 intel汇编与ATT汇编语法区别

    本节咱们介绍下intel汇编语法和at&t汇编语法的区别. 以上表中未列出这两种语法在内存寻址方面的差异,个人觉得区别还是很大的,下面单独说说. 在Intel语法中,立即数就是普通的数字,如果 ...

  7. 汇编代码入门 ATT指令格式

    计算机系统结构 博文末尾支持二维码赞赏哦 _ cpu内部: 1. PC Program Counter指令指针寄存器指向下一条指令的地址EIP(X86-32)或者RIP(X86-64) 2. 寄存器与 ...

  8. 一、WIN10汇编工具使用(masm + dosbox)及汇编基础代码格式

    基础代码与工具使用 1.基础代码格式 assume cs:codesg ; 使用cs寄存器储存代码的段地址codesg segmentmochen:mov ax, 2; 代码段mov ax, 4c00 ...

  9. gdb 查看,执行汇编代码

    用gdb 查看汇编代码, 采用disassemble 和 x 命令. nexti, stepi 可以单步指令执行 如下例: -------------------------------------- ...

最新文章

  1. 根据当前时间判断上午好、下午好
  2. 使用Scrapy构建一个网络爬虫
  3. Windows phone应从Android吸取四点教训
  4. uwsgi部署到nginx出现invalid request block size: 4161 (max 4096)...skip问题(亲测)
  5. 第九次psp例行报告
  6. 转:HTTP协议简介与在python中的使用详解
  7. Nginx快速搭建和基本使用
  8. 服务器电流源泉ups电源的三大形式
  9. MooTools 1.4 源码分析 - (关于Core、Type等模块分析)
  10. 微信小程序跳过第三方的_微信小程序工具 第三方平台
  11. python可视化拖拽编程平台_PythonEditor可视化拼插编辑器:编程不用写代码,拖拖拽拽就可以!...
  12. ABAQUS后处理常用功能
  13. 1的阶乘加到20的阶乘
  14. Unity文件、META文件、Prefab文件
  15. 围棋棋盘有多少正方形 19*19
  16. win7怎样更改计算机密码,win7系统电脑怎么设置开机密码
  17. ubuntu磁盘清理
  18. 施努卡:机器视觉尺寸检测(机器视觉表面缺陷检测)
  19. Real-Time Rendering——9.9.4 Rough-Surface Subsurface Models粗糙表面地下模型
  20. layui lay-verify 验证

热门文章

  1. 文件修复软件winhex
  2. 二进制学习基础文章整理
  3. 数学建模学习(87):正余弦优化算法(SCA)对多元函数寻优
  4. 微信小程序开发加载html富文本数据
  5. C语言顺序栈实现代码
  6. CAD室内设计图,CAD图纸素材
  7. 使用批处理成批添加打印机(含打印服务器)
  8. 04741自考计算机网络原理知识点总结、考点串讲、考前复习
  9. 带存储功能的数字电子琴c语言,51单片机电子琴c语言程序代码实现
  10. C语言文件操作超详解(万字解读,细致入微)