码迷,mamicode.com
首页 > 其他好文 > 详细

esp和ebp指针

时间:2016-11-13 19:33:53      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:stdio.h   技术   bsp   log   lin   close   ges   images   turn   

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

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

技术分享
 1 #include <stdio.h>
 2 
 3 int layout(int a){
 4     int b = a + 5;
 5     return b;    
 6 }
 7 
 8 int main(void){
 9     int a = 5;
10     layout(5);
11 
12     return 0;      
13 }
View Code

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

技术分享

 

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

技术分享

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

esp和ebp指针

标签:stdio.h   技术   bsp   log   lin   close   ges   images   turn   

原文地址:http://www.cnblogs.com/zhazhalovecoding/p/6059381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!