处理器一共提供了四个内存管理寄存器(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初始化时,其值可以被改变

4.任务寄存器(TR)

Last moify: 2024-12-23 07:55:59
Build time:2025-07-18 09:41:42
Powered By asphinx