stringtranslate.com

GNU Ассемблер

GNU Assembler , широко известный как gas или as , — это ассемблер, разработанный в рамках проекта GNU Project . Это серверная часть GCC по умолчанию . Он используется для сборки операционной системы GNU и ядра Linux , а также различного другого программного обеспечения. Это часть пакета GNU Binutils .

Исполняемый файл GAS имеет имя , стандартное имя ассемблера Unix . GAS является кроссплатформенным , работает и собирается для различных компьютерных архитектур . GAS — это бесплатное программное обеспечение , выпущенное под лицензией GNU General Public License v3.

История

Первая версия ГАС вышла в 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 , начиная с OS X.

Пример программы

Стандартное «Привет, мир!» программа для Linux на I386 :

.global _start.text _start: movl $4 , %eax # 4 (код для системного вызова «записи») -> регистр EAX movl $1 , %ebx # 1 (дескриптор файла для стандартного вывода) -> EBX (1-й аргумент системного вызова) movl $msg , % ecx # 32-битный адрес строки сообщения -> ECX (2-й аргумент) movl $len , %edx # длина строки сообщения -> EDX (3-й аргумент) 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"               

Смотрите также

Рекомендации

  1. Ник Клифтон (29 января 2024 г.). «Выпущена GNU Binutils 2.42» . Проверено 29 января 2024 г.
  2. ^ ab «Ассемблер GNU». CiteSeerX 10.1.1.32.4503 . 
  3. ^ «Ассемблер GNU - Директивы ассемблера» . Архивировано из оригинала 22 февраля 2012 г. Проверено 13 апреля 2008 г.
  4. ^ "Новости ассемблера GNU" .
  5. ^ «Синтаксис AT&T против синтаксиса Intel». Архивировано из оригинала 20 июня 2011 года . Проверено 28 июля 2014 г.
  6. ^ Рам Нараян (17 октября 2007 г.). «Ассемблеры Linux: сравнение GAS и NASM». IBM DeveloperWorks . Архивировано из оригинала 3 марта 2009 года . Проверено 28 июля 2014 г.
  7. ^ Red Hat Inc. «Использование как». Архивировано из оригинала 20 июня 2011 года . Проверено 10 января 2013 г.

Внешние ссылки