魂断白桦林

统计

最新评论

[导入]函数调用栈比较有意思

此时EBP寄存器就已经处于一个非常重要的地位,该寄存器中存储着栈中的一个地址(原EBP入栈后的栈顶),从该地址为基准,向上(栈底方向)能获取返回地址、参数值,向下(栈顶方向)能获取函数局部变量值,而该地址处又存储着上一层函数调用时的EBP值! 一般而言,ss:[ebp+4]处为返回地址,ss:[ebp+8]处为第一个参数值(最后一个入栈的参数值,此处假设其占用4字节内存),ss:[ebp-4]处为第一个局部变量,ss:[ebp]处为上一层EBP值。 由于EBP中的地址处总是“上一层函数调用时的EBP值”,而在每一层函数调用中,都能通过当时的EBP值“向上(栈底方向)能获取返回地址、参数值,向下(栈顶方向)能获取函数局部变量值”。 如此形成递归,直至到达栈底。这就是函数调用栈。
文章来源:http://blog.csdn.net/liigo/archive/2006/12/23/1456938.aspx

posted on 2006-12-23 22:44 lang_colys 阅读(87) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。