|Stable release||2.23.1 / November 13, 2012|
|License||GNU General Public License v3|
The GNU Assembler, commonly known as gas or simply as, its executable name, is the assembler used by the GNU Project. It is the default back-end of GCC. It is used to assemble the GNU operating system and the Linux kernel, and various other software. It is a part of the GNU Binutils package.
The GAS executable is named as, the standard name for a Unix assembler. GAS is cross-platform, and both runs on and assembles for a number of different computer architectures. Released under the GNU General Public License v3, GAS is free software.
GAS supports a general syntax that works for all of the supported architectures. The general syntax includes assembler directives and a method for commenting.
GAS uses assembler directives (also known as pseudo ops), which are keywords beginning with a period that behave similarly to preprocessor directives in the C programming language. While most of the available assembler directives are valid regardless of the target architecture, some directives are machine dependent.
GAS supports two comment styles:
As in C multi-line comments start and end with mirroring slash-asterisk pairs:
/* comment */
Single line comments have a few different formats varying on which architecture is being assembled for.
- Hash symbols are used for the platforms: i386, x86-64, i960, 68HC11, 68HC12, VAX, V850, m32r, and M880x0.
- Semicolons are used on: AMD 29k family, ARC, H8/300 family, HPPA,PDP-11, picoJava, Motorola, and PowerPC.
- The at sign is used on the ARM platform.
- A vertical bar is used to signify comments when assembling on 680x0.
- An exclamation mark on the Renesas SH platform.
Being the back-end for a popular compiler suite, namely GCC, the GNU Assembler is very widely used in compiling modern open source software. GAS is often used as the assembler on Linux operating systems in conjunction with other GNU software. A modified version of GAS can also be found in the Macintosh operating system's development tools package since OS X.
.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
|The Wikibook X86 Assembly has a page on the topic of: GAS Syntax|
- Official website
- Gas manual
- A comparison of GAS and NASM from IBM via archive.org
- Linux User Commands Manual : the portable GNU assembler –