控制寄存器和系统地址寄存器

控制寄存器    crx

cr0   指示cpu工作方式的控制位  包含启用和禁止分页管理机制的控制位  包含控制浮点协处理器操作的控制位   注意必须为0的位
cr2和cr3   分页管理机制使用   
1.保护控制位
cr0中位0  pe表示  为0实模式   为1  保护模式
位31 pg表示 为0 禁用分页      为1启用分页管理机制
注意1.不存在   pe为0  且pg为1的情况   即   实模式下开启分页机制
2.改变pg位     只有当所执行的程序的代码和至少有一部分数据在线性地址空间和物理地址空间具有相同的地址的情况下   才能改变pg位的值
 
2.协处理器控制位  cr0中的位1-位4分别标记mp     em    ts    et   具体略
3.cr2和cr3
控制寄存器由分页管理机制使用
cr2用于发生页异常时报告出错信息   当发生页异常时    cpu把引起异常的线性地址保存到cr2中   
cr3用于保存页目录表的物理地址    目录为页对其齐 所以仅仅高20位是有效的   低12位保留不用  
mov重置cr3的值    会导致分页机制高速缓冲区的内容无效    用此方法  可以在启用分页机制之前   就把pg位置为之前   预先杀心分页机制的告诉缓存
实模式下可以设置cr3   即初始化分页机制    
任务切换  cr3要被改变   如果新任务中cr3的值与原任务中cr3的值相同(两个任务共享页表)  那么cpu不刷新分页高速缓存    以便当任务共享页表时有比较快的执行速度
 
二  系统地址寄存器
GDTR   LDTR    IDTR      TR
 全局描述符表gdt    ldt    和idt  等都是保护方式下非常重要的特殊段  包含有位段机制所用的重要表格    
cpu采用一些特殊的寄存器保存这些段的基地址和界限    称为系统地址寄存器
GDTR    48位长   其中32位为基地址    16位为界限
  由于gdt本身不能由在gdt表中的描述符来描述   所以cpu需要采用GDTR位gdt这一特殊的系统段提供一个伪描述符     

段界限以字节为单位    由于段选择子中只有13位作为索引    每个描述符长度为8个字节    所有用16位的界限够了。
通常对于含有N个描述符的描述符表的段界限设为8*N-1
结构类型定义  伪描述符
  PDESC STRUC
LIMIT DW 0 ;段界限 16位
    BASE  DD 0		;段基地址    GDT表的首地址  32位
PDESC ENDS
2.局部描述符表寄存器LDTR
此寄存器规定当前任务使用的局部描述符表ldt	
a 16位段寄存器和不可见的高速缓冲寄存器组成
b 每个任务的ldt作为系统的一个特殊的段   其描述符位于gdt中
c 初始化和任务切换时  将对应任务的ldt的描述符的选择子装入LDTR中
d 装入ldtr的选择子必须确定一个位于gdt中的类型为LDT的系统段描述符   也即选择子中的TI 位必须是0  而且描述符中的类型字段位LDT
技巧  :空选择子装入LDTR,表示当前任务没有LDT  ,装入到段寄存器的选择子都必须指示GDT中的描述符,也即当前任务涉及的段均有GDT中的描述符来描述。如果再把一个TI位为1的选择子(LDT)装入到段寄存器会引起异常。
3.中断描述符表寄存器IDTR
IDTR指向中断描述符表IDT IDTR长度为48位 其中32位的基地址规定IDT基地址,16位的界限规定IDT的段界限。由于386
仅仅支持256个中断或者异常 所以idt最大长度为2k 以字节为单位的界限为7ffh
4.任务状态段寄存器TR
此寄存器指示描述当前任务的任务状态段的描述符选择子 定义了状态段 同时也有高速缓冲寄存器 为程序员不可见
由硬件完成 选择子不能为空 必须索引位于GDT中的描述符 类型必须为tss

x86保护模式 控制寄存器和系统地址寄存器的更多相关文章

  1. X86控制寄存器和系统地址寄存器

    80386控制寄存器和系统地址寄存器如下表所示.它们用于控制工作方式,控制分段管理机制及分页管理机制的实施. 控制寄存器 CRx BIT31 BIT30—BIT12 BIT11—BIT5 BIT4 B ...

  2. x86 保护模式 十 分页管理机制

    x86   保护模式  十  分页管理机制 8.386开始支持分页管理机制 段机制实现虚拟地址到线性地址的转换,分页机制实现线性地址到物理地址的转换.如果不启用分页,那么线性就是物理地址 一  分页管 ...

  3. X86保护模式 八操作系统类指令

    X86保护模式  八操作系统类指令 通常在操作系统代码中使用,应用程序中不应用这些指令 指令分为三种:实模式指令,任何权级下使用的指令.实模式权级0下可执行的指令和仅在保护模式下执行的指令 一  实模 ...

  4. x86保护模式 任务状态段和控制门

    x86保护模式    任务状态段和控制门 每个任务都有一个任务状态段TSS     用于保存任务的有关信息     在任务内权变和任务切换时  需要用到这些信息    任务内权变的转移和任务切换  一 ...

  5. x86保护模式-七中断和异常

    x86保护模式-七中断和异常 386相比较之前的cpu   增强了中断处理能力   并且引入了 异常概念 一 80386的中断和异常 为了支持多任务和虚拟存储器等功能,386把外部中断称为中断     ...

  6. x86保护模式 实模式与保护模式切换实例

    x86保护模式     实模式与保护模式切换实例 实例一 逻辑功能   以十六进制数的形式显示从内存地址110000h开始的256个字节的值    实现步骤: 1  切换保护方式的准备 2. 切换到保 ...

  7. x86保护模式 二 分段管理机制

    分段管理机制 段选择子和偏移地址的二维虚拟地址转换为一维的线性地址 一  段定义和虚拟地址到线性地址的转换 三个参数定义段:段基地址    段界限  和段属性    同时也是段描述符的结构 段基地址为 ...

  8. x86保护模式-六 控制转移

    控制转移可以分为两大类  :同一任务内的控制转移    和   任务间的控制转移(任务切换) 同一个任务内的控制转移可以分为段内转移 .特权级不变的段间转移和特权级改变的段间转移 段内转移与实模式相同 ...

  9. CPU保护模式深入探秘

    原文链接为:http://www.chinaunix.net/old_jh/23/483510.html 保护方式的体系结构 主要问题:          保护方式的寄存器模型          保护 ...

随机推荐

  1. jq或zp监听input的value改变问题

    $(document).on('input propertychange','#citySelectorValue',function () { alert("s"); } 以上J ...

  2. React 实践记录 02 Flux introduction

    Introduction 本文组成: React 官方文档翻译 相关实践心得. 内容上是Flux的介绍,例子将会在以后写出. 一旦稍微多了解一点React,很难避免听到Flux这个名词. Flux是一 ...

  3. 解决Git在更新项目时报凭证错误(Authentication failed)

    报此错误,大概率原因是用户名和密码弄错了,我用的阿里云,在网上找了半天发现Git远程仓库用的用户名和密码不是阿里云登陆用的账户密码,必须另外设置: 链接:code.aliyun.com/profile ...

  4. ACCESS中通过一个字段补齐更新另一个字段

    [干货从下面红字开始] 搞了好久的一个问题终于有结果…… 根据学生进出馆的次数和学生报名人数来分配自习间 学生报名是通过工号(学号)来报名的: 而门禁系统统计出来的数据有绝一大部分仅有 卡号没有 工号 ...

  5. iOS NSDate 常用日期相关函数的封装

    Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系. NSDate+Category.h 代码: #import & ...

  6. imageview加载本地和网络图片

    ImageView是Android程序中经常用到的组件,它将一个图片显示到屏幕上. 在UI xml定义一个ImageView如下: public void onCreate(Bundle savedI ...

  7. 【笨办法学Python】习题11:打印出改变了的输入

    print "How old are you?", age = raw_input() print "How tall are you?", height = ...

  8. SVN客户端--TortoiseSVN使用说明

    TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseS ...

  9. CentOS7.2+MySQL5.7_ yum源方式_ 安装配置教程

    1)访问mysql官方网站 #访问网站 https://dev.mysql.com/downloads/file/?id=470281 2)下载安装包到linux #进入文件存放路径 cd /usr/ ...

  10. 洛谷 P2253 好一个一中腰鼓!

    题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:“忽一人大呼:‘好一个安塞腰鼓!’满座寂然,无敢 ...