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.