ATT与Intel汇编代码格式
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汇编代码格式相关推荐
- linux ATT汇编 与 Intel汇编 语法格式对比
由于绝大多数的国内程序员以前只接触过Intel格式的汇编语言,很少或几乎没有接触过AT&T汇编语言,虽然这些汇编代码都是Intel风格的.但在Unix和Linux系统中,更多采用的还是AT&a ...
- ATT和Intel汇编杂谈
作者:小安 博客地址:我的博客 今天,我们来梳理一下这常见的x86/x64平台下汇编语言的格式. 前言 一个高级语言写的程序会编译为二进制文件,但是其中有一个步骤是反汇编,这也是人们所能可以理解最底层 ...
- 【ATT 与 Intel】汇编与C语言相互调用及内联汇编
目录 一.ATT 与 Intel 二.函数调用的约定 三.C语言调用汇编程序 四.汇编程序调用C语言 五.内联汇编 5.1.基本asm格式 5.2.扩展asm格式 5.3.使用占位符来替代寄存器名称 ...
- 程序编码(机器级代码+汇编代码+C代码+反汇编)
[-1]相关声明 本文总结于csapp: 了解详情,或有兴趣,建议看原版书籍: [0]程序编码 GCC调用了一系列程序,将源代码转化成可执行代码的流程如下: (1)C预处理器扩展源代码,插入所有用#i ...
- 【汇编语言与计算机系统结构笔记06】地址计算指令,lea / leal,x86-32与x86-64下的swap对比,汇编的格式对比(Intel/Microsoft Differs from GAS)
本次笔记内容: 07.寻址模式与数据传输指令等-2 文章目录 变址寻址 寻址模式实例 总结mov指令 地址计算指令 lea 整数计算指令 将leal指令用于计算 实例1 实例2 x86-32与x86- ...
- 一步步编写操作系统 78 intel汇编与ATT汇编语法区别
本节咱们介绍下intel汇编语法和at&t汇编语法的区别. 以上表中未列出这两种语法在内存寻址方面的差异,个人觉得区别还是很大的,下面单独说说. 在Intel语法中,立即数就是普通的数字,如果 ...
- 汇编代码入门 ATT指令格式
计算机系统结构 博文末尾支持二维码赞赏哦 _ cpu内部: 1. PC Program Counter指令指针寄存器指向下一条指令的地址EIP(X86-32)或者RIP(X86-64) 2. 寄存器与 ...
- 一、WIN10汇编工具使用(masm + dosbox)及汇编基础代码格式
基础代码与工具使用 1.基础代码格式 assume cs:codesg ; 使用cs寄存器储存代码的段地址codesg segmentmochen:mov ax, 2; 代码段mov ax, 4c00 ...
- gdb 查看,执行汇编代码
用gdb 查看汇编代码, 采用disassemble 和 x 命令. nexti, stepi 可以单步指令执行 如下例: -------------------------------------- ...
最新文章
- 根据当前时间判断上午好、下午好
- 使用Scrapy构建一个网络爬虫
- Windows phone应从Android吸取四点教训
- uwsgi部署到nginx出现invalid request block size: 4161 (max 4096)...skip问题(亲测)
- 第九次psp例行报告
- 转:HTTP协议简介与在python中的使用详解
- Nginx快速搭建和基本使用
- 服务器电流源泉ups电源的三大形式
- MooTools 1.4 源码分析 - (关于Core、Type等模块分析)
- 微信小程序跳过第三方的_微信小程序工具 第三方平台
- python可视化拖拽编程平台_PythonEditor可视化拼插编辑器:编程不用写代码,拖拖拽拽就可以!...
- ABAQUS后处理常用功能
- 1的阶乘加到20的阶乘
- Unity文件、META文件、Prefab文件
- 围棋棋盘有多少正方形 19*19
- win7怎样更改计算机密码,win7系统电脑怎么设置开机密码
- ubuntu磁盘清理
- 施努卡:机器视觉尺寸检测(机器视觉表面缺陷检测)
- Real-Time Rendering——9.9.4 Rough-Surface Subsurface Models粗糙表面地下模型
- layui lay-verify 验证