Bajt | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Prvek[bity] | limit[0-7] | limit[8-15] | base[0-7] | base[8-15] | base[16-23] | rights | extend | base[24-31] |
extend | význam |
---|---|
extend & 0Fh | limit[16-19] |
extend & 40h | S - size (u datovejch a instrukčních segmentú: 0: bits 16, else: bits 32) |
extend & 80h | G - granularity (jednotka limitu: 0: 1 B, else: 4096 B) |
rights | typ segmentu | maska význam |
---|---|---|
(rights&18h) == 10h | datovej segment (DS,SS) | 1 A - accessed (procesor nastavuje na 1 při každym přístupu, OS nuluje)
2 W - writable (povolen zápis) 4 ED - expansion direction 60h DPL - descriptor privilege level (/20h: požadovaná úroveň oprávnění) 80h P - present (přítomen ve fyzický paměti, jinak INT 0Bh) |
(rights&18h) == 18h | instrukční segment (CS) | 1 A - accessed 2 R - readable (povoleno čtení) 4 C - conforming (0: pouze ze stejný úrovně oprávnění, else: přebírá úroveň oprávnění volajícího) 60h DPL 80h P - present |
(rights&15h) == 1 | TSS | 2 active (právě aktivní proces) 8 386 (0: bits 16, else: bits 32) 60h DPL 80h P - present |
(rights&1Fh) == 2 | LDT | 60h DPL 80h P - present |
Slouží k tomu, aby program mohl volat funkce na jiný úrovni oprávnění (PL).
Bajt | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Prvek[bity] | ofs[0-7] | ofs[8-15] | sel[0-7] | sel[8-15] | stack_depth | rights | ofs[16-23] | ofs[24-31] |
Každá úroveň oprávnění má vlastní zásobník.
Aby bylo možný předat parametry funkci na jiný úrovni oprávnění, kopírujou se
do novýho zásobníku.
stack_depth (hloubka zásobníku) je velikost těhle parametrú.
rights | typ segmentu | maska význam |
---|---|---|
(rights&17h) == 4 | Call Gate | 8 386 (0: bits 16, else: bits 32) 60h DPL 80h P - present |
Bajt | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Prvek[bity] | ofs[0-7] | ofs[8-15] | sel[0-7] | sel[8-15] | 0 | rights | ofs[16-23] | ofs[24-31] |
rights | typ segmentu | maska význam |
---|---|---|
(rights&17h) == 5 | Task Gate | 60h DPL 80h P - present |
(rights&17h) == 6 | Int Gate (nuluje IF) | 8 386 (0: bits 16, else: bits 32) 60h DPL 80h P - present |
(rights&17h) == 7 | Trap Gate | 8 386 (0: bits 16, else: bits 32) 60h DPL 80h P - present |