Асэмблер

**Асэмблер** (ад  — зборшчык) — гэта камп'ютарная праграма, якая перакладае зыходны код, напісаны на мове асэмблера, ў машынны код, зразумелы камп’ютару.

Асэмблеры могуць быць спецыфічныя для канкрэтнай архітэктуры камп'ютара, аперацыйнай сістэмы і варыянту сінтаксісу. Гэта звязана з тым, што асэмблеры працуюць з машыннымі інструкцыямі, якія залежаць ад пэўнага працэсара.

Асэмблеры таксама могуць быць мультыплатформеннымі ці ўніверсальнымі, гэта значыць працаваць на розных платформах і аперацыйных сістэмах. Акрамя таго, існуюць крос-асэмблеры, якія могуць збіраць машынны код і выкананыя модулі для архітэктур, адрозных ад архітэктуры і/ці аперацыйнай сістэмы, у якой працуе сам асэмблер. Напрыклад, крос-асэмблер можа трансляваць праграму для мікракантролера для асэмблераў, якія працуюць на камп'ютары.

Многія сучасныя асэмблеры з’яўляюцца макрапрацэсарамі, заснаванымі на мове асэмблера. Яны называюцца макроасемблер, таму што дазваляюць праграмісту запісваць паўторныя фрагменты кода ў выглядзе кароткіх імёнаў. Апроч макрасаў, асэмблеры пры трансляцыі выконваюць і іншыя дырэктывы, набор якіх залежыць не ад апаратнай платформы, на якую транслюецца праграма, а ад транслятара.

Асэмбляванне можа быць прамежкавым этапам падчас стварэнняў выканальнага файла. Кампілятары моў высокага ўзроўню часта генеруюць прамежкавы код на мове асэмблера, які затым апрацоўваецца асэмблерам. Асэмбляванне можа таксама выкарыстоўвацца для стварэння аб’ектных модуляў, якія змяшчаюць машынны код і даныя праграмы. Аб’ектныя модулі могуць затым аб’ядноўвацца ў выканальны файл з дапамогай лінкера.

Асэмбляванне, у адрозненне ад кампіляцыі праграм на мовах высокага ўзроўню, з’яўляецца больш адназначным і зварачальным працэсам. Гэта звязана з тым, што ў мове асэмблера кожнай мнемоніцы адпавядае адна машынная інструкцыя, у той час як у мовах высокага ўзроўню кожны выраз можа ператварацца ў вялікую колькасць розных інструкцый. Зваротны працэс асэмблявання называецца дызасэмбляваннем.

## Архітэктура x86 
### Асэмблеры для DOS 
Для аперацыйнай сістэмы DOS было распрацавана некалькі папулярных асэмблераў, у тым ліку Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) і Watcom Assembler (WASM). Таксама быў папулярны просты асэмблер A86

### Windows 
Для стварэння праграм для Windows быў распрацаваны неафіцыйны пакет TASM 5+, створаны чалавекам з нікам neonovd’. Апошняя афіцыйная версія TASM, якая падтрымлівае інструкцыі MMX, — 5.3, у цяперашні час уваходзіць у склад Turbo C++ Explorer. Распрацоўка праграмы спынена. Апошняе абнаўленне кампілятара адбылося дзякуючы неафіцыйнаму асяроддзю распрацоўкі TASM Visual. Асяроддзе спрашчае працу з кампілятарам.

Microsoft падтрымлівае свой асэмблер MASM. Апошнія версіі ўключаны ў наборы DDK. Аднак распрацоўка версіі MASM для DOS спынена. Акрамя таго, Стывен Хатчэсан стварыў пакет MASM32 для праграмавання на MASM.

### GNU і Linux 
Асэмблер GAS, які ўваходзіць у пакет binutils аперацыйнай сістэмы GNU, выкарыстоўвае AT&T-сінтаксіс, у адрозненне ад большасці іншых папулярных асэмблераў, якія выкарыстоўваюць Intel-сінтаксіс. Падтрымка Intel-сінтаксісу была дададзеная ў GAS у версіі 2.10.

### Пераносныя асэмблеры 
Існуе адкрыты праект асэмблера NASM (Netwide Assembler), версіі якога даступныя пад розныя аперацыйныя сістэмы. Гэты асэмблер дазваляе атрымліваць аб’ектныя файлы для гэтых сістэм.

Yasm — гэта цалкам перапісаны асэмблер NASM пад ліцэнзіяй BSD.

Flat Assembler (FASM) — гэта малады асэмблер пад мадыфікаванай BSD-ліцэнзіяй, якая забараняе пераліцэнзаванне. Ён даступны для розных аперацыйных сістэм, у тым ліку KolibriOS, Linux, DOS і Windows. FASM выкарыстоўвае Intel-сінтаксіс і падтрымлівае інструкцыі x86-64.

## Архітэктуры RISC 
### MCS-51 
Архітэктура MCS-51 (Intel 8051) з’яўляецца класічнай для мікракантролераў. Для яе ёсць крос-асэмблер ASM51, выпушчаны карпарацыяй MetaLink.

Акрамя таго, многія кампаніі-распрацоўшчыкі праграмнага забеспячэння, такія як IAR і Keil, прапануюць свае ўласныя асэмблеры. У некаторых выпадках гэтыя асэмблеры аказваюцца больш эфектыўнымі дзякуючы зручнаму набору дырэктыў і наяўнасці асяроддзя распрацоўкі, якая ўключае ў сябе прафесійны асэмблер, мову праграмавання C, адладчык і менеджар праектаў.

### AVR 
Atmel прапануе 4 кампілятара для AVR: AVRStudio 3, AVRStudio 4, AVRStudio 5 і AVRStudio 6, AVRStudio 7.

Праект AVR-GCC (ён жа WinAVR) уключае ў сябе кампілятар avr-as, які з’яўляецца партаваным пад AVR асэмблерам GNU as з GCC.

Avra — гэта вольны мінімалістычны кампілятар для AVR..

Платныя кампілятары для AVR: IAR (EWAVR), CodeVisionAVR, Imagecraft. Яны падтрымліваюць мовы асэмблера і C, а IAR таксама падтрымлівае C++.

Кампілятар BASCOM, які пераводзіць мову BASIC у машынны код для AVR, таксама з’яўляецца платным.

### ARM 
Для працэсараў ARM існуе мноства кампілятараў, якія могуць быць прадстаўлены вытворцам працэсара ці распрацоўшчыкам IDE. Афіцыйным кампілятарам ARM з’яўляецца ARM Compiler 6, які ўваходзіць у IDE DS-5 Development Studio і падтрымлівае кампіляцыю праграм на мовах Сі і C++.
Кампілятары ад пастаўшчыкоў ARM працэсараў і распрацоўшчыкаў ARM toolchain:

### PIC 
Кампанія Microchip Technology выпускае асяроддзе распрацоўкі MPLAB для стварэння, рэдагавання і адладкі праграм для мікракантролераў сямейства PIC. Асяроддзе ўключае ў сябе транслятары з мовы асэмблер MPASM і ASM30. Сучасныя версіі асяроддзя «MPLAB X IDE» мультиплатформенные і працуюць пад рознымі аперацыйнымі сістэмамі. Асяроддзе распаўсюджваецца бясплатна.

### AVR32 
### MSP430 
### PowerPC 
Асэмблер для PowerPC уваходзіць у склад праграмнага пакета The PowerPC Software Development Toolset ад IBM.

### MIPS 
## Архітэктура віртуальнай машыны асэмблера 
### Асэмблер fasmg (Архітэктура CALM-інструкцый) 
Fasmmg — гэта спадчыннік асэмблера fasm, але не прывязаны ні да якой архітэктуры працэсара. Ён выкарыстоўвае парадыгму фармавання выходных файлаў любых фарматаў і з машынным кодам пад любыя архітэктуры працэсараў пасродкам макрасаў. Акрамя макрасаў, у fasmg прысутнічаюць CALM-інструкцыі — уласныя інструкцыі віртуальнай машыны асэмблера, эквівалентныя макрасам, якія пераўтворацца транслятарам у байт-код. У камплекце маюцца наборы CALM-інструкцый для эмуляцыі падтрымкі інструкцый архітэктур x86, x64, 8052, AVR. Распрацоўнік можа апісаць наборы CALM-інструкцый для падтрымкі любой іншай архітэктуры ці выходных фарматаў файлаў. Ёсць варыяцыі транслятара для Mac OS, Linux і Windows.

## Гл. таксама 
* Мова асэмблера

## Крыніцы 
Катэгорыя:Мовы праграмавання нізкага ўзроўню