05 段描述符属性中的S位和Type域

同样,我们先来看一下段描述符的结构(这个结构要熟记于心,多看几遍加深记忆):
05 段描述符属性中的S位和Type域
上篇我们说了找到段描述符以后我们首先看的是P位,根据P位来判断是否进行后续的操作。
在整个GDT表里面,段描述符分成两大类,一类是数据段或者代码段的段描述符,另一类是系统段描述符。所以当我们要拆分一个段描述符的时候,首先通过P位来判断是否是一个有效的段描述符,然后通过S位来看这个描述符是系统描述符,还是我们第一类的数据段或代码段段描述符;当S为1的时候,这个段描述符就是代码段或数据段的描述符,当S为0的时候,该段描述符为系统段描述符。
我们S位拆分完以后,我们才再来了解Type域
当S位为1的时候我们的Type域可以通过下表来查看其含义(这个表在手册的2299页,手册下载地址请看硬编码篇):
05 段描述符属性中的S位和Type域
我们知道,只有P为1且S为1的时候才可能是代码段或数据段描述符,由于XP中只使用了DPL的两个级别,0和3,所以DPL要么全0要么全1,所以只有高四字节的第五个十六进制位为9或f则表示该描述符为代码段或数据段描述符。
05 段描述符属性中的S位和Type域
当S位为0的时候我们的Type域可以通过下表来查看其含义(这个表在手册的2301页,手册下载地址请看硬编码篇):
05 段描述符属性中的S位和Type域