Ассемблер
Ассе́мблер (от assembler — рабочий-сборщик) — компьютерная программа, компилятор исходного текста программы написанной на языке ассемблера, в программу на машинном коде.
Содержание |
Как и сам язык (ассемблера), ассемблеры, как правило, специфичны конкретной архитектуре, операционной системе и варианту синтаксиса языка. Вместе с тем существуют, мультиплатформенные или вовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзя написать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних можно также выделить группу кросс-ассемблеров, способных собирать машинный код и исполняемые модули (файлы) для других архитектур и ОС.
Ассемблирование может быть не первым и не последним этапом на пути получения исполняемого модуля программы. Так многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальшейшем обрабатывает ассемблер. Так же, результатом ассемблирования может быть не исполняемый, а объектный модуль, содержащий разрозненные и непривязанные друг к другу кусочки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем может быть скомпонован исполняемый модуль, с помощью программы-компоновщика (или «линкера»).
Архитектура x86
Ассемблеры для DOS
Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM), и Watcom Assembler (WASM). Также в своё время был популярен простой ассемблер A86.
Microsoft Windows
При появлении операционной системы Microsoft Windows появилось расширение TASM, именуемое TASM32, позволившее создавать программы для выполнения в среде Windows. Последняя известная версия Tasm — 5.3, поддерживающая инструкциии MMX, на данный момент включена в Turbo C++ Explorer. Но официально развитие программы полностью остановлено.
Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler. Она продолжает развиваться и по сей день, последние версии включены в наборы DDK. Но версия программы, направленная на создание программ для DOS, не развивается. Кроме того, Стивен Хатчессон создал пакет для программирования на MASM под названием «MASM32».
GNU и GNU/Linux
В состав операционной системы GNU входит компилятор gcc, включающий в себя ассемблер gas (GNU Assembler), использующий AT&T синтаксис, в отличие от большинства других популярных ассемблеров, которые используют Intel-синтаксис.
Переносимые ассемблеры
Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).
YASM это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключенями).Сергей Петренко, МТС RED: ИБ-игроки строят экосистемы, чтобы обеспечить заказчика интегрированными средствами защиты
FASM (Flat Assembler) — молодой ассемблер под модифицированной для запрета перелицензирования (включая под GNU GPL) BSD‐лицензией. Есть версии для KolibriOS, GNU/Linux, MS-DOS и Microsoft Windows, использует Intel-синтаксис и поддерживает инструкции AMD64.
Архитектуры RISC
MCS-51
8051 — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink.
AVR
На данный момент существуют 2 компилятора производства Atmel (AVRStudio 3 и AVRStudio4). Вторая версия — попытка исправить не очень удачную первую. Так же ассемблер есть в составе WinAVR.
ARM
AVR32
MSP430
PowerPC
Архитектуры MISC
SeaForth
Ассемблирование и компилирование
Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответветствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией.
См. также
Литература
- Вострикова З. П. Программирование на языке ассемблера ЕС ЭВМ, М.: Наука, 1985.
- Галисеев Г. В. Ассемблер для Win 32. Самоучитель. — М.: «Диалектика», 2007. — С. 368. — ISBN 978-5-8459-1197-1
- Зубков С. В. Ассемблер для DOS, Windows и UNIX.
- Кип Ирвина Язык ассемблера для процессоров Intel = Assembly Language for Intel-Based Computers. — М.: «Вильямс», 2005. — С. 912. — ISBN 0-13-091013-9
- Магда Ю. С. Ассемблер. Разработка и оптимизация Windows-приложений, СПб.: БХВ-Петербург, 2003.
- Нортон П., Соухэ Д. Язык ассемблера для IBM PC, М.: Компьютер, 1992.
- Сингер М. Мини-ЭВМ PDP-11: Программирование на языке ассемблера и организация машины, М.:Мир, 1984.
- Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера, М.: Радио и связь, 1989.
- Юров В., Хорошенко С. Assembler: учебный курс. — СПб.: Питер, 2000. — С. 672. — ISBN 5-314-00047-4
- Юров В. И. Assembler, Изд. 2, учебник для вузов, СПб.: Питер, 2004.
- Юров В. И. Assembler. Практикум , Изд. 2, учебник для вузов, СПб.: Питер, 2004.
- Юров В. И. Assembler. Специальный справочник, СПб.: Питер, 2000.
Ссылки