PS:EBP是当前函数的存取指针,即存储或者读取数时的指针基地址;ESP就是当前函数的栈顶指针。每一次发生函数的调用(主函数调用子函数)时,在被调用函数初始时,都会把当前函数(主函数)的EBP压栈,以便从子函数返回到主函数时可以获取EBP。
下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码
假设执行函数前堆栈指针ESP为0xAAAAAAA ;EBP为0xAAAAAB0
push p2 ;参数2入栈, ESP -= 4h , ESP =
0xAAAAAAA - 4h =
0xAAAAAA6
push p1 ;参数1入栈, ESP -= 4h , ESP =

本文介绍了在Linux环境下,EBP和ESP寄存器在函数调用过程中的作用。EBP作为函数的存取指针,用于存储或读取数据时的基地址,而ESP则指示栈顶位置。在函数调用时,EBP会被压栈以保存当前函数的指针,便于子函数返回。通过__stdcall调用约定的示例,详细解析了EBP和ESP如何变化以及如何访问函数参数和局部变量。
最低0.47元/天 解锁文章
712

被折叠的 条评论
为什么被折叠?



