Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80751
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 132
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-06 21:51
个人简介

C、汇编;DOS、vxworks、Linux;数学;户外;

文章分类

全部博文(11)

文章存档

2016年(2)

2015年(2)

2013年(7)

我的朋友

分类: 服务器与存储

2013-05-10 16:18:07

80486中,处理器提供了4个系统地址寄存器 GDTRLDTRIDTRTR。这四个专用的寄存器用来引用在保护方式下使用,所以人们又称为保护方式寄存器。

1)全局描述符表寄存器GDTR48位寄存器。   用于存放全局描述符表GDT32位的线性基地址和16位的表限长值。基地址指定GDT表中字节0在线性地址空间中的地址,表长度指明GDT表的字节长度值。指令LGDTSGDT分别用于加载和保存GDTR寄存器的内容。在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF。在保护模式初始化过程中必须给GDTR加载一个新值。  

2)中断描述符表寄存器IDTR48位寄存器。   GDTR的作用类似,IDTR寄存器用于存放中断描述符表IDT32位线性基地址和16位表长度值。指令LIDTSIDT分别用于加载和保存IDTR寄存器的内容。在机器刚加电或处理器复位后,基地址被默认地设置为0,而长度值被设置成0xFFFF80486为每个中断或异常都定义了一个中断描述符。

3)局部描述符表寄存器LDTR16位寄存器。  其内保存的是16位的选择符。LDTRGDTR有所不同,定义也有所不同,对于LDT来说,首先要根据16位的选择符从GDT中选择一个LDT描述符(换句话说,LDT的描述符放在GDT中),送入描述符高速缓冲寄存器(64)中,以确定当前局部描述符LDT所在的位置的基地址和界限值。

4)任务寄存器TR16位寄存器。   其内保存的是任务状态段TSS16位段选择符。每项任务都配有一个任务状态段TSS,用来描述该任务的运行状态。就用16位的选择符来检索任务状态段。总是将当前任务的TSS的选择符放在TR中,而TSS的描述符放在TSS描述符高速缓冲寄存器中(针对这句话一下说明)

在保护方式下,选择器寄存器的D1 D0是特权标志,D2为描述符表类型标志,高13位是选择码,指出本段的描述符在由D2指出的描述符表中的逻辑排序。当一个段第一次被访问时,首先根据指令给出选择器的D2位及高13位,到内存中相应的描述符表内取出相应的描述符(64),送入对应的描述符高速缓冲寄存器(64),再从描述符中取出段基址进行逻辑到线性地址的变换。以后再访问该段时,直接从描述符寄存器(64)中取地址信息,免去从内存中选取描述符的过程,实现加速。

在系统中 GDTIDT 只有一个,所以GDTR,IDTR中存放的是该表入口地址;而任务不只一个,所以LDTRTR存放的是当前任务的选择符。

阅读(8950) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

wjlkoorey2582013-06-06 21:07:54

这么巧,仁兄最近也在研究段页式内存机制啊
互相学习一个....