esp和ebp指针

gdb调试的时候会出现esp和ebp这两个指针,而这两个指针为我们查看栈的情况提供了方便。

简单点说,esp指向栈顶,而ebp指向栈底。例如一段程序:

 #include <stdio.h>

 int layout(int a){
int b = a + ;
return b;
} int main(void){
int a = ;
layout(); return ;
}

执行过程中esp和ebp的状态如下:

esp和ebp指针

这时执行main函数中调用layout之前的栈的状态。调用layout时栈的状态如下:

esp和ebp指针

所以,esp和ebp指向当前执行函数的栈顶和栈底,这也是每次调用函数时我们需要保存ebp的原因。esp不用保存,A调用B时,A的栈顶就是B的栈底。

上一篇:effective C#之 - 使用属性代替成员变量


下一篇:@Bean、@Configuration注解