GNU-ассемблер

Бесплатный ассемблер с открытым исходным кодом
GNU-ассемблер
Разработчик(и)Проект GNU
Стабильный релиз
GNU Binutils 2.43.1 [1]  / 17 августа 2024 г. ; 5 месяцев назад ( 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"               

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

Ссылки

  1. Ник Клифтон (17 августа 2024 г.). "GNU Binutils 2.43.1 released" . Получено 18 августа 2024 г. .
  2. ^ ab «Ассемблер GNU». CiteSeerX 10.1.1.32.4503 . 
  3. ^ "GNU Assembler - Assembler Directives". Архивировано из оригинала 2012-02-22 . Получено 2008-04-13 .
  4. ^ "GNU Assembler News". Реализован новый псевдо-op .intel_syntax, позволяющий gas анализировать программы ассемблера i386 с синтаксисом Intel.
  5. ^ "AT&T Syntax против Intel Syntax". Архивировано из оригинала 20 июня 2011 года . Получено 28 июля 2014 года .
  6. ^ Рам Нараян (2007-10-17). "Ассемблерные системы Linux: сравнение GAS и NASM". IBM DeveloperWorks. Архивировано из оригинала 3 марта 2009 года . Получено 28 июля 2014 года .
  7. ^ Red Hat Inc. "Использование как". Архивировано из оригинала 20 июня 2011 г. Получено 10 января 2013 г.
  • Официальный сайт
  • Газ руководство
  • as(1): переносимый ассемблер GNU –  Руководство по командам пользователя Linux
Взято с "https://en.wikipedia.org/w/index.php?title=GNU_Assembler&oldid=1254440668"