在函数调用的时候会内存分配给函数一段栈内存用于存放数据。
函数初次调用分配
1 ESP指针指向栈顶 EBP指向栈底,栈底属于高位地址,每次存入数据由栈顶来进行储存。
2 调用函数,EIP设定前一个函数结束,ESP所指地址存入EBP位置,此时ESP=EBP
3 ESP自动分配空间 ESP-0xch位置,同时进行下一次的存储。此时函数调用成功。
函数调用退栈
1 ESP=EBP 此时调用下一个函数,先还原EBP,之后读取EIP说明此函数进行调用。
2 ESP进行增位操作,自此循环进行调用。
图文详解:https://blog.csdn.net/xi_niuniu/article/details/44978207#commentBox