Assembler

Assembler (z anglického  assembler  - assembler) - programový překladač z textu v jazyce symbolických instrukcí do programu ve strojovém jazyce .

Stejně jako samotný jazyk mají assemblery tendenci být specifické pro konkrétní architekturu , operační systém a variantu syntaxe jazyka v tom, že pracují na mnemotechnických pomůckách strojových instrukcí konkrétního procesoru. Assemblery mohou být zároveň multiplatformní nebo zcela univerzální, to znamená, že mohou pracovat na různých platformách a operačních systémech. Mezi assemblery lze také rozlišit skupinu cross assemblerů , které mají schopnost sestavit strojový kód a spustitelné moduly (soubory) pro jiné architektury, než je architektura a/nebo operační systém, ve kterém samotný assembler pracuje (např. program pro mikrokontrolér od assembleru běžící na počítači ).

Mnoho moderních assemblerů jsou makro assemblery (z řeckého μάκρος  - velký, rozsáhlý), tedy makroprocesory založené na assembleru [1] . Kromě maker provádějí assemblery při překladu další direktivy , jejichž sada nezávisí na hardwarové platformě, pro kterou je program překládán, ale na překladači samotném.

Sestavení nemusí být prvním ani posledním krokem na cestě k získání modulu spustitelného programu. Mnoho kompilátorů z programovacích jazyků na vysoké úrovni tedy vytváří výsledek ve formě programu v assembleru, který je dále zpracováván assemblerem. Výsledkem sestavení zase nemusí být spustitelný soubor, ale objektový modul obsahující samostatné bloky strojového kódu a programových dat, ze kterých (nebo z několika objektových modulů) lze později pomocí linkeru (linkeru) získat spustitelný soubor .

Na rozdíl od kompilace programů v jazycích na vysoké úrovni je sestavení víceméně jednoznačným a vratným procesem, protože v jazyce symbolických instrukcí každá mnemotechnická pomůcka odpovídá jedné strojové instrukci, zatímco v jazycích vysoké úrovně lze každý výraz převést na velké množství různé pokyny (obsluha, obrácená montáž se nazývá demontáž ). Překlad montážních programů se někdy také nazývá kompilace.

architektura x86

Assemblery pro DOS

Nejznámějšími assemblery pro operační systém DOS byly Borland Turbo Assembler ( TASM ), Microsoft Macro Assembler ( MASM ) a Watcom Assembler (WASM). Také svého času byl populární jednoduchý assembler A86.

Windows

S příchodem operačního systému Windows se objevilo rozšíření TASM s názvem TASM 5+ (neoficiální balíček vytvořený osobou s přezdívkou neonovd'), které umožňovalo vytvářet programy pro běh v prostředí Windows. Poslední známá verze TASM je 5.3, která podporuje instrukce MMX a je aktuálně zahrnuta v Turbo C++ Explorer . Oficiálně je ale vývoj programu zcela zastaven. Kompilátor se dočkal nejnovějšího vývoje díky modernímu vývojovému prostředí TASM Visual. Prostředí je neoficiální, ale s jeho pomocí je práce s kompilátorem značně zjednodušena.

Microsoft udržuje svůj produkt s názvem Microsoft Macro Assembler . Dodnes se vyvíjí, přičemž nejnovější verze jsou součástí DDK . Verze programu zaměřená na vytváření programů pro DOS se ale nevyvíjí. Stephen Hutchesson navíc vytvořil programovací balíček MASM s názvem „MASM32“.

GNU a Linux

Operační systém GNU obsahuje balíček binutils , který obsahuje assembler GAS (GNU Assembler) používající syntaxi AT&T , na rozdíl od většiny ostatních populárních assemblerů, které používají syntaxi Intel (podporované od verze 2.10).

Přenosné assemblery

Existuje také otevřený projekt assembleru, jehož verze jsou dostupné pro různé operační systémy a který umožňuje získat pro tyto systémy objektové soubory . Tento assembler se nazývá NASM (Netwide Assembler).

Yasm  je přepsaná verze NASM licencovaná od začátku pod licencí BSD (až na některé výjimky).

flat assembler (fasm) je mladý assembler pod BSD licencí upravenou tak, aby zakazovala přelicencování (včetně pod GNU GPL ). Existují verze pro KolibriOS , Linux , DOS a Windows ; používá syntaxi Intel a podporuje instrukce x86-64 .

RISC architektury

MCS-51

MCS-51 ( Intel 8051 ) je klasická architektura mikrokontroléru. K tomu existuje cross-assembler ASM51, vydaný společností MetaLink Corporation .

Kromě toho mnoho softwarových společností, jako je IAR nebo Keil, předložilo své verze assembleru. V některých případech je použití těchto assemblerů efektivnější díky pohodlné sadě direktiv a přítomnosti programovacího prostředí, které kombinuje profesionální assembler a programovací jazyk C, debugger a manažera softwarových projektů.

AVR

V současné době existují 4 kompilátory Atmel pro AVR ( AVRStudio 3, AVRStudio 4, AVRStudio 5 a AVRStudio 6, AVRStudio 7).

V rámci projektu AVR-GCC (aka WinAVR ) existuje kompilátor avr-as (jedná se o GNU as assembler portovaný pro AVR z GCC ).

K dispozici je také bezplatný minimalistický kompilátor avra [2] .

Placené kompilátory: IAR (EWAVR), CodeVisionAVR, Imagecraft. Tyto kompilátory podporují Assembler a C a IAR také podporuje C++.

Existuje překladač z jazyka BASIC - BASCOM, také placený.

ARM

Pro ARM procesory je poměrně široký výběr kompilátorů, jejichž interní implementace závisí přímo na výrobci daného ARM procesoru nebo vývojáři IDE pro práci s ARM procesory. Oficiálním kompilátorem ARM přímo od společnosti ARM je ARM Compiler 6 , který je součástí DS-5 Development Studio IDE a podporuje kompilaci programů C a C++ .
Kompilátory od dodavatelů procesorů ARM a vývojářů ARM toolchain:

poskytovatel IDE Kompilátor Podporované jazyky Podmínky použití
Keil mVision MDK-ARM C / C++ /Assembler Shareware (ne více než 32 kb)
IAR Embedded Workbench Kompilátor IAR C / C++ /Assembler komerční
COIDE kompilátor gcc. C / C++ /Assembler. Zdarma/komerční
skutečné studio Předkompilovaný kompilátor GCC. C / C++ /Assembler Zdarma/komerční

OBRÁZEK

Vývojové prostředí vydané Microchip Technology pro vytváření, editaci a ladění programů pro mikrokontroléry rodiny PIC je MPLAB . Prostředí zahrnuje překladače z jazyka MPASM a ASM30 pro různé rodiny mikrokontrolérů PIC. Moderní verze MPLAB X IDE jsou multiplatformní a fungují pod různými operačními systémy pro počítače. Médium je distribuováno zdarma.

AVR32

MSP430

PowerPC

Sada nástrojů IBM PowerPC Software Development Tools obsahuje assembler pro PowerPC .

MIPS

Architektura virtuálního stroje Assembler

fasmg assembler (architektura instrukcí CALM)

Jedná se o nástupce plochého assembleru (fasm) assembleru s podobnou syntaxí, ale na rozdíl od fasm není vázán na žádnou architekturu procesoru. Jeho paradigmatem je vytváření výstupních souborů libovolných formátů a se strojovým kódem pomocí maker pro jakoukoli architekturu procesoru. Kromě maker obsahuje fasmg tzv. Instrukce CALM (doslova „makro-jako zkompilované instrukce sestavení“) jsou nativní instrukce pro virtuální stroj assembleru, ekvivalentní makrům, které kompilátor převede na bajtový kód. Architekturu těchto instrukcí CALM lze považovat za "nativní" architekturu assembleru fasmg. Sada obsahuje sady instrukcí CALM pro emulaci podpory pro instrukce architektury x86, x64, 8052, AVR; vývojář může popsat sady instrukcí CALM pro podporu jakékoli jiné architektury, podporu všech formátů výstupních souborů. Varianty překladače jsou k dispozici pro Mac OS , Linux a Windows [3] [4] [5] .

Viz také

Poznámky

  1. Slovník kybernetiky / Ed. Akademik V. S. Michalevič . - 2. vyd. - K . : Hlavní vydání Ukrajinské sovětské encyklopedie pojmenované po M. P. Bazhanovi, 1989. - 751 s. - (C48). — 50 000 výtisků.  - ISBN 5-88500-008-5 .
  2. Assembler Project na SourceForge.net
  3. Co je plochý assembler g? . Získáno 5. října 2020. Archivováno z originálu dne 8. října 2020.
  4. plochý assembler g. Uživatelská příručka . Získáno 5. října 2020. Archivováno z originálu dne 27. srpna 2020.
  5. flat assembler g informace o verzi . Získáno 5. října 2020. Archivováno z originálu dne 8. října 2020.

Literatura