GNU Assembler

GNU Assembler или GAS (вызывается командой as) — ассемблер проекта GNU; используется компилятором GCC[2]. Входит в пакет GNU Binutils. Кроссплатформенная программа, запускается и компилирует код для многочисленных процессорных архитектур. Распространяется на условиях свободной лицензии GPL 3.

GNU Assembler (GAS)
Тип ассемблер
Разработчик Фонд свободного ПО
Написана на C
Операционная система кроссплатформенное ПО
Первый выпуск 1986
Аппаратная платформа кроссплатформенное ПО
Последняя версия
  • toolset version of binutils[1]
Лицензия GPL 3
Сайт gnu.org/software/binutil…

Синтаксис

Синтаксис и директивы GAS на всех платформах в значительной степени схожи[3]. Директивы начинаются с точки. Многострочные комментарии обозначаются как в Си (/* … */). Однострочные комментарии на разных платформах обозначаются по-разному; например, в GAS для x86 и x86-64 они обозначаются как в C++ (// …) или как в sh (# …), в то время как в GAS для ARM они обозначаются символом @.

По умолчанию, GAS использует AT&T-синтаксис для x86 и x86-64, то есть регистры обозначаются префиксом % и регистр-приёмник указывается после источника; например код

  movl $42, %eax

помещает значение 42 в регистр eax.

В версии 2.10 (выпущенной в 2000 году) появилась поддержка варианта более привычного для x86 Intel-синтаксиса[4], вызываемого директивой .intel_syntax noprefix (директива .intel_syntax используется для варианта Intel-синтаксиса, в котором регистры обозначаются префиксом %). Например, код

.intel_syntax noprefix
  mov eax, 42

равноценен коду с AT&T-синтаксисом, указанному выше.

Примеры

Ниже приведены примеры программы Hello, world! для GAS под Linux.

Примечания

  1. https://sourceware.org/git/?p=binutils-gdb.git;a=tree
  2. Linux Assembly HOWTO: GAS (англ.) (недоступная ссылка). Дата обращения: 18 июля 2010. Архивировано 22 марта 2012 года.
  3. Using as: The GNU Assembler (англ.) (недоступная ссылка). Дата обращения: 18 июля 2010. Архивировано 22 марта 2012 года.
  4. gas/NEWS (англ.) (недоступная ссылка). Дата обращения: 17 июля 2010. Архивировано 18 февраля 2012 года.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.