Registry procesoru

Registry jsou proměnné umístěné přímo v procesoru a jako s proměnnými s nimi lze také pracovat. S vývojem procesorů se také vyvýjely registry. Měly stále větší rozsah(16 bitové a 386+ 32 bitové) a bylo jich stále víc a víc.

Nyní popis jednotlivých registrů :

  1. AX, BX, CX, DX
       31            15     7      0     - číslo bitu
       -----------------------------
       |            EAX            |
       -----------------------------
       |             |      AX     |
       -----------------------------     - toto je složení registru EAX
       |             |  AH  |  AL  |
       -----------------------------
    
    Dolních 16 bitů registru EAX je samostatně přístupný registr AX. Ten je ještě rozdělen na horní a dolní byte - AH(high), AL(low). Do horních 16 bitů registru EAX se nedá přímo přistupovat jako do dolních 16. Obecně platí, že pokud je první písmenko názvu registru "E", je to 32-bitový registr. Zbytek je 16 nebo 8-bitový.

    Kromě popsaného registru EAX existují také EBX, ECX a EDX, které mají úplně identickou strukturu, pouze jiné písmenko.

  2. DI, SI, BP, SP
    Tyto registry nemají přímo přístupné 8-bitové části a používají se k určování offsetu v adrese v paměti.

  3. IP - Instruction pointer
    Tento registr píšu zvlášť, přestože má mnoho společného s předchozími. Registr je offset právě vykonávané instrukce. Adresa CS:IP je plná adresa právě vykonávaného kódu. Hlavní rozdíl je v tom, že registr nelze přímo ani číst, ani do něj zapisovat. Nepřímo to samozřejmě jde, ale o tom až mnohem déle.

  4. Segmentové registry CS, DS, ES, FS, GS, SS

    Tyto registry se jako jediné dají použít pro určení segmentu adresy v paměti. Lze do nich přiřazovat pouze jiný, nesegmentový registr nebo číslo uložené v paměti, už vůbec je nelze sčítat, odčítat atd. Registry CS, DS a ES jsou při spuštění programu shodně nastaveny na segment programu.

  5. Flags neboli vlajky
    Toto je také velmi speciální registr, který nelze přímo číst ani měnit. Po mnoha instrukcích procesor nastaví nějaké flagy(bity tohoto registru), podle kterých se řídí další běh programu.

       -----------------------------------------------------------------
       |   |   |   |   | O | D | I | T | S | Z |   | A |   | P |   | C |
       -----------------------------------------------------------------
    
    O - Overflow flagD - Direction flag I - Interrupt flag
    T - Trap(Trace) flagS - Sign flag Z - Zero flag
    A - Auxiliary Carry flagP - Parity flag C - Carry flag


Toto byl pouze stručný seznam, využití jednotlivých registrů budu vysvětlovat průběžně v dalších kapitolách mého skvělého kurzu.

Jak už jsem se zmínil v úvodu, veškeré 32-bitové registry existují až od 386. Dnes je tato poznámka spíše historická, ale znám ještě několik lidí, kteří doma tu 286-ku mají a proto je lepší si na začátku programu otestovat typ procesoru a na 286-ce doporučit uživateli nějakou prodejnu moderních počítačů.


Úvodní stránka Základ jazyka První program
Rejstřík

Stránku připravuje Lukáš Valenta, 1. v celostátním kole soutěže v programování, kategorie mládež.