GNU汇编器

GNU汇编器（），是由GNU计划所使用的汇编器，一般称为gas，或依其可执行文件名称简称为as。它是GCC的默认后端。它用于汇编GNU操作系统、Linux内核以及其他各种软件。它是GNU Binutils包的一部分。

GAS的可执行文件被命名为as，Unix汇编器的标准名称。GAS是跨平台的，可以运行或为不同的计算机系统结构编译。GAS依据GNU通用公共许可证第三版发布，为自由软件。

 通用语法 
GAS支持适用于所有支持架构的通用语法。通用语法包括汇编指令和注释方法。

 指令 
GAS使用汇编器指令（也被称为伪操作），它们作为关键字指示开始一个时期，与C语言中的预处理指令表现相同。虽然无论目标架构如何，大多数可用的汇编指令都是有效的，但一些指令仍然因机器不同而不同。

 注释 
GAS支持两种注释风格：

多行注释：

与C语言类似，以一对斜线-星号对开始和结束：
<nowiki>
/* 
注释
*/
</nowiki>

单行注释：

在不同的架构中汇编时，单行注释有几种不同的格式。
 #用于以下平台中：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指令使用。

 参见 

 GNU toolchain
 二进制文件描述库
 汇编器列表

 参考文献 

 外部链接 


 Gas手册 
 A comparison of GAS and NASM，位于IBM


Category:汇编器
汇编器
Category:自由編譯器與直譯器
Category:Linux编程工具
Category:Unix编程工具