Разработчики) | Эрик Исааксон |
---|---|
Стабильный выпуск | 4.05 / 2006 |
Операционная система | MS-DOS |
Платформа | x86 |
Тип | Ассемблер |
Лицензия | Проприетарный |
Веб-сайт | eji |
A86 - это коммерческий ассемблер для MS-DOS, который генерирует код для семейства микропроцессоров Intel x86 . Написанный Эриком Исааксоном, он был впервые выпущен как условно-бесплатное ПО в июне 1986 года. Ассемблер содержится в одном исполняемом файле размером 32 КБ и может напрямую создавать COM-файл или объектный файл для использования со стандартным компоновщиком. Он поставляется с отладчик , D86 . [1] [2]
Поддерживая ожидаемый синтаксис x86, A86 в некоторых случаях допускает несколько более простые сокращения и не требует директив, таких как ASSUME
и PROC
, на которые полагаются Microsoft Macro Assembler и другие современники. Скорость сборки - главное преимущество. Исааксон утверждал, что A86 может собирать 100 000 строк исходного кода в секунду на Pentium II или лучше. [3]
A86 и D86 нацелены на 16-битные платформы x86. В середине 1990-х Isaacson добавил 32-битную поддержку в виде 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.
Несколько регистров могут быть вставлены или извлечены из одной и той же исходной строки. push eax, edx, ebp
генерирует по одной инструкции для каждого из трех операндов.
Есть сокращение для условного выполнения одной инструкции. if z mov ax,bx
выводит две инструкции: условную ветвь, за которой следует перемещение.
Если ret
указан как метка для условного перехода, он автоматически нацелен на инструкцию возврата в пределах 8-битного диапазона ветвления (например, jz ret
).
Макросы используют другой синтаксис, чем современные ассемблеры.
Отпечаток кода [ править ]
Ассемблер автоматически встраивает «отпечаток пальца» в сгенерированный код посредством определенного выбора функционально эквивалентных кодировок инструкций. Об этом говорится в разделе руководства, посвященном юридическим терминам. Отпечаток пальца позволяет определить, был ли код собран с помощью A86, а также различать зарегистрированные и незарегистрированные версии ассемблера. Для этого анализа требуется доступ к исходному коду. [6]
Ссылки [ править ]
- ^ a b Исааксон, Эрик (2008). «Ассемблер A86 / A386 и отладчик D86 / D386» . Архивировано 2 июля 2008 года . Проверено 2 июля 2008 .
- ^ а б Рэндалл Хайд. "Какой ассемблер лучший?" . Архивировано из оригинального 15 мая 2008 года . Проверено 18 мая 2008 .
- ^ Айзексон, Эрик (2006). «Характеристики A86 / A386 и D86 / D386» .
- ^ Айзексон, Эрик (2006). «Программирование A386 и Win32» .
- ↑ Гаага, Джеймс (20 июля 2008 г.). «Килобайтные константы, простая и красивая идея, которая не прижилась» . Программирование в 21 веке .
- ↑ Эль-Халиль, Ракан; Керомити, Ангелос Д. (2004). «Hydan: сокрытие информации в двоичных файлах программы» (PDF) . В Лопесе, Хавьер; Цин, Сихан; Окамото, Эйдзи (ред.). Информационная и коммуникационная безопасность: 6-я Международная конференция, ICICS 2004, Малага, Испания, 27–29 октября 2004 г .: Материалы . Конспект лекций по информатике. 3269 . Springer . п. 190. ISBN 3-540-23563-9.