写在前面

本文并不详细介绍Intel syntax、AT&T syntax、GAS、NASM的具体内容和具体区别,而是从概念辨析的角度说明这些专有名词的含义,以便为初学者扫清疑惑。有兴趣深入了解相关知识的读者请自行学习。

正文

1. Intel syntax vs AT&T syntax

  1. 这是两种不同的汇编语法,可以简单地认为是两种不同的汇编语言[1]
  2. Intel syntax主要用于DOS和Windows,而AT&T syntax主要用于UNIX[1,2]
  3. AT&T是American Telephone and Telegraph的缩写,AT&T是贝尔实验室的创建者之一,而UNIX系统在贝尔实验室诞生,因此UNIX下的汇编语言称为AT&T syntax[3,4,5]
  4. GNU的汇编器(即下文中的GAS)采用AT&T syntax,如 gcc -S filename.c 会生成AT&T syntax风格的汇编代码文件filename.s,如果想要生成Intel syntax风格的汇编代码,可以使用 gcc -S -masm=intel filename.c 命令。
  5. Intel syntax和AT&T syntax在编码上最大也是最应引起注意的区别是:两者指令的原操作数和目的操作数的位置正好是相反的。例如,Intel syntax下的指令 mov eax, 5 转换为AT&T syntax下的对应指令应为 movl $5, %eax [1]

2. GAS vs NASM

这是两种不同的汇编器,

  1. GAS是GNU Assembler的简写,基于AT&T syntax指令,生成.s文件[6]
  2. NASM是Netwide Assembler的简写,基于Intel syntax指令,生成.asm文件[6]
  3. 还有其它汇编器,如MASM (Microsoft Macro Assembler)、FASM (Flat Assembler)、TASM (Turbo Assembler)、YASM (Yet Another Assembler)等。常见汇编器的对比如下图所示(图片来自参考资料7)[1,7]

参考资料:

[1] Intel syntax vs AT&T syntax——wiki

[2] Intel syntax vs AT&T syntax——stackoverflow

[3]AT&T Corporation——wiki

[4] 贝尔实验室——wiki

[5] 贝尔实验室——知乎

[6] GAS vs NASM——CSDN

[7] Hacker Disassembling Uncovered, 2nd ed——google book

结束语

本文未生产知识,只是知识的搬运工。但由于在下才疏学浅,错误纰漏之处依然在所难免,如果您在阅读的过程中发现了本文的错误和不足,请您务必指出。您的批评指正就是在下前进的不竭动力!

汇编概念辨析(Intel/AT&T syntax、GAS、NASM)的更多相关文章

  1. Python类型转换+序列操作+基本概念辨析速查手册

     第一部分是Python语言中基础中的基础,根据网上资料,合并如下:       1.类型转换     int(x [,base])  将x转换为一个整数     long(x [,base]) 将x ...

  2. 高并发应用中客户端等待、响应时间的推算,及RT/QPS概念辨析

    高并发应用中客户端等待.响应时间的推算,及RT/QPS概念辨析 对于一个网站,已知服务端的服务线程数和处理单个请求所需的时间时,该如何算出高并发时用户从点击链接到收到响应的时间?注意这个时间并不等于服 ...

  3. AE开发概念辨析

    樱木 原文 AE开发之概念辨析2,AE开发涉及相关概念,AE开发相关概念 1 AE中的类库 AE总共包括了21个子库,分别是SYSTEM,SYSTEMUI,GEOMETRY,DISPLAY,SERVE ...

  4. 概念辨析-Description Language还是Description Library?

    https://mp.weixin.qq.com/s/p7eyD6GkniFGHrnr8t2SZQ   概念辨析-Description Language还是Description Library? ...

  5. Web Service概念辨析

    Web Service包含两个概念. 其一是Web Service标准体系,由SOAP.WSDL.UDDI三要素组成,是平台和语言无关的.在这个概念里和WCF做比较是错误的,因为前者是行业标准,后者是 ...

  6. [云计算&大数据]概念辨析:数据仓库 | 数据湖 | 数据中心 | 数据中台 | 数据平台 【待续】

    今日客户对这些个概念不清楚,让我解释解释. 说实在的,虽然对各概念都有印象和理解,但我也不能完完全全地辨析得很清晰. 作为从业者,还是有必要拎清一点. 让一切业务数据化,一切数据业务化. 业务数据化 ...

  7. [云计算]概念辨析:云计算 [IaaS/PaaS/SaaS & 公有云/私有云/混合云]

    1 云计算(Cloud Computing) 1.0 云计算的发展 1.1 概念 "云"实质上就是一个[网络], 狭义上讲,云计算就是一种提供资源的网络,使用者可以随时获取&quo ...

  8. 16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS

    ;以下是16位汇编 创建静态库,并调用静态库中的函数 ;多文件汇编格式 ;编译方法(此处用的是masm 5.0,如果是其他的编译器,有可能不能编译) ;第一种,编译方法 ;1.masm main.as ...

  9. Java概念辨析:equals和== equals和hashCode

    1. equals和== ======================================================================================= ...

  10. 编辑器、编译器、文件、IDE等常见概念辨析

    一.编辑器与编译器 1.编辑器与编译器有什么区别? 简单讲,编译器就是将"一种语言(通常为高级语言)"翻译为"另一种语言(通常为低级语言)"的程序.一个现代编译 ...

随机推荐

  1. VSTO踩坑记录(2)- 运用outlook对象模型发送邮件

    概述 上篇文章记录了怎么样让vsto插件显示在功能区上面,这篇文章来说说怎么运用微软提供的对象方法对outlook进行操作,附上官方文档. 这次示例我们来用代码发一封邮件,先简单拉几个控件,分别代表要 ...

  2. java-文件输入输出处理

    --------------------------------------------------- 1.File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的 ...

  3. ElasticSearch入门 第二篇

    集群配置----------------------------- ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.ym ...

  4. C# 单例简单实例

    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Li ...

  5. WebSocket,IsWebSocketRequest与AspNetWebSocketContext

    asp.net新建一个服务端程序,用来处理链接服务端: 1,新建一个处理程序 .ashx using System; using System.Collections.Generic; using S ...

  6. GMP大数库

    GMP大数库学习 了解 大数库 在网络安全技术领域中各种加密算法的软件实现始终有一个共同话题是如何在普通的PC机上实现大数运算.普通的PC机内部字长最多时32位或64位,但各种加密算法中为了达到一定安 ...

  7. ABC243

    ABC224 D 题目大意 有一个九个点的无向图棋盘,上面有八个棋子,一次操作能将一个棋子沿边移到空点上,问将每个棋子移到与它编号相同的点最少几步. 解题思路 考虑使用 BFS. 用 string 存 ...

  8. Kotlin:【异常处理】自定义异常、先决条件函数

  9. 通过串口通信 对TCP传输层以下的理解

    这可能是近期暂时最后一篇c嵌入式的文章了 基础的串口使用 参照网上的stm32教程套路引入标准库,初始化芯片手册上对应串口引脚 ,初始化stm32串口功能,然后有数据了就自然在寄存器上,就这样,你的波 ...

  10. MySQL主从复制-原理实战

    一.原理 主从复制架构图:主从复制原理: Mysql 中有一种日志叫做 bin 日志(二进制日志).这个日志会记录下所有修改了数据库的SQL 语句(insert,update,delete,creat ...