调用子函数的过程
主函数工作
参数入栈
顺序与虚参数在参数列表相反。int fun(int a, int b),b先,a后。
返回值入栈
此时,返回值还没有,位置先占住。
设置,保存返回地址
入栈返回地址,函数从子函数返回时,继续从这里执行。
跳转
eip=子函数入。
子函数工作
建栈
入栈当前ebp。
给ebp赋值,新的ebp要指向被调函数的栈底。所以,将当前函数栈顶地址esp直接赋值于ebp是最好的选择。
……执行子函数
参考文献
1.《编译系统透视:图解GCC编译器工作机制与实现原理》,新设计团队,机械工业出版社;