Uživatelské nástroje

Nástroje pro tento web


it:dev:2gl

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