首页新闻找找看学习计划

iret无法从高特权级转移到低特权级

0
悬赏园豆:30 [已解决问题] 解决于 2019-02-16 17:24

我本来打算通过在栈中压入ring3的代码段选择子然后通过iret指令完成高特权级向低特权级的转移,但是出错了,信息如下

check_cs(0x0030): non-conforming code seg descriptor dpl != cpl, dpl=3, cpl=0

请问是iret指令不能实现这个功能么?如果不通过任务切换的方式,如何实现高特权级向低特权级的转移。

执行iret前栈的内容 (0x30是ring3代码段选择子,当前特权级为ring0)

FDProcess的主页 FDProcess | 初学一级 | 园豆:78
提问于:2019-02-15 11:01
< >
分享
最佳答案
0

解决了,忘记修改段选择子的RPL字段了,只有RPL字段的值大于CPL的时候才可以使用iret完成特权级从高相低的转移。

FDProcess | 初学一级 |园豆:78 | 2019-02-16 17:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册