GNU Assembler

GNU Assembler
GNU Assembler
Entwickler GNU-Projekt
Aktuelle Version 2.21
(8. Dezember 2010)
Betriebssystem Cross-platform
Programmier­sprache C
Kategorie Assembler
Lizenz GNU General Public License v3
www.gnu.org/software/binutils

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 operating systems, 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 plattformunabhängig, 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.

Inhaltsverzeichnis

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 einer Schlüsselwort beginnend mit einem Punkt gebildet werden. Die meisten verfügbaren Direktiven sind architekturunabhängig, einige wenige hardwarespezifisch.[1]

Kommentare

GAS nutzt standardmäßig das # Zeichen für einen Einzelzeilenkommentar.

Beispiel:

pop  %edx # dies ist ein Kommentar
# dies ebenfalls
movl %edx,%eax

Kritik

Eine Quelle von Kritik an dem GAS ist, dass er für die x86 und x86-64 Architekturen die AT&T Assembler Syntax verwendet, anstatt der verbreiteteren Intel Syntax[2]. Jedoch, seit Version 2.10,[3] unterstützt GAS auch die Intel syntax über die Direktive .intel_syntax.[4]

Das obige Beispiel in Intel-Syntax:

.intel_syntax noprefix
pop edx         ;Intel-syntax kommentar
mov eax, edx
.att_syntax prefix

Inline Assembler

Der GNU Assembler zeichnet gegenüber anderen Assemblern auch durch eine Inline-Syntax aus die es ermöglicht den Assembler Teil effektiv in einen Hochsprachen-Teil einzubinden, dies geschieht durch eine Liste der Eingabe-, Ausgaberegister und der im Assemblerteil verwendeten Register.[5] Hierdurch kann der Kompiler einen Assembler Teil während der Optimierung ohne Übergabeoverheads an den Hochsprachenteil anbinden.

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

  __asm__ __volatile__  (".intel_syntax noprefix \n\t"
      "pop edx         ;Intel-syntax kommentar \n\t"
      "mov eax, edx                            \n\t"
      ".att_syntax prefix                      \n\t"
      : /* no output operands  */
      : "d" (save_var), "a" (temp_var) /* inputs operands*/
      : "eax", "edx" /* intern verwendete register (clobber list)*/);


Weblinks

Einzelnachweise

  1. The GNU Assembler - Assembler Directives. Abgerufen am 31. Dezember 2010.
  2. Randall Hyde: Which Assembler is the Best?. Abgerufen am 18. Mai 2008.
  3. GNU Assembler News, v2.1 supports Intel syntax (4. April 2008). Abgerufen am 2. Juli 2008.
  4. Ram Narayam (17. Oktober 2007): Linux assemblers: A comparison of GAS and NASM. Abgerufen am 2. Juli 2008.
  5. 5. Extended Asm. (englisch). www.ibiblio.org (1. März 2003). Abgerufen am 27. Juli 2011. „[...]we can also specify the operands. It allows us to specify the input registers, output registers and a list of clobbered registers

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • GNU Assembler — (GAS) Тип ассемблер Разработчик Фонд свободного ПО Написана на C Операционная система кроссплатформенное ПО Аппаратная платформа кроссплатформенное ПО Последняя версия 2.20.1 (3 ма …   Википедия

  • GNU Assembler — Le GNU Assembler (aussi appelé gas), que l on peut appeler par la commande as depuis un shell, est l assembleur du projet GNU. C est le back end par défaut de GCC. Il fait partie du paquet GNU Binary Utilities. Le premier objectif de ce paquet… …   Wikipédia en Français

  • GNU Assembler — El gas, o GNU Assembler, es el ensamblador del proyecto GNU. Es el back end por defecto del GNU Compiler Collection y es usado para compilar Linux y otros sistemas operativos como el sistema operativo GNU. Es una parte del paquete GNU Binutils, y …   Wikipedia Español

  • GNU Assembler — …   Wikipedia

  • GNU Assembleur — GNU Assembler GNU Assembler (aussi appelé gas), que l on peut appeler par la commande as depuis un shell, est l assembleur du projet GNU. C est le back end par défaut de GCC. Il fait partie du paquet GNU Binary Utilities. Le premier objectif de… …   Wikipédia en Français

  • GNU Binutils — Тип Инструментальное программное обеспечение Разработчик Проект GNU Последняя версия 2.22 (21 ноября 2011) Лицензия GNU GPL Сайт …   Википедия

  • GNU Binutils — Entwickler GNU Projekt Aktuelle Version 2.21 (8. Dezember 2010) Kategorie Programmierwerkzeug Lizenz GPL …   Deutsch Wikipedia

  • GNU's Not UNIX — GNU GNU Famille Type Unix Type de noyau …   Wikipédia en Français

  • GNU/Hurd — GNU GNU Famille Type Unix Type de noyau …   Wikipédia en Français

  • Gnu — Famille Type Unix Type de noyau …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”