Ассемблер
- 1 year ago
- 0
- 0
Ассе́мблер (от англ. assembler — сборщик) — транслятор программы из текста на языке ассемблера , в программу на машинном языке .
Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры , операционной системы и варианта синтаксиса языка, поскольку работают с мнемониками машинных инструкций определённого процессора. Вместе с тем, ассемблеры могут быть мультиплатформенными или вовсе универсальными, то есть работать на разных платформах и операционных системах. Среди ассемблеров можно также выделить группу кросс-ассемблеров , имеющих возможность собирать машинный код и исполняемые модули (файлы) для архитектур, отличных от архитектуры и/или операционной системы, в которых работает сам ассемблер (например, трансляция программы для микроконтроллера ассемблером, работающим на компьютере ).
Многие современные ассемблеры являются макроассемблерами (от греч. μάκρος — большой, обширный), то есть макропроцессорами на базе языка ассемблера . Кроме макросов, ассемблеры при трансляции выполняют другие директивы , набор которых зависит не от аппаратной платформы, для которой транслируется программа, а от самого используемого транслятора.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. В свою очередь, результатом ассемблирования может быть не исполняемый, а объектный модуль , содержащий разрозненные блоки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью редактора связей (линкера) может быть получен исполняемый файл .
В отличие от компиляции программ на языках высокого уровня , ассемблирование является более или менее однозначным и обратимым процессом, поскольку в языке ассемблера каждой мнемонике соответствует одна машинная инструкция, в то время как в высокоуровневых языках каждое выражение может преобразовываться в большое число различных инструкций (операция, обратная ассемблированию, называется дизассемблированием ). Трансляцию ассемблерных программ иногда также называют компиляцией.
Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler ( TASM ), Microsoft Macro Assembler ( MASM ) и Watcom Assembler (WASM). Также в своё время был популярен простой ассемблер A86.
При появлении операционной системы Windows появилось расширение TASM, именуемое TASM 5+ (неофициальный пакет, созданный человеком с ником neonovd’), позволившее создавать программы для выполнения в среде Windows. Последняя известная версия TASM — 5.3, поддерживающая инструкции MMX, на данный момент включена в . Но официально развитие программы полностью остановлено. Последнее развитие компилятор получил благодаря современной среде разработки TASM Visual. Среда неофициальная, но с её помощью работа с компилятором многократно упрощается.
Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler . Она продолжает развиваться и по сей день, последние версии включены в наборы DDK . Но версия программы, направленная на создание программ для DOS, не развивается. Кроме того, Стивен Хатчессон создал пакет для программирования на MASM под названием «MASM32».
В состав операционной системы 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 .
MCS-51 ( Intel 8051 ) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблер ASM51, выпущенный корпорацией .
Кроме того, многие фирмы-разработчики программного обеспечения, такие, как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективным благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.
На данный момент для AVR существуют 4 компилятора производства Atmel (AVRStudio 3, AVRStudio 4, AVRStudio 5 и AVRStudio 6, AVRStudio 7).
В рамках проекта AVR-GCC (он же WinAVR ) существует компилятор avr-as (это портированный под AVR ассемблер GNU as из GCC ).
Также существует свободный минималистический компилятор avra .
Платные компиляторы: IAR (EWAVR), CodeVisionAVR, Imagecraft. Данные компиляторы поддерживают языки Assembler и C, а IAR ещё и C++.
Существует компилятор с языка BASIC — BASCOM, также платный.
Для процессоров ARM существует достаточно широкий выбор компиляторов, внутренняя реализация которых зависит от непосредственно производителя данного ARM-процессора либо разработчика IDE для работы с ARM-процессорами. Официальным компилятором ARM, непосредственно от
компании ARM
, является
, который входит в IDE
и поддерживает компиляцию программ на языках
Си
и
C++
.
Компиляторы от поставщиков ARM процессоров и разработчиков ARM toolchain:
Поставщик IDE | Компилятор | Поддерживаемые языки | Условия использования |
---|---|---|---|
Си / C++ /Assembler | Shareware (не более 32kb) | ||
Си / C++ /Assembler | Commercial | ||
Си / C++ /Assembler. | |||
Си / C++ /Assembler |
Средой разработки, выпускаемой компанией Microchip Technology для создания, редактирования и отладки программ для микроконтроллеров семейства PIC , является MPLAB . Среда включает в себя трансляторы с языка ассемблер MPASM и ASM30 для различных семейств микроконтроллеров PIC. Современные версии среды «MPLAB X IDE» являются мультиплатформенными и работают под различными операционными системами для ЭВМ. Среда распространяется бесплатно.
|
Этот раздел статьи
ещё
не написан
.
|
|
Этот раздел статьи
ещё
не написан
.
|
|
Этот раздел
не завершён
.
|
Программный пакет The PowerPC Software Development Toolset от IBM включает в себя ассемблер для PowerPC .
|
Этот раздел статьи
ещё
не написан
.
|
Является наследником ассемблера flat assembler (fasm) со схожим синтаксисом, но в отличие от fasm не привязан ни к какой архитектуре процессора. Его парадигмой является формирование посредством макросов выходных файлов любых форматов и с машинным кодом под любые архитектуры процессоров. Помимо макросов в fasmg присутствуют т. наз. CALM-инструкции (букв. «инструкции компилируемой сборки, подобные макросам») — собственные инструкции виртуальной машины ассемблера, эквивалентные макросам, которые преобразуются транслятором в байт-код. Архитектуру этих CALM-инструкций можно считать «родной» архитектурой ассемблера fasmg. В комплекте имеются наборы CALM-инструкций для эмуляции поддержки инструкций архитектур x86, x64, 8052, AVR; разработчиком могут быть описаны наборы CALM-инструкций для поддержки любой другой архитектуры, поддержки любых выходных форматов файлов. Имеются вариации транслятора для Mac OS , Linux и Windows .