A86 (программное обеспечение) - Википедия - A86 (software)

A86
Разработчики)Эрик Исааксон
Стабильный выпуск
4.05 / 2006; 14 лет назад (2006)
Операционная системаMS-DOS
Платформаx86
ТипАссемблер
ЛицензияПроприетарный
Интернет сайтэджи.com/ a86

A86 это реклама ассемблер за MS-DOS который генерирует код для Intel x86 семья микропроцессоры. Написанный Эриком Исааксоном, он был впервые выпущен как условно-бесплатная в июне 1986 года. Ассемблер содержится в одном исполняемом файле размером 32 КБ и может напрямую создавать COM файл или объектный файл для использования со стандартным компоновщиком. Он поставляется с отладчик, D86.[1][2]

Поддерживая ожидаемый синтаксис x86, A86 в некоторых случаях допускает несколько более простые сокращения и не требует директив, таких как ПРЕДПОЛАГАТЬ и PROC, который Ассемблер макросов Microsoft и другие современники полагаются. Скорость сборки - главное преимущество. Исааксон утверждал, что A86 может собирать 100000 строк источника в секунду на Pentium II или лучше.[3]

Мишень A86 и D86 16 бит платформы x86. Isaacson добавил 32-битную поддержку в середине 1990-х годов в виде A386 и D386.[1][2] Они не распространялись как условно-бесплатное ПО, но предоставлялись пользователям, зарегистрировавшим A86.

Семейство продуктов A86 никогда не переносилось на Microsoft Windows, хотя можно использовать объектные файлы, созданные A386, с компоновщиком Windows.[4] Ассемблер не поддерживает 64-битный код.

Особенности A86

Любая метка, состоящая из одной буквы, за которой следует одна или несколько цифр, является локальной и может быть переопределена по мере необходимости, при этом каждое определение заменяет предыдущее. В руководстве рекомендуется использовать L1 через L9 для нормального кода и M1 через M9 в макросах. Предполагается, что ответвления к локальным меткам являются обратными, но прямая ветвь может быть указана путем добавления к ссылке на метку префикса символа "больше" (например,> L2).

Числа, начинающиеся с нуля, являются шестнадцатеричными, например 00FFвместо использования настраиваемого префикса. Буква "K" в конце означает кибибайты.[5] 16K то же самое, что 16 * 1024 или 16384.

Несколько регистров могут быть вставлены или извлечены в одной строке исходного кода. толкать eax, edx, ebp генерирует по одной инструкции для каждого из трех операндов.

Есть сокращение для условного выполнения одной инструкции. если z mov ax, bx выводит две инструкции: условную ветвь, за которой следует перемещение.

Если Ret указан как метка для условного перехода, он автоматически нацелен на инструкцию возврата в 8-битном диапазоне ветвления (например, jz ret).

Макросы используют другой синтаксис, чем современные ассемблеры.

Отпечаток кода

Ассемблер автоматически встраивает «отпечаток пальца» в сгенерированный код посредством определенного выбора функционально эквивалентных кодировок инструкций. Об этом говорится в разделе руководства, посвященном юридическим терминам. Отпечаток пальца позволяет определить, был ли код собран с помощью A86, а также различить зарегистрированные и незарегистрированные версии ассемблера. Для этого анализа требуется доступ к исходному коду.[6]

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

  1. ^ а б Исааксон, Эрик (2008). "Ассемблер A86 / A386 и отладчик D86 / D386". В архиве из оригинала 2 июля 2008 г.. Получено 2008-07-02.
  2. ^ а б Рэндалл Хайд. "Какой ассемблер лучший?". Архивировано из оригинал 15 мая 2008 г.. Получено 2008-05-18.
  3. ^ Исааксон, Эрик (2006). «Характеристики A86 / A386 и D86 / D386».
  4. ^ Исааксон, Эрик (2006). «Программирование A386 и Win32».
  5. ^ Гаага, Джеймс (20 июля 2008 г.). «Килобайтные константы, простая и красивая идея, которая еще не пришла». Программирование в 21 веке.
  6. ^ Эль-Халиль, Ракан; Керомити, Ангелос Д. (2004). «Hydan: скрытие информации в двоичных файлах программы» (PDF). В Лопесе, Хавьер; Цин, Сихан; Окамото, Эйдзи (ред.). Информационная и коммуникационная безопасность: 6-я международная конференция, ICICS 2004, Малага, Испания, 27–29 октября 2004 г .: Материалы. Конспект лекций по информатике. 3269. Springer. п. 190. ISBN  3-540-23563-9.