Tvorba fyzické adresy v reálném a chráněném režimu
Reálný režim
Fyzická adresa je adresa, která nám slouží pro komunikaci mezi mP a pamětí, je na vodičích adresové sběrnice a určuje konkrétní paměťovou buňku. Tvoříme jí následovně. Vypočítává se v BIU(u 8086) nebo v AU(u 80286). Vyjdeme z logické adresy, která je virtuální podobou fyzické adresy a má 32 bitů a je ve tvaru Segment:Offset. Vezmeme tedy právě používanou segmentovou složku, vynásobíme ji 16ti (posun o 4 bity vlevo) a tím obdržíme 20ti bitovou bázi segmentu. K této adrese přičteme offset, který doplníme zleva 4 nulovými bity (bude též 20ti bitový) a z toho součtu nám vzejde výsledná 20ti bitová fyzická adresa.
Chráněný režim
Zde se rozšiřuje funkce segmentových registrů + 4 nové registry systémových adres (LDTR, GDTR, IDTR, TR). Programátorsky je přístupná pouze selektorová „viditelná“ část segmentu. Do té se zavede 13 bitový index segmentu, který určí deskriptor segmentu v LDT nebo GDT (podle bitu TI v selektoru). Poté se z příslušného deskriptoru přesunou do „neviditelné“ části segmentového registru, báze segmentu, jeho přístupová práva a limit (maximální velikost offsetu v daném segmentu). Dále se ze segmentového registru vezme jen bázová adresa(24b.) segmentu a ta se sečte s offsetovou složkou(16b.) a vznikne tak 24bitová fyzická adresa.
Selektor 16b:
15 3 2 0
Index | TI | RPL |
Index je 13bitový, tzn. Může pojmout až 8192 segmentů
TI – table indicator (GDT nebo LDT)
RPL – request privilege level
Deskriptor 64b:
63 47 39 15 0
0 | 0 | Slabika P.p. | Báze segmentu | Limit |
Slabika P.p. 8b:
P | DPL | Typ seg. | ED/C | W/R | A |
P-určuje, zda je segment přítomen v paměti nebo na disku
DPL-úroveň oprávnění, 00-nejvyšší-systém, 11-uživatelský program
Typ segmentu- 00-systémový segment/brána, 01-nepoužit, 10-datový, 11-instrukční
A-access, aktivuje se při přístupu k segmentu a též slouží k rozhodování, zda se může segment odložit na disk
ED,W-datový segment; směr expanze (data nahoru, zásobník dolů); povolení zápisu
C,R-instrukční segment; rozhoduje o získávání práv k neprověřeným programům; povolení čtení