处理器一共提供了四个内存管理寄存器(GDTR,LDTR,IDTR,TR)来索引控制分段内存的数据结构。它们的结构如下:
系统表寄存器:
| 47/79 | | | | —– | ————— | ———- | | GDTR | 32/64位线性基址 | 16位表界限 | | IDTR | 32/64位线性基址 | 16位表界限 |
\ | 15-0 | 属性 | ||
Task Register LDTR | Seg.Sel. Seg.Sel. | 32/64位线性基址 32/64位线性基址 | 段界限 段界限 |
1.全局描述表寄存器(GDTR)
GDTR寄存器保存了全局描述表(GDT)的基址(在保护模式下32位,在IA-32e模式下64位)和16位的段界限。基址指定了GDT的起始地址(线性地址)。段界限指定了GDT的大小。
LGDT和SGDT分别用来加载和储存GDTR寄存器。在开机或重置CPU时,基址和界限被缺省为0和0x0FFFF。要想进入保护模式,GDTR必须被重新加载一个基址。
2.本地描述符表(LDTR)
LDTR保存了16位的段选择子,基址(在保护模式下32位,在IA-32e模式下64位),段界限和LDT的描述符。
LLDT和SLDT用来记载和储存GDTR寄存器的段选择子部分。并且加载到LDTR的段必须在GDT中有定义。当LLDT加载一个段选择子时,LDT描述符会自动被加载到LDTR。
在任务转换时,LDTR会自动为新任务加载段选择子和短描述符。当新的LDT被加载到LDTR时,LDTR不会自动保存。
在开机或重置CPU时,基址和界限被缺省为0和0x0FFFF。
3.中断描述符表寄存器(IDTR)
IDTR寄存器保存了全局描述表(IDT)的基址(在保护模式下32位,在IA-32e模式下64位)和16位的段界限。基址指定了IDT的起始地址(线性地址)。段界限指定了IDT的大小。
LIDT和SIDT分别用来加载和储存IDTR寄存器。在开机或重置CPU时,基址和界限被缺省为0和0x0FFFF。在CPU初始化时,其值可以被改变