Registr EAX (Extended Accumulator Register)

EAX je historicky nejdůležitějším registrem v rodině procesorů Intel a AMD. Písmeno A v názvu znamená Accumulator (akumulátor), což odkazuje na jeho hlavní roli: shromažďování výsledků aritmetických a logických operací.

1. Struktura a zpětná kompatibilita

Registr EAX je 32bitový, ale je navržen tak, aby umožňoval přístup ke svým menším částem kvůli kompatibilitě se staršími 16bitovými a 8bitovými programy:

EAX (32 bitů): Celý registr (např. pro hodnotu 0x12345678).

AX (16 bitů): Spodní polovina registru EAX (0x5678).

AH (8 bitů): Horní (High) část 16bitového registru AX (0x56).

AL (8 bitů): Dolní (Low) část 16bitového registru AX (0x78).

V moderní 64bitové architektuře (x86-64) je tento registr dále rozšířen na 64 bitů a nazývá se RAX.

2. K čemu EAX slouží?

I když jsou dnešní registry převážně univerzální, EAX má v assembleru několik specifických a preferovaných rolí:

Aritmetika: Většina matematických operací (sčítání, odčítání) je na tomto registru optimalizována a probíhá v něm nejrychleji. U instrukcí jako násobení (MUL) nebo dělení (DIV) je použití EAX přímo vyžadováno hardwarem.

Návratové hodnoty funkcí: Toto je klíčová role v programování. Pokud funkce (např. v jazyce C++) vrací celé číslo, toto číslo je téměř vždy uloženo v registru EAX těsně před koncem funkce.

Vstup/Výstup (I/O): Používá se pro komunikaci s periferními zařízeními pomocí instrukcí IN a OUT.

3. Příklad v Assembleru

Když disassembler zobrazí kód, EAX v něm uvidíte neustále:

MOV EAX, 10 ; Vlož do registru EAX hodnotu 10
ADD EAX, 5 ; Přičti k hodnotě v EAX číslo 5 (výsledek 15 zůstává v EAX)
RET ; Funkce končí, vrací hodnotu 15 (která je v EAX)

4. Další sourozenci EAX

EAX je součástí skupiny čtyř základních datových registrů:

EAX: Akumulátor (výpočty, návratové hodnoty).

EBX: Base (ukazatel na data v paměti).

ECX: Counter (používán jako počítadlo v cyklech a pro řetězcové operace).

EDX: Data (rozšíření EAX při násobení/dělení, I/O operace).

Zajímavost: Pokud při ladění programu (debugování) vidíte, že po pádu aplikace je v registru EAX hodnota 0x00000000, často to znamená, že se program pokusil pracovat s „nulovým ukazatelem“ (Null Pointer), což je jedna z nejčastějších programátorských chyb.

Zpět na Vývoj a Hardware