ESP EBP

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jeanter/article/details/52737929

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

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

猜你喜欢

转载自blog.csdn.net/jeanter/article/details/52737929
EBP
今日推荐