Разработчик(и) | Проект GNU |
---|---|
Стабильный релиз | GNU Binutils 2.43.1 [1] / 17 августа 2024 г. ( 17 августа 2024 ) |
Написано в | С |
Платформа | Кроссплатформенный |
Тип | Ассемблер |
Лицензия | Стандартная общественная лицензия GNU v3 |
Веб-сайт | www.gnu.org/software/binutils/ |
GNU Assembler , обычно известный как gas или как , — это ассемблер, разработанный проектом GNU . Это бэкэнд по умолчанию для GCC . Он используется для сборки операционной системы GNU и ядра Linux , а также различного другого программного обеспечения. Он является частью пакета GNU Binutils .
Исполняемый файл GAS называется , стандартное имя для ассемблера Unix . GAS является кроссплатформенным и работает и собирается для ряда различных компьютерных архитектур . GAS — это свободное программное обеспечение , выпущенное под лицензией GNU General Public License v3.
Первая версия GAS была выпущена в 1986–1987 годах. [2] Она была написана Дином Элснером и поддерживала архитектуру VAX . [2]
GAS поддерживает общий синтаксис, который работает для всех поддерживаемых архитектур. Общий синтаксис включает директивы ассемблера и метод комментирования. Синтаксис по умолчанию — синтаксис AT&T .
GAS использует директивы ассемблера (также известные как псевдооперации), которые являются ключевыми словами, начинающимися с точки, которые ведут себя аналогично директивам препроцессора в языке программирования C. Хотя большинство доступных директив ассемблера действительны независимо от целевой архитектуры, некоторые директивы зависят от машины. [3]
Начиная с версии 2.10 синтаксис Intel можно использовать с помощью .intel_syntax
директивы. [4] [5] [6]
GAS поддерживает два стиля комментариев. [7]
Многострочный
Как и в языке C, многострочные комментарии начинаются и заканчиваются зеркальными парами слеш-звездочка:
/* комментарий */
Однострочный
Однострочные комментарии имеют несколько различных форматов, различающихся в зависимости от архитектуры, для которой они собираются.
Будучи бэкэндом для популярного набора компиляторов, а именно GCC, GNU Assembler очень широко используется при компиляции современного свободного и открытого программного обеспечения . GAS часто используется в качестве ассемблера в операционных системах Linux в сочетании с другим программным обеспечением GNU. Модифицированную версию GAS также можно найти в пакете инструментов разработки macOS .
Стандартная программа «Hello, world!» для Linux на IA-32 :
.глобальный _старт.text _start: movl $4 , %eax # 4 (код для системного вызова "write") -> регистр EAX movl $1 , %ebx # 1 (дескриптор файла для stdout) -> EBX (первый аргумент системного вызова) movl $msg , %ecx # 32-битный адрес строки сообщения -> ECX (второй аргумент) movl $len , %edx # длина строки сообщения -> EDX (третий аргумент) int $0x80 # прерывание с адресом 0x80 (128), которое вызывает процедуру системного вызова ядра movl $1 , %eax # 1 ("выход") -> EAX movl $0 , %ebx # 0 (успешно) -> EBX int $0x80 # см. предыдущее .data msg: .ascii "Hello, world!\n" # встроенная строка ascii len = . - msg # присваиваем (текущий адрес - адрес начала сообщения) символу "len"
Реализован новый псевдо-op .intel_syntax, позволяющий gas анализировать программы ассемблера i386 с синтаксисом Intel.