GNU汇编器
- toolset version of binutils[1]
![編輯維基數據鏈接](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png)
GNU汇编器(英語:GNU assembler),是由GNU计划所使用的汇编器,一般称为gas,或依其可执行文件名称简称为as。它是GCC的默认后端。它用于汇编GNU操作系统、Linux内核以及其他各种软件。它是GNU Binutils包的一部分。
GAS的可执行文件被命名为as,Unix汇编器的标准名称。GAS是跨平台的,可以运行或为不同的计算机系统结构编译。GAS依据GNU通用公共许可证第三版发布,为自由软件。
通用语法
GAS支持适用于所有支持架构的通用语法。通用语法包括汇编指令和注释方法。
指令
GAS使用汇编器指令(也被称为伪操作),它们作为关键字指示开始一个时期,与C语言中的预处理指令表现相同。虽然无论目标架构如何,大多数可用的汇编指令都是有效的,但一些指令仍然因机器不同而不同。[2]
注释
GAS支持两种注释风格:[3]
多行注释:
/* 注释 */
单行注释:
在不同的架构中汇编时,单行注释有几种不同的格式。
- #用于以下平台中:i386,x86-64,i960,68HC11,68HC12,VAX, V850,m32r,M880x0。
- ;用于以下平台中:AMD 29k family,ARC,H8/300 family,HPPA,PDP-11,picoJava,Motorola,PowerPC。
- @用于ARM平台。
- |用于680x0平台。
- !用于Renesas SH平台。
用法
作为流行编译器套件GCC的后端,GNU汇编器在编译现代开源软件中有非常广泛的应用。在Linux系统上,GAS经常用作与其他GNU软件结合的汇编器。因为OS X,修改后版本的GAS也可以在麦金塔操作系统的开发工具包中找到。
示例程序
一个标准的“Hello, world!”程序,运行于Linux IA-32:
.globl _start .text _start: movl $len, %edx movl $msg, %ecx movl $1, %ebx movl $4, %eax int $0x80 movl $0, %ebx movl $1, %eax int $0x80 .data msg: .ascii "Hello, world!\n" len = . - msg
批评
那些更习惯于Intel语法的人认为,比起其他汇编器,在x86和x86-64平台上不支持使用Intel语法就是一大败笔。
然而,自从2.10版本,Intel语法可以通过使用.intel_syntax
指令使用。[4][5][6]
参见
参考文献
- ^ https://sourceware.org/git/?p=binutils-gdb.git;a=tree; 检索日期: 2021年2月8日.
- ^ The GNU Assembler - Assembler Directives. [2013-10-08]. (原始内容存档于2012-02-22).
- ^ Red Hat Inc. Using as. [1012-03-11]. (原始内容存档于2011-06-20). 请检查
|access-date=
中的日期值 (帮助) - ^ GNU Assembler News. [永久失效連結]
- ^ AT&T Syntax versus Intel Syntax. Using as, the GNU Assembler. [2013-10-08]. (原始内容存档于2010-05-29).
- ^ Ram Narayan. Linux assemblers: A comparison of GAS and NASM. IBM DeveloperWorks. 2007-10-17 [2007-10-17]. (原始内容存档于2009-03-03).
外部链接
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/40px-Wikibooks-logo.svg.png)
維基教科書中的相關電子教程:en:X86 Assembly/GAS Syntax
- 官方网站
- Gas手册 (页面存档备份,存于互联网档案馆)
- A comparison of GAS and NASM(页面存档备份,存于互联网档案馆),位于IBM
as
: the portable GNU assembler – 参考,单一UNIX®规范第7期,由國際開放標準組織发布
|
|