X86保护模式编程总结(4)

CPU标识:

EFLAGE标志位

8086CPU:       第12-15位始终置位

Intel286CPU: 在实模式下,12-15位始终清除

32位CPU:     在实模式下,第15位始终清除,第12-14位具有最后被装入的值.

                     在保护模式下,第14位具有最后被装入的值,第15位被清除.

第18位:    Intel486和pentium置位. Intel386清除.

第21位:    用于确定程序是否可执行CPUID指令

 

关于特权级:

CPL: 表示当前执行程序CS段的RPL.

RPL: 表示当前程序要访问某个段的请求特权.

DPL: 表示某个段描述符中描述一段的访问特权级

注: 比如当时皇帝的特权是CPL,皇帝要微服私访一个县(DPL),他只用了省级(RPL)的职位就吓到了县官.

 

CS段寄存器的最低两位保存当前特权级(CPL).这是正在运行的程序的特权级.

SS段寄存器的最底两位也保存CPL的副本.通常,CPL等于正从其中取指令的代码段

的特权级.当控制被转移到具有不同特权级的代码段时,CPL才改变.

 

段描述符包含被称为描述符特权级(DPL)的字段.DPL是适用于段的特权级.

 

段选择符包含有被称位请求者特权级(RPL)的字段,RPL是建立该选择符的过程试图去

代表的特权级. 如果RPL低于CPL的特权级,它就是超越CPL.当较高的特权级的程序接收来自较低特权级称许的段选择符时,RPL使存储器访问在较低特权级上执行.

 

当DPL<=CPL&RPL中较低的特权级时,段寄存器才能由指令装入.

 

CPL               访问限制

1                 所有特权级上的数据段都是可以访问的

2                   只有在特权级1-3上的数据段才可访问

3                   只有特权级3上的数据段才可访问

 

指针有效性检查指令:

ARPL:     检查指针的提供者是否被允许访问段

LAR x:    装入访问权,被用来证实指针引用的是有适当特权级和类型的段,操作数表示对应于访问权被检查的描述符的段选择符.((RPL||CPL>DPL)&&段选择符超出描述符表的表限?ZF=0:ZF=1)

LSL:       装入段限,允许软件测试段描述符的段限.如果由段选择符引用的描述符在CPL上是可读的.则此指令将32位的,根据描述符的并置段限字段和G位计算的字节粒度限值装入指定的32位寄存器.门描述符是不可访问的.(装入成功ZF=1,否则为0)

VERR:     读验证,验证段的可读性,如果该段可用CPL读,则ZR=1.

VERW:    写验证, 如果该段可用CPL读,则ZR=1.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值