Забони ассемблер
Ин мақола ё фасл тарҷумаи нопурра аз забони хориҷаро дорад. |
Ассемблер (аз англ. assemble — ҷамъ намудан, сохтан) — компилятор аз забони ассемблер ба фармонҳои забони мошинӣ мебошад.
Под каждую архитектуру процессора и под каждую ОС или семейство ОС существует свой Ассемблер. Существуют также так называемые «кросс-ассемблеры», позволяющие на машинах с одной архитектурой (или в среде одной ОС) ассемблировать программы для другой целевой архитектуры или другой ОС, и получать исполняемый код в формате, пригодном к исполнению на целевой архитектуре или в среде целевой ОС.
Архитектура x86
вироишНаиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler (TASM) и Macro Assembler (MASM). Также в своё время был популярен простой ассемблер A86.
Изначально они поддерживали лишь 16-битные команды (до появления процессора Intel 80386). Более поздние версии TASM и MASM поддерживают и 32-битные команды, а также все команды, введённые в более современных процессорах, и системы команд, специфических для конкретной архитектуры (такие как, например, MMX, SSE, 3DNow! и т. д.).
При появлении операционной системы Microsoft Windows появилось расширение TASM, именуемое TASM32, позволившее создавать программы для выполнения в среде Windows. Последняя известная версия Tasm — пятая, включая различные к ней дополнения. Но официально развитие программы полностью остановлено.
Совсем по-другому обстоит дело с программой MASM. Она продолжает развиваться и по сей день, последние версии включены в наборы DDK. Но версия программы, направленная на создание программ для DOS, не развивается.
Для более удобного создания программ на ассемблере для Windows появился пакет, названный MASM32, автором которого является Стивен Хатчессон (aka hutch--). Более подробная информация доступна на сайте пакета MASM32 — www.masm32.com
Настоящие ценители языка используют ассемблер FASM, бескорыстно предоставленный в общее пользование и написанный Томазом Грижтаром (Tomasz Grysztar). Официальный сайт ассеблера FASM — www.flatassembler.net
Несколько иначе обстоит ситуация с ассемблерами для другой известной операционной системы GNU/Linux. В её состав входит компилятор gcc, включающий в себя ассемблер gas (GNU Assembler)… Но в нём используется AT&T синтаксис, в отличие от Intel-синтаксиса, используемого в большинстве остальных ассемблеров.
Переносимые ассемблеры
вироишТакже существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).
YASM это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключенями).
FASM — молодой, но быстро развивающийся и завоёвывающий популярность ассемблер, распространяется с исходным кодом, есть версии для KolibriOS, GNU/Linux и Microsoft Windows, использует Intel-синтаксис. Также fasm поддерживает инструкции AMD64. Достоинством является очень сильный макроязык, разнообразие форматов выходных файлов и несколько изменённый (в лучшую сторону, но несколько непривычный для «старой школы») синтаксис.
На данный момент существуют 2 компилятора производства Atmel (AVRStudio 3 и AVRStudio4). Вторая версия — попытка исправить не очень удачную первую. Так же асемблер есть в составе WinAVR.
Ассемблирование и компилирование
вироишПроцесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличии от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответветствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией.
См. также
вироишСсылки
вироиш- Учебник по ассемблеру Бойгонӣ шудааст 27 октябри 2007 сол.
- Крис Касперски. Cравнение ассемблерных трансляторов Бойгонӣ шудааст 30 ноябри 2007 сол.
- WASM.RU Бойгонӣ шудааст 11 Январ 2012 сол. (MASM,TASM,FASM,NASM,YASM)