您的位置:首页 > 其它

函数调用的过程

2016-04-15 22:39 197 查看
1:栈帧
①:关于栈:
A:首先明确一点,栈是向下生长的,所谓的向下生长,即从高地址向低地址延伸。即变量从栈的高地址向低地址存储。



B:其次,介绍一组寄存器变量,ebp在未受改变时始终指向栈底,其作用常常用来寻址。

C:寄存器esp会随着数据的出栈和压栈而移动,在未受改变时始终指向栈顶。

2:函数的调用过程
见下图: mainCRTStartup()函数调用main()函数;



(1):先将调用者mainCRTStartup()函数的基址入栈,保存之前任务的信息。
(2):然后调用函数时将ebp指针移到mainCRTStartup()函数所占内存空间的栈顶。作为新的基址即main( )函数【栈底】的基址来使用。
(3):随后在被调用者main()函数的栈底上开辟相应的空间,作为被调用者main()函数的栈空间。
(4):函数返回后 esp及移动到ebp处,恢复为调用者的栈顶。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: