Developer (s) | Проект GNU |
---|---|
Стабильный выпуск | 2.34 / 1 февраля 2020 г.; 8 месяцев назад (2020-02-01) |
Написано на | C |
Платформе | Кросс-платформенность |
Тип | Ассемблер |
Лицензия | Стандартная общественная лицензия GNU v3 |
Веб-сайт | www.gnu.org / software / binutils / |
Пакет GNU Assembler, широко известный как gas или просто поскольку его исполняемое имя - это ассемблер, используемый проектом GNU. Это серверная часть по умолчанию для GCC. Он используется для сборки операционной системы GNU и ядра Linux, а также различного другого программного обеспечения. Это часть пакета GNU Binutils.
Исполняемый файл GAS назван как, стандартное имя для ассемблера Unix. GAS - это кроссплатформенный, и он работает и собирается для ряда различных компьютерных архитектур. Выпущенный под Стандартной общественной лицензией GNU v3, GAS является бесплатным программным обеспечением.
Опубликована первая версия GAS c. 1986–1987 годы. Он был написан Дином Элснером и поддерживал архитектуру VAX.
GAS поддерживает общий синтаксис, который работает для всех поддерживаемых архитектур. Общий синтаксис включает директивы ассемблера и метод комментирования.
GAS использует ассемблерные директивы (также известные как псевдооперации), которые представляют собой ключевые слова, начинающиеся с точки, которые ведут себя аналогично директивам препроцессора в C язык программирования. Хотя большинство доступных директив ассемблера действительны независимо от целевой архитектуры, некоторые директивы зависят от машины.
GAS поддерживает два стиля комментариев:
Как и в C, многострочные комментарии начинаются и заканчиваются зеркальными парами косой черты и звездочки:
/ * комментарий * /
Однострочные комментарии имеют несколько разные форматы, в зависимости от того, для какой архитектуры собирается.
GNU Assembler, являясь серверной частью популярного пакета компиляторов, а именно GCC, очень широко используется при компиляции современного программного обеспечения с открытым исходным кодом. GAS часто используется в качестве ассемблера в операционных системах GNU / Linux вместе с другим программным обеспечением GNU. Модифицированную версию GAS также можно найти в пакете инструментов разработки операционной системы Macintosh начиная с OS X.
Стандартное «Hello, world!» программа для Linux на IA-32 с использованием синтаксиса ATT по умолчанию :
.global _start.text _start: movl $ 4,% eax # 4 (код для "записи" syscall) ->Регистр EAX movl $ 1,% ebx # 1 (дескриптор файла для stdout) ->EBX (1-й аргумент для syscall) movl $ msg,% ecx # адрес строки msg ->ECX (2-й аргумент) movl $ len, % edx # len (32-битный адрес) ->EDX (3-й аргумент) int $ 0x80 # прерывание с местоположением 0x80 (128), которое вызывает процедуру системного вызова ядра movl $ 1,% eax # 1 ("выход") ->EAX movl $ 0,% ebx # 0 (успешно) ->EBX int $ 0x80 # см. предыдущее сообщение.data:.ascii "Hello, world! \ n" # inline ascii string len =. - msg # присвоить значение (текущий адрес - адрес начала сообщения) символу "len"
Начиная с версии 2.10, синтаксис Intel можно использовать с помощью .intel_syntax
.
В Wikibook X86 Assembly есть страница по теме: GAS Syntax |
as (1)
: портативный GNU-ассемблер - Linux Пользовательские команды Ручное