Assembler

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Řádka 53: Řádka 53:
  
 
Flat Assembler (FASM) – open source assembler pro procesory x86, sebekompilující
 
Flat Assembler (FASM) – open source assembler pro procesory x86, sebekompilující
 +
 
Netwide Assembler (NASM) – open source assembler pro procesory x86, sám napsaný v jazyku C
 
Netwide Assembler (NASM) – open source assembler pro procesory x86, sám napsaný v jazyku C
 +
 
GNU Assembler (gas) – součást projektu GNU; je multiplatformní, používá se především pro kód vložený v programech v jazyce C
 
GNU Assembler (gas) – součást projektu GNU; je multiplatformní, používá se především pro kód vložený v programech v jazyce C
 +
 
Microsoft Macro Assembler (MASM) – překladač od firmy Microsoft
 
Microsoft Macro Assembler (MASM) – překladač od firmy Microsoft
 +
 
Turbo Assembler (TASM) – překladač firmy Borland
 
Turbo Assembler (TASM) – překladač firmy Borland

Verze z 21. 4. 2010, 11:00

  • Jazyk symbolických adres (zkratka JSA, anglicky assembly language) nebo také jazyk symbolických instrukcí je v informatice nízkoúrovňový programovací jazyk, který je tvořen symbolickou reprezentací jednotlivých strojových instrukcí a konstant potřebných pro vytvoření strojového kódu programu pro daný procesor. Symbolickou reprezentaci tvoří zpravidla výrobce procesoru a je založena na mnemotechnických zkratkách, které vyjadřují, co daná strojová instrukce dělá, označují symbolicky registr, slovní zkratku podmínky a podobně. JSA je proto závislý na konkrétním procesoru a zapsaný program je obtížně přenositelný na jinou platformu (na rozdíl od vysokoúrovňových programovacích jazyků).

Pro překlad JSA do strojového kódu se používá program, který nazýváme assembler (překladač). Oba názvy jsou často nesprávně zaměňovány.

Obsah

Historie

JSA se poprvé objevily v 50. letech 20. století, kdy byly označovány jako druhá generace programovacích jazyků. Eliminovaly většinu chyb vznikajících při programování a časovou náročnost první generace programovacích jazyků tím, že odstranily nutnost pamatovat si číselné kódy jednotlivých strojových instrukcí, nutnost vypočítávat adresy skoků a umístění dat a zjednodušením (zkrácením) zápisu programu. Ve své době byly široce využívány pro všechny typy programování. Avšak v 80. letech (u mikropočítačů v 90. letech) byly nahrazeny programovacími jazyky s vyšší úrovní abstrakce, které přinášely vyšší produktivitu programování.

V současné době jsou JSA používány zejména pro přímé ovládání hardware, přístup ke specializovaným instrukcím procesoru nebo pro kritické úseky, kde je nutný vysoký výkon. Typicky se jedná o ovladače zařízení, nízkoúrovňové embedded systémy a operační systémy reálného času.

Pokročilé překladače JSA poskytují doplňující nástroje pro správu a vývoj kódu, řízení překladu programu, a podporu ladění. Mezi hlavní prvky patří také podpora maker, pak nazýváme takový překladač makro assembler.

Terminologie

Anglické slovo assembler znamená sestavovatel a označuje pouze překladač, tj. program, který sestavuje strojový kód. Programovací jazyk zpracovávaný takovým překladačem se označuje JSA v angličtině se jmenuje assembly language.

Exaktní česká terminologie vychází z toho, že assembler označuje pouze překladač, zatímco programovací jazyk označuje výhradně jako jazyk symbolických adres (JSA), kterýžto výraz popisuje základní nabízenou výhodu – odstranění nutnosti ručně propočítávat veškeré adresy při překladu programu.

V praxi se ovšem velmi často (a zcela nesprávně) pro označení JSA používá termín assembler.

Charakteristika

JSA je programovací jazyk nejnižší úrovně a je závislý na strojovém kódu procesoru. Každá rodina procesorů má svůj vlastní odlišný JSA, protože ve strojových instrukcích různých rodin procesorů a možnosti rozdělování a adresování paměti bývají zásadní rozdíly. Každá firma vyrábějící procesory si definuje vlastní pravidla pro JSA svých procesorů, z kterých mohou (ale také nemusejí) vycházet nezávislí autoři a firmy.

Společným rysem drtivé většiny JSA je, že kódovou jednotkou je zde jeden řádek.

Program v JSA se skládá z

překladových direktiv tyto direktivy ovlivňují způsob překladu (například pro jakou verzi procesoru se překládá, zda se ignorují velká a malá písmena, zda se generuje výpis a s jakým stránkováním, atp.). Rovněž označují začátek a konec kódových sekcí.

strojových instrukcí symbolicky zapsané strojové instrukce jsou při překladu nahrazeny odpovídajícím strojovým kódem

definic obsahu paměti můžeme inicializovat obsah paměti, nebo vyhradit v paměti místo pro proměnné

návěstí návěstí umožňují pojmenovat místa v paměti počítače. Návěstí umístěné před instrukcí se používá jako pro definici bodu v programu, na který můžeme skočit, návěstí umístěné před definicí obsahu paměti se používá při odkazování na tuto paměť

maker makra slouží pro nahrazení často používaných sekvencí instrukcí, umožňují zpřehlednit a zjednodušit kód vytvořením pseudoinstrukcí a formalizací často používaných konstrukcí

podmínkových bloků podmínkové bloky dovolují generovat odlišný kód v závislosti na nastavení překladových symbolů, což může být užitečné například při ladění, nebo u kódu určeného pro více platforem

definic překladových symbolů překladové symboly pomáhají při vytváření dobře strukturovaného kódu programu

Překladače JSA

Existuje velké množství překladačů JSA, pro x86 například:

Flat Assembler (FASM) – open source assembler pro procesory x86, sebekompilující

Netwide Assembler (NASM) – open source assembler pro procesory x86, sám napsaný v jazyku C

GNU Assembler (gas) – součást projektu GNU; je multiplatformní, používá se především pro kód vložený v programech v jazyce C

Microsoft Macro Assembler (MASM) – překladač od firmy Microsoft

Turbo Assembler (TASM) – překladač firmy Borland

Osobní nástroje
Jmenné prostory
Varianty
Akce
Rychlá navigace
NEJ aktivity
Nejlepší předměty
Nejlepší MCU
SW-HW
Ostatní
Utility
Nástroje
Tisk/export