Ассемблер
Ассе́мблер (от англ. assembler — сборщик) — компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.
Как и сам язык (ассемблер), ассемблеры, как правило, специфичны конкретной архитектуре, операционной системе и варианту синтаксиса языка. Вместе с тем существуют мультиплатформенные или вовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзя написать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних можно также выделить группу кросс-ассемблеров, способных собирать машинный код и исполняемые модули (файлы) для других архитектур и ОС.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполнимый, а объектный модуль, содержащий разрозненные и непривязанные друг к другу части машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью программы-компоновщика («линкера») может быть скомпонован исполнимый файл.
Содержание |
[править] Архитектура x86
[править] Ассемблеры для DOS
Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM). Также в своё время был популярен простой ассемблер A86.
[править] Windows
При появлении операционной системы Windows появилось расширение TASM, именуемое TASM 5+ (неофициальный пакет, созданный человеком с ником !tE), позволившее создавать программы для выполнения в среде 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-синтаксис (поддерживается с версии 2.10).
[править] Переносимые ассемблеры
Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).
Yasm — это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).
flat assembler (fasm) — молодой ассемблер под модифицированной для запрета перелицензирования (в том числе под GNU GPL) BSD-лицензией. Есть версии для KolibriOS, Linux, DOS и Windows; использует Intel-синтаксис и поддерживает инструкции x86-64.
[править] Архитектуры RISC
[править] MCS-51
MCS-51 (Intel 8051) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink.
Кроме того, многие фирмы — разработчики программного обеспечения, такие как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективным благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.
[править] AVR
На данный момент существуют 3 компилятора производства Atmel (AVRStudio 3, AVRStudio 4 и AVRStudio 5).
В рамках проекта AVR-GCC (он же WinAVR) существует компилятор avr-as (это портированный под AVR ассемблер GNU as из GCC).
Также существует свободный минималистический компилятор avra[1].
[править] ARM
| Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
[править] PIC
Пример "программы" на языке Assembler для микроконтроллера PIC16F628A:
LIST p=16F628A
__CONFIG 0309H
STATUS equ 0x003
TRISB equ 0x086
PORTB equ 0x006
RP0 equ 5
org 0
goto start
start:
bsf STATUS,RP0
movlw .00
movwf TRISB
bcf STATUS,RP0
led:
movlw .170
movwf PORTB
goto led
end
[править] AVR32
| Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
[править] MSP430
| Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
[править] PowerPC
| Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
Программный пакет The PowerPC Software Development Toolset от IBM включает в себя ассемблер для PowerPC.
[править] MIPS
| Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
[править] Архитектуры MISC
| Этот раздел не завершён. Вы поможете проекту, исправив и дополнив его. |
[править] SeaForth
Существуют:
- 8-разрядные Flash-контроллеры семейства MCS-51
- 8-разрядные RISC-контроллеры семейства AVR (ATtiny, ATmega, classic AVR). На данный момент семейство classic AVR трансформировано в ATtiny и ATmega
- 8-разрядные RISC-контроллеры семейства PIC (PIC10,PIC12,PIC16,PIC18)
- 16-разрядные RISC-контроллеры семейства PIC (PIC24HJ/FJ,dsPIC30/33)
- 32-разрядные RISC-контроллеры семейства PIC (PIC32) с архитектурой MIPS32 M4K
- 32-разрядные RISC-контроллеры семейства ARM Thumb высокой производительности (серия AT91)
[править] Макроассемблер
Макроассемблер (от греч. μάκρος — большой, обширный) — макропроцессор, базовым языком которого является язык ассемблера.[2]
[править] Ассемблирование и компилирование
Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией.
[править] Примечания
- ↑ Проект Ассемблер на сайте SourceForge.net
- ↑ Словарь по кибернетике / Под редакцией академика В. С. Михалевича — 2-е. — Киев: Главная редакция Украинской Советской Энциклопедии имени М. П. Бажана, 1989. — 751 с. — (С48). — 50000 экз. — ISBN 5-88500-008-5.
[править] См. также
[править] Ссылки
- Крис Касперски. Сравнение ассемблерных трансляторов
[править] Литература
- Вострикова З. П. Программирование на языке ассемблера ЕС ЭВМ. М.: Наука, 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.
- Калашников О. А. Ассемблер? Это просто! Учимся программировать — БХВ-Петербург, 2011. — С. 336. — ISBN 978-5-9775-0591-8.
- Магда Ю. С. Ассемблер. Разработка и оптимизация Windows-приложений. СПб.: БХВ-Петербург, 2003.
- Нортон П., Соухэ Д. Язык ассемблера для IBM PC. М.: Компьютер, 1992.
- Владислав Пирогов. Ассемблер для Windows — СПб.: БХВ-Петербург, 2002. — 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.
|
|
|
|---|---|
| IDE | |
| Трансляторы | |
| Форматы синтаксиса | |