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

下面继续汇编的笔记,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位转换的例子。稍微明白点了。




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