Windows内核解析-代码段执行过程

汇编代码在CPU中的执行过程如下:

一、拆分段选择子

Windows内核解析-代码段执行过程_第1张图片

  • RPL:请求特权级别
  • TI:
    • TI=0查GDT表
    • TI=1查LDT表(Windows没有使用)
  • INDEX: 处理器将索引值乘以8再加上GDT表的基址,就是要加载的段描述符

二、查表得到段描述符

  1. 根据段选择子的TI值为0,查询GDT表
  2. 根据段选择子的INDEX的值,找到对应的段描述符

三、权限检查

  • 如果是非一致代码段,要求:CPL==DPL并且RPL<=DPL
  • 如果是一致代码段,要求:CPL>=DPL(系统内核提供的代码段,不会对系统内核有影响,可以给应用层直接使用)

四、加载段描述符

通过上面的权限检查,CPU会将段描述符加载到CS段寄存器中。

五、代码执行

CPU将CS.Base+Offset的值写入EIP中,然后执行CS:EIP处的代码,段间跳转结束。

你可能感兴趣的:(内核)