保护模式中的特权级 之 从高特权级代码段 跳转到 低特权级代码段

本文详细解析了return指令的本质及用途,重点介绍了其在不同段间进行远跳转的实现原理,包括寄存器和栈的操作过程。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
return指令本质上是一个跳转指令,是用来做跳转的,而不是我们根深蒂固所理解的返回,只不过说,它最常用的场景是用于函数返回。用于做跳转 和 call 成对的出现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先将 ax寄存器值 bx寄存器值 压入栈中,然后通过远调用指令(通过选择子+偏移地址)调用函数,调用的函数在另一个段中,因此是远调用。调用函数时,栈的变化和之前学习的一样,原理不变,就是讲当前地址压入栈中,但是细节上,当前地址变成了两个:
第一个是段地址,其实就是选择子,当前所执行的代码段的选择子是放到 cs寄存器中的,所以cs寄存器的当前值会被压入到栈中
第二个是偏移地址,即eip的值 也会被压入栈中

这两个地址压入后,调用函数时的地址 也就在栈中了(栈顶)。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma浩然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值