GNU Assembler

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

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

Синтаксис

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

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

  movl $42, %eax

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

В версии 2.10 (выпущенной в 2000 году) появилась поддержка варианта более привычного для x86 Intel-синтаксиса[5], вызываемого директивой .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. https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=ec2655a6a75bc61d21e6f8ddc1e9f9027a8914dd
  3. Linux Assembly HOWTO: GAS (англ.). Дата обращения: 18 июля 2010. Архивировано из оригинала 22 марта 2012 года.
  4. Using as: The GNU Assembler (англ.). Дата обращения: 18 июля 2010. Архивировано из оригинала 22 марта 2012 года.
  5. gas/NEWS (англ.). Дата обращения: 17 июля 2010. Архивировано из оригинала 18 февраля 2012 года.

Ссылки