ret向外层返回
摘要:
1,ret指令先从堆栈弹出返回地址指针(48位的selector:offset) 若selector的RPL等于当前的CPL,则直接开始向目标代码段转移的步骤,即执行jmp selector:offset 若selector的RPL大于当前的CPL,则引起向外层返回。CPL的变化也必然对应着堆栈切换。 2,内层堆栈弹掉先前堆栈切换时复制进来的参数,再弹出指向外层堆栈的指针并载入ss:esp,至此,堆栈切换到外层堆栈。 3,外层堆栈弹掉先前压入的参数。 4,检查数据段寄存器ds,es,fs,gs,以保证各自对应的段在外层cpl等级下仍是可访问,若不可访问,则装入空选择子避免保护空洞。 阅读全文
posted @ 2012-09-01 21:41 weiweishuo 阅读(207) 评论(0) 推荐(0) 编辑