it:dev:2gl
Obsah
Druhá generace jazyků (Assembler)
Druhá generace programovacích jazyků (2GL) představuje první úroveň abstrakce nad strojovým kódem (1GL). Jejím hlavním a v podstatě jediným zástupcem je Assembler (jazyk symbolických adres).
1. Charakteristika 2GL
Zatímco první generace vyžadovala zadávání instrukcí v binární nebo hexadecimální podobě, 2GL zavedla mnemotechnické pomůcky (mnemonics). Jsou to zkratky, které zastupují konkrétní instrukce procesoru.
- Nízká úroveň (Low-level): Jazyk je stále velmi blízko hardwaru. Programátor musí znát architekturu konkrétního procesoru.
- Závislost na platformě: Program napsaný v Assembleru pro procesor x86 nebude fungovat na procesoru ARM (např. v mobilním telefonu).
- Překlad (Assembling): Zdrojový kód v Assembleru musí být převeden do strojového kódu pomocí programu zvaného Assembler.
—
2. Klíčové koncepty a registry
V Assembleru nepracujeme s proměnnými v běžném slova smyslu, ale přímo s registry procesoru a adresami v paměti RAM.
Základní instrukce:
- MOV (Move): Přesun dat z jednoho místa na druhé (např. z paměti do registru).
- ADD / SUB: Aritmetické operace sčítání a odčítání.
- CMP (Compare): Porovnání dvou hodnot (nastavuje příznaky v procesoru).
- JMP / JNE / JE (Jump): Instrukce skoku, které umožňují vytvářet podmínky a cykly.
Příklad kódu (x86):
MOV EAX, 10 ; Ulož hodnotu 10 do registru EAX ADD EAX, 5 ; Přičti 5 k hodnotě v EAX (výsledek je 15) CMP EAX, 15 ; Porovnej EAX s 15 JE label_ok ; Pokud se rovnají, skoč na 'label_ok'
—
3. Výhody a nevýhody 2GL
| Výhody | Nevýhody |
|---|---|
| Maximální výkon: Kód je optimalizován přímo pro daný procesor. | Extrémní složitost: I jednoduchý úkol vyžaduje mnoho řádků kódu. |
| Plná kontrola: Přímý přístup k registru, přerušením a hardwaru. | Chybovost: Snadno dojde k chybám v paměti (Memory leaks, Buffer overflow). |
| Minimální velikost: Výsledný binární soubor je velmi malý. | Nepřenositelnost: Nutnost přepisovat kód pro jiný hardware. |
—
4. Využití Assembleru v současnosti
I přes nástup moderních jazyků jako Python nebo Java zůstává Assembler nezastupitelný v určitých oblastech:
- Ovladače zařízení (Drivers): Kde je vyžadována komunikace přímo s hardwarem.
- Embedded systémy: Programování mikročipů s velmi omezenou pamětí (např. v pračkách, mikrovlnkách).
- Reverzní inženýrství: Analýza škodlivého kódu (malwaru) a hledání bezpečnostních trhlin.
- Kritické části jader OS: Operační systémy jako Linux nebo Windows mají části kódu v Assembleru pro maximální rychlost.
—
5. Vztah k dalším generacím
- 1GL (Strojový kód): Jen čísla (0101… nebo 0xBF…).
- 2GL (Assembler): Symbolický zápis instrukcí (MOV, ADD).
- 3GL (C, Pascal, Java): Vyšší úroveň abstrakce, přenositelnost kódu mezi platformami.
Související články:
Tagy: dev programming assembler low-level hardware cpu 2gl
it/dev/2gl.txt · Poslední úprava: autor: admin
