i386中與段機制有關的寄存器有:CS(16bits),DS(16bits),SS(16bits),ES(16bits),GDTR(32bits),LDTR(32bits),用於存放“影子”描述項的寄存器。
CS,DS,SS,ES之所以是16位寬度,是爲了與之前的CPU兼容。
i386的段機制的作用是將32邏輯位地址映射成32位的線性地址。32位的線性地址經過i386的頁機制映射成32位的物理地址。
GDTR,LDTR中存放的是段描述表的首地址。GDTR存放Global Descriptor Table的首地址,LDTR存放Local Descriptor Table的首地址。
CS,DS,SS,ES16位的結構爲:高13位爲段描述符下標,接下來的1位是TI,最低2位是RPL。
TI:0時使用GDTR,1時使用LDTR。RPL表示權限等級。0最高,3最低。
CPU根據CS,DS,SS,ES的13位段描述符下標,加上GDTR或LDTR表示的段描述表首地址,可找到相應的段描述符。
從段描述符裏面獲取段基地址,加上32位邏輯地址作爲偏移,計算出線性地址。