GNU Assembler
# GNU Assembler

Der GNU Assembler, auch bekannt als GAS, ist der Assembler des GNU-Projekts. Er ist das Standard-Backend der GNU Compiler Collection. Er wird zum Assemblieren des GNU-Betriebssystems, des Linux-Kernels und vieler anderer Applikationen verwendet. Er gehört zum GNU-Binutils-Paket.

Die ausführbare Datei des GNU Assemblers ist nach dem Unix Assembler (as) benannt. GAS ist plattformübergreifend, und damit für eine große Anzahl von verschiedenen Rechnerarchitekturen sowohl lauf- als auch assemblierfähig. GAS wird unter der GNU General Public License v3 veröffentlicht und ist freie Software.

## Allgemeingültige Syntax

Der GNU Assembler hat eine allgemeingültige Syntax für alle unterstützten Architekturen. Diese Syntax beinhaltet Assembler-Direktiven und Methoden zum Kommentieren.

### Assembler-Direktiven

Der GNU Assembler verwendet Assembler-Direktiven (auch als pseudo-ops bekannt), welche aus einem Schlüsselwort beginnend mit einem Punkt gebildet werden. Die meisten verfügbaren Direktiven sind architekturunabhängig, einige wenige hardwarespezifisch.

### Kommentare

GAS nutzt standardmäßig das Rautezeichen (#) für einen Einzelzeilenkommentar. Beispiel:

## Kritik

Eine Quelle von Kritik an GAS ist, dass er für die x86- und x64-Architekturen anstelle der verbreiteteren Intel-Syntax die AT&T-Assembler-Syntax verwendet. Das ist allerdings in der Kompatibilität zu GCC begründet, und kann in neueren Versionen über die Direktive .intel_syntax geändert werden.

Das obige Beispiel in Intel Syntax:

## Inline Assembler

Der GNU Assembler zeichnet sich gegenüber anderen Assemblern auch durch eine Inline-Syntax aus, die es ermöglicht, den Assembler-Teil effektiv in einen Hochsprachenteil einzubinden. Dies geschieht durch eine Liste der Eingabe-, Ausgaberegister und der im Assembler-Teil verwendeten Register. Hierdurch kann der Compiler einen Assembler-Teil während der Optimierung ohne Übergabe-Overheads an den Hochsprachenteil anbinden.

Das obige Beispiel als C-Inline-Assembler in Intel-Syntax:

