80486中,处理器提供了4个系统地址寄存器 GDTR、LDTR、IDTR和TR。这四个专用的寄存器用来引用在保护方式下使用,所以人们又称为保护方式寄存器。
(1)全局描述符表寄存器GDTR,48位寄存器。 用于存放全局描述符表GDT的32位的线性基地址和16位的表限长值。基地址指定GDT表中字节0在线性地址空间中的地址,表长度指明GDT表的字节长度值。指令LGDT和SGDT分别用于加载和保存GDTR寄存器的内容。在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。在保护模式初始化过程中必须给GDTR加载一个新值。
(2)中断描述符表寄存器IDTR,48位寄存器。 与GDTR的作用类似,IDTR寄存器用于存放中断描述符表IDT的32位线性基地址和16位表长度值。指令LIDT和SIDT分别用于加载和保存IDTR寄存器的内容。在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。80486为每个中断或异常都定义了一个中断描述符。
(3)局部描述符表寄存器LDTR,16位寄存器。 其内保存的是16位的选择符。LDTR和GDTR有所不同,定义也有所不同,对于LDT来说,首先要根据16位的选择符从GDT中选择一个LDT描述符(换句话说,LDT的描述符放在GDT中),送入描述符高速缓冲寄存器(64位)中,以确定当前局部描述符LDT所在的位置的基地址和界限值。
(4)任务寄存器TR,16位寄存器。 其内保存的是任务状态段TSS的16位段选择符。每项任务都配有一个任务状态段TSS,用来描述该任务的运行状态。就用16位的选择符来检索任务状态段。总是将当前任务的TSS的选择符放在TR中,而TSS的描述符放在TSS描述符高速缓冲寄存器中(针对这句话一下说明)。
在保护方式下,选择器寄存器的D1 D0是特权标志,D2为描述符表类型标志,高13位是选择码,指出本段的描述符在由D2指出的描述符表中的逻辑排序。当一个段第一次被访问时,首先根据指令给出选择器的D2位及高13位,到内存中相应的描述符表内取出相应的描述符(64位),送入对应的描述符高速缓冲寄存器(64位),再从描述符中取出段基址进行逻辑到线性地址的变换。以后再访问该段时,直接从描述符寄存器(64位)中取地址信息,免去从内存中选取描述符的过程,实现加速。
在系统中 GDT,IDT 只有一个,所以GDTR,IDTR中存放的是该表入口地址;而任务不只一个,所以LDTR,TR存放的是当前任务的选择符。