ESP EBP

    最近研究了下方法调用过程时,操作系统与CPU是如何实现这个过程的,cpu中的两个重要的寄存器来实现的,分别是exp和ebp.

    ESP 一直指向栈的栈顶,在intel x86的系统中,堆栈在内存中是从高地址向低地址扩展,因此,栈顶地址是不断减小的,越后入栈的数据,所处的地址也就越低。每一次嵌套调用时 esp表示当前方法的栈顶,在进入嵌套方法前,ebp入栈,ebp再保存当时esp的地址, esp在进入嵌套方法后,开始发生变化,此时,可以通过ebp返回到上一个方法的调用地址。再次嵌套时,esp表示当前方法的栈顶,ebp(上一个方法的esp)入栈,同时存放此时的esp,进入嵌套方法,此后,esp代表当前最新方法的栈顶, EBP代表上一个方法的esp,至此,可以根据ebp来从嵌套中返回到上个方法,后在根据栈上ebp继续找到上个方法的esp.跳出嵌套,直到根方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值