GNU Assembler , широко известный как газ или просто , как его имя исполняемого файла, это ассемблер используется проекта GNU . Это по умолчанию фоновое из GCC . Он используется для сборки операционной системы GNU и ядра Linux , а также различного другого программного обеспечения. Это часть пакета GNU Binutils .
Разработчики) | Проект GNU |
---|---|
Стабильный выпуск | 2.34 / 1 февраля 2020 г . |
Написано в | C |
Платформа | Кроссплатформенность |
Тип | Ассемблер |
Лицензия | Стандартная общественная лицензия GNU v3 |
Веб-сайт | www |
GAS исполняемым назван так , стандартное имя для Unix ассемблера. GAS является кроссплатформенным , он работает и собирается для различных компьютерных архитектур . GAS - бесплатное программное обеспечение, выпущенное под лицензией GNU General Public License v3 .
История
Первая версия ГАЗа была выпущена в 1986–1987 годах. [1] Он был написан Дином Элснером и поддерживал архитектуру VAX . [1]
Общий синтаксис
GAS поддерживает общий синтаксис, который работает для всех поддерживаемых архитектур. Общий синтаксис включает директивы ассемблера и метод комментирования.
Директивы
GAS использует ассемблер директивы (также известный как псевдо OPS), которые ключевые слова , начинающийся с периодом , которые ведут себя подобно директивы препроцессора в языке программирования Си . Хотя большинство доступных директив ассемблера действительны независимо от целевой архитектуры, некоторые директивы зависят от машины. [2]
Комментарии
GAS поддерживает два стиля комментариев: [3]
Многострочные комментарии
Как и в C, многострочные комментарии начинаются и заканчиваются зеркальными парами косой черты и звездочки:
/ * комментарий * /
Однострочные комментарии
Однострочные комментарии имеют несколько разных форматов, в зависимости от архитектуры, для которой создается сборка.
- Хеш-символы (#) используются для платформ: i386 , x86-64 , i960 , 68HC11 , 68HC12 , VAX , V850 , M32R , PowerPC , MIPS , M680x0 и RISC-V .
- Точки с запятой (;) используются в: семействе AMD 29k , ARC , семействе H8 / 300 , HPPA , PDP-11 , picoJava , Motorola и M32C .
- В знак (@) используется на ARM платформе.
- Двойная косая черта (//) используется на платформе AArch64 .
- Вертикальная черта (|) используется для обозначения комментариев при сборке на 680x0 .
- Восклицательный знак (!) На Renesas SH платформе.
Применение
GNU Assembler, являясь серверной частью популярного пакета компиляторов, а именно GCC, очень широко используется при компиляции современного программного обеспечения с открытым исходным кодом. GAS часто используется в качестве ассемблера в операционных системах GNU / Linux вместе с другим программным обеспечением GNU. Модифицированная версия GAS также можно найти в Macintosh инструментов разработки пакета операционной системы , так как OS X .
Пример программы
Стандартное «Привет, мир!» программа для Linux на IA-32 с использованием синтаксиса AT&T по умолчанию :
.global _start.text _start: movl $ 4 , % eax # 4 (код для системного вызова "запись") -> Регистр EAX movl $ 1 , % ebx # 1 (дескриптор файла для стандартного вывода) -> EBX (1-й аргумент системного вызова) movl $ msg , % ecx # адрес строки сообщения -> ECX (2-й аргумент) movl $ len , % edx # len (32-битный адрес) -> EDX (3-й аргумент) int $ 0x80 # прерывание с местоположением 0x80 (128), которое вызывает систему ядра процедура вызоваmovl $ 1 , % eax # 1 ("exit") -> EAX movl $ 0 , % ebx # 0 (успешно) -> EBX int $ 0x80 # см. предыдущее сообщение .data : .ascii "Hello, world! \ n" # встроенная строка ascii len = . - msg # присвоить значение (текущий адрес - адрес начала сообщения) символу "len"
Синтаксис Intel
Начиная с версии 2.10, можно использовать синтаксис Intel с помощью .intel_syntax
директивы. [4] [5] [6]
Смотрите также
- Набор инструментов GNU
- Библиотека дескрипторов двоичных файлов
- Сравнение ассемблеров
Рекомендации
- ^ a b «Ассемблер GNU». CiteSeerX 10.1.1.32.4503 . Цитировать журнал требует
|journal=
( помощь ) - ^ «Ассемблер GNU - Директивы Ассемблера» .
- ^ Red Hat Inc. «Использование как» . Проверено 10 января 2013 года .
- ^ "Новости GNU Assembler" .
- ^ «Синтаксис AT&T против синтаксиса Intel» . Проверено 28 июля 2014 .
- ^ Рам Нараян (17 октября 2007 г.). «Ассемблеры Linux: сравнение GAS и NASM» . IBM DeveloperWorks . Архивировано из оригинала 3 марта 2009 года . Проверено 28 июля 2014 .
Внешние ссылки
- Официальный веб-сайт
- Газовый мануал
- : портативный ассемблер GNU - Руководство по командам пользователя Linux