码迷,mamicode.com
首页 > 系统相关 > 详细

Linux - 函数的栈帧

时间:2016-06-28 07:04:13      阅读:530      评论:0      收藏:0      [点我收藏+]

标签:

  栈帧(stack frame),机器用栈来传递过程参数,存储返回信息,保存寄存器用于以后恢复,以及本地存储。为单个过程(函数调用)分配的那部分栈称为栈帧。栈帧其实是两个指针寄存器,

寄存器%ebp为帧指针,而寄存器%esp为栈指针,当程序运行时,栈指针可以移动(大多数的信息的访问都是通过帧指针的)。总之简单一句话,栈帧的主要作用是用来控制和保存一个过程的

所有信息的。栈帧结构如下所示:

技术分享

  下面,我们通过一个简单的程序来了解栈帧:

技术分享

  简单的函数分析,如下图:

技术分享

  该函数的栈帧情况

技术分享

当*p=bug,修改栈帧中保存返回值的位置,使得函数不是正常返回,而是进入bug函数,当遇到exit函数,程序终止,不在跳回到main函数中终止。

Linux - 函数的栈帧

标签:

原文地址:http://www.cnblogs.com/hanxiaoyu/p/5622069.html

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