[转帖]80386保护模式_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2876 | 回复: 0   主题: [转帖]80386保护模式        下一篇 
    本主题由 koei 于 2014-5-2 16:13:43 移动
lostever
注册用户
等级:列兵
经验:109
发帖:90
精华:0
注册:2013-5-27
状态:离线
发送短消息息给lostever 加好友    发送短消息息给lostever 发消息
发表于: IP:您无权察看 2013-6-3 15:17:39 | [全部帖] [楼主帖] 楼主

下面继续汇编的笔记,80386的保护模式。

1.描述符长8个字节。按描述的对象来分,有存储段,系统段和门描述符。

存储段是存放由程序可以直接进行访问的代码和数据的段。

要注意8个字节的各个属性域。32位基址和20位的段界限各自分成了两部分存放,

这是为了使80286存储段描述符继续有效。

段属性中的P,DPL,DT,TYPE,G,D,AVL。

P是否有效段。

DPL特权级。

TYPE属性。

G作为粒度标志位,只对段界限有效,对段基址无效,段基址总是以字节为单位。

D符的意义根据TYPE的不同而不同。

AVL是软件可利用位。

于是:

DESCRIPTOR STRUC


LIMITL DW O ;段界限低16位

BASEL DW 0 ;基址低16位

BASEM DW 0 ;基址中间8位

ATTRIBUTES DW 0 ;属性段,含段界限的高4位

BASEH DW 0 ;基址高8位

DESCRIPTOR ENDS
2.GDT,LDT,IDT


描述符表本身可以形成一个特殊的数据段,可含8K个描述符。

GDT实现了段的共享,而LDT实现了段隔离和数据保护。任务间的切换不切换GDT,只切换LDT。

3.段选择子

实模式下,逻辑空间中存储单元的地址由段值和段内偏移组成。

保护模式下,由段选择子和段内偏移组成。

选择子长16位。13位描述符索引,1位引用指示,2位RPL请求特权级。

由于选择子用13位表示�����述符索引,所以可以区分8096个描述符,这就是描述符表最多可含8096个描述符的原因。

4.控制寄存器

CR0,保护控制位PE,PG;mp,ts,et,em.

CR1,保留。

CR2,页异常的线性地址保存。

CR3,页目录表始址。

5.系统地址寄存器

GDTR全局描述符表寄存器(48b)。GDT不能由GDT本身之内的描述符进行描述定义,所以提供了一个寄存器。

LDTR局部描述符表寄存器,规定当前任务使用的局部描述符表LDT。实际上每个任务的LDT作为系统的一个特殊段,

由一个描述符描述,并且描述符存放在GDT中。

IDTR中断描述符表寄存器,指向中断描述符表IDT。

TR任务状态段寄存器,指示描述了当前任务的任务状态段的描述符选择子,从而规定了当前任务的状态段。

6.模式间的跳转

更改CR0的PE位。为访问1M以上的内存空间需要打开A20地址线(92H端口的第二位置一)。

看了几个模式跳转以及32位~16位转换的例子。稍微明白点了。

该贴由koei转至本版2014-5-2 16:13:43




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论