====== 2GL: Druhá generace programovacích jazyků ====== **2GL** (Second-Generation Language) označuje jazyky symbolických instrukcí, známé především pod souhrnným názvem **Asembler** (Assembly Language). Tato generace představuje první krok od čistě binárního kódu k textovému zápisu, který je srozumitelný pro člověka. Stále se jedná o **nízkoúrovňový jazyk** (low-level language), což znamená, že je úzce spjat s architekturou konkrétního procesoru. ===== 1. Charakteristika 2GL ===== Na rozdíl od první generace ([[it:lang:1GL|1GL]]), kde se používaly nuly a jedničky, zavádí 2GL tzv. **mnemotechnické pomůcky** (zkratky). * **Mnemotechnické kódy:** Místo binárního kódu "01101101" píše programátor zkratku jako ADD, MOV, SUB nebo JMP. * **Symbolické adresy:** Programátor nemusí znát přesnou číselnou adresu v paměti, ale může používat názvy (např. proměnné). * **Asembler (Překladač):** Program napsaný v 2GL musí být převeden do 1GL pomocí speciálního programu zvaného **asembler**. * **Závislost na hardwaru:** Kód je stále psán pro konkrétní instrukční sadu (např. x86, ARM). Kód pro jeden procesor nebude fungovat na jiném. ===== 2. Ukázka kódu (x86 Assembly) ===== Typický program v asembleru vypadá jako posloupnost instrukcí pro manipulaci s registry procesoru: MOV AL, 61h ; Načti hexadecimální hodnotu 61 do registru AL ADD AL, 1 ; Přičti 1 k hodnotě v registru AL RET ; Návrat z funkce ===== 3. Výhody a nevýhody ===== ^ Výhody ^ Nevýhody ^ | **Vysoký výkon:** Kód je téměř stejně rychlý jako strojový kód. | **Nízká čitelnost:** I jednoduché operace vyžadují mnoho řádků kódu. | | **Přímý přístup k HW:** Ideální pro ovladače a nízkoúrovňové systémy. | **Žádná přenositelnost:** Program je vázán na konkrétní hardware. | | **Malá velikost:** Výsledný program zabírá minimum paměti. | **Složitý vývoj:** Programátor musí detailně znát architekturu CPU. | ===== 4. Současné využití ===== I když byla 2GL nahrazena vyššími jazyky ([[it:lang:3GL|3GL]]), dodnes se používá v těchto oblastech: * **Embedded systémy:** Programování mikrokontrolérů (pračky, automobily). * **Ovladače hardwaru:** Tam, kde je vyžadována maximální rychlost a kontrola. * **Jádra operačních systémů:** Kritické části systému, které komunikují s CPU. * **Reverzní inženýrství:** Analýza malwaru nebo uzavřeného softwaru. ---- //Související články:// * [[it:lang:1GL|1GL: Strojový kód]] * [[it:lang:3GL|3GL: Vyšší programovací jazyky]] * [[it:hw:registers|Registry procesoru]] //Tagy: {{tag>historie programming_languages 2GL assembly low-level}}//