控制转移(二)

本文详细阐述了在装载数据段和堆栈段寄存器时的特权级检测规则,包括选择子的有效性、描述符类型及访问权限等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      特权级转移这块一直觉得很混乱,理不出头绪,现在终于发现问题在哪了:不要将特权级和代码段、数据段、堆栈段搅在一块。代码段、数据段、堆栈段他们各自有自己的特权级处理规则。在学习的过程中还要有意识的提醒自己这种规则是哪种类型段的规则。三种类型的段相互配合才能组成一段可以运行的程序。既然三种类型之间的段有联系,三种类型段的特权级处理方式也会有自己的联系和区别。在学习中有意识的提醒自己正在阅读的规则是属于哪种类型的段的,就能很好的理解他们之间的联系和区别,从而使学习事半功倍。

      这里很多名称都很相似,很多都只一地之差,所指代的涵义相近又有区别,正确严谨的理解、并防止相互混淆这些名词很关键。

 

装载数据段寄存器时的特权检测

      在把选择子装入数据段寄存器DS、ES、FS、GS时,要进行检测:

      1、选择自不能为空

      2、选择子指定的描述符必须是数据段描述符、可读可执行的代码段或一致的可读可执行代码段

      3、对于数据段和可读可执行代码段,要求CPL<=DPL ,RPL<=DPL(即高特权级访问低特权级)

      4、对应段必须存在

 

 

装载堆栈段寄存器时的特权级检测

      1、选择子不能为空

      2、选择子指定的描述符必须是可读可写数据段描述符

      3、要求CPL=RPL=CPL

      4、对应段必须存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值