Ассемблер
Ассе́мблер (от англ. 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 входит пакет binutils, включающий в себя ассемблер gas (GNU Assembler), использующий AT&T-синтаксис, в отличие от большинства других популярных ассемблеров, которые используют Intel-синтаксис.
Переносимые ассемблеры
Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).
Yasm — это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).
flat assembler (fasm) — молодой ассемблер под модифицированной для запрета перелицензирования (включая под GNU GPL) BSD-лицензией. Есть версии для KolibriOS, GNU/Linux, DOS и Microsoft Windows, использует Intel-синтаксис и поддерживает инструкции AMD64.
Архитектуры RISC
MCS-51
MCS-51 (Intel 8051) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink. Кроме того, многие фирмы, разработчики программного обеспечения, такие как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев, применение этих ассемблеров оказывается более эффективным, благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.
AVR
На данный момент существуют 2 компилятора производства Atmel (AVRStudio 3 и AVRStudio4). Вторая версия — попытка исправить не очень удачную первую.
В рамках проекта AVR-GCC (он же WinAVR) существует компилятор avr-as (это портированный под AVR ассемблер GNU as из GCC).
Также существует свободный минималистический компилятор avra.[1]
ARM
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
AVR32
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
MSP430
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
PowerPC
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
Архитектуры MISC
Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
SeaForth
Существуют:
- 8-разрядные Flash-контроллеры семейства MCS-51
- 8-разрядные RISC-контроллеры семейства AVR (ATtiny, ATmega, classic AVR)
На данный момент семейство classic AVR трансформировано в ATtiny и ATmega
- 32-разрядные RISC-контроллеры семейства ARM Thumb высокой производительности (серия AT91)
Ассемблирование и компилирование
Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответветствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией.
Примечания
- ↑ Проект Ассемблер на сайте SourceForge.net
См. также
Ссылки
- Крис Касперски. Сравнение ассемблерных трансляторов
- WASM.RU (MASM, TASM, fasm, NASM, Yasm)
Литература
- Вострикова З. П. Программирование на языке ассемблера ЕС ЭВМ. М.: Наука, 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
- Калашников О. А. Ассемблер? Это просто! Учимся программировать. — БХВ-Петербург, 2005. — С. 374. — ISBN 978-5-94157-709-5
- Магда Ю. С. Ассемблер. Разработка и оптимизация Windows-приложений. СПб.: БХВ-Петербург, 2003.
- Нортон П., Соухэ Д. Язык ассемблера для IBM PC. М.: Компьютер, 1992.
- Владислав Пирогов. Ассемблер для Windows. — СПб.: БХВ-Петербург, 2007. — 896 с. — ISBN 978-5-9775-0084-5
- Владислав Пирогов. Ассемблер и дизассемблирование.. — СПб.: БХВ-Петербург, 2006. — 464 с. — ISBN 5-94157-677-3
- Сингер М. Мини-ЭВМ PDP-11: Программирование на языке ассемблера и организация машины. М.: Мир, 1984.
- Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера. М.: Радио и связь, 1989.
- Юров В., Хорошенко С. Assembler: учебный курс. — СПб.: «Питер», 2000. — С. 672. — ISBN 5-314-00047-4
- Юров В. И. Assembler : учебник для вузов. / 2-е изд. СПб.: «Питер», 2004.
- Юров В. И. Assembler. Практикум. : учебник для вузов / 2-е изд. СПб.: «Питер», 2004.
- Юров В. И. Assembler. Специальный справочник. СПб.: «Питер», 2000.
Программные пакеты для программирования на ассемблере |
|
---|---|
Среды разработки ПО | RadASM • WinAsm • ASMedit • Easy Code • Fresh • GSS Visual Assembler |
Трансляторы | MASM • gas • fasm • NASM • RosASM • TASM • Yasm • HLASM • прочие… |
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....