摘要: 一个函数调用包括将数据(包括参数和返回值)和控制从代码一部分传到另一部分。还包括对函数内局部变量分配空间,并在退出时释放空间。 其中,转移控制到过程 和 从过程转移出控制——使用指令;局部变量的分配和释放通过 程序栈 来实现。1.栈帧结构 栈由高地址向低地址方向增长。对单个过程分配的栈称为 栈帧。以两个指针来界定:帧指针%ebp和栈指针%esp.栈指针是不断变化的,所以大多数信息基于帧指针%ebp.(注意在我的电脑上,帧指针是%esp,所以在汇编时总是由 movl 8(%esp) %eax来得到参数)。 从上图的栈帧结构中看到,假设P调用Q。P栈帧部分参数为传入Q的参数;P的返回地址形成P栈. 阅读全文
posted @ 2013-01-04 23:22 dandingyy 阅读(2879) 评论(0) 推荐(0) 编辑