А86 (программное обеспечение)

Ассемблер и отладчик для MS-DOS
А86
Разработчик(и)Эрик Айзексон
Стабильный релиз
4.05 / 14 января 2000 г.
Операционная системаMS-DOS
Платформаx86
ТипАссемблер
ЛицензияЗапатентованный
Веб-сайтeji.com/a86

A86ассемблер для MS-DOS , который генерирует 16-битный код для семейства микропроцессоров Intel x86 . Написанный Эриком Айзексоном, он был выпущен как shareware в июне 1986 года. Ассемблер содержится в одном исполняемом файле размером 32 КБ и может напрямую создавать COM -файл или объектный файл для использования со стандартным компоновщиком . Он поставляется с отладчиком D86 . [1] [2] Скорость сборки является основным преимуществом, и Айзексо утверждает, что A86 может собирать 100 000 строк исходного кода в секунду на Pentium II или лучше. [3] Айзексоном была добавлена ​​поддержка 32-битных систем в середине 1990-х годов в виде A386 и D386 . [1] [2] Они не распространялись как shareware, но предоставлялись пользователям, зарегистрировавшим A86.

Поддерживая ожидаемый синтаксис x86, A86 и A386 не требуют директив , таких как ASSUME, SEGMENT, и PROC, на которые опираются Microsoft Macro Assembler и другие современные версии. A86 и A386 имеют собственный синтаксис для макросов и локальных меток, который несовместим с другими ассемблерами. Также есть множество синтаксических настроек, позволяющих сделать исходный код более лаконичным.

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

Особенности, характерные для A86

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

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

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

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

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

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

Код отпечатка пальца

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

Ссылки

  1. ^ ab Isaacson, Eric (2008). "A86/A386 assembler and D86/D386 debugger". Архивировано из оригинала 2 июля 2008 года . Получено 2008-07-02 .
  2. ^ ab Randall Hyde. "Which Assembler is the Best?". Архивировано из оригинала 15 мая 2008 года . Получено 2008-05-18 .
  3. ^ Айзексон, Эрик (2006). «Особенности A86/A386 и D86/D386».
  4. ^ Айзексон, Эрик (2006). «Программирование A386 и Win32».
  5. ^ Хейг, Джеймс (20 июля 2008 г.). «Константы килобайтов — простая и красивая идея, которая не прижилась». Программирование в 21 веке .
  6. ^ El-Khalil, Rakan; Keromyti, Angelos D. (2004). "Hydan: Hiding Information in Program Binaries" (PDF) . В Lopez, Javier; Qing, Sihan; Okamoto, Eiji (ред.). Информационная и коммуникационная безопасность: 6-я международная конференция, ICICS 2004, Малага, Испания, 27–29 октября 2004 г. : Труды . Lecture Notes in Computer Science. Vol. 3269. Springer . p. 190. ISBN 3-540-23563-9.
Взято с "https://en.wikipedia.org/w/index.php?title=A86_(программное обеспечение)&oldid=1254589089"