关于函数返回地址与EBP的关系总结
当前EBP地址的值是上一个函数(就是调用当前函数的函数)的基址指针,这个值(一个地址)的值就是上一个函数刚开始调用时EBP所持有的值
当前EBP地址的下一个地址(也就是EBP+4,根据环境不同而不同,还可能是EBP+8)的值,就是当前函数的返回地址
当前EBP地址的值(也就是上一个函数的基址指针)的下一个地址的值就是上一个函数的返回地址
每次进入函数,首先压入的就是该函数的返回地址,然后生成栈帧,压入上个函数的基址指针(也就是上个函数的EBP的地址)
总结:
每个函数内部栈底EBP地址的值是上个函数的EBP地址,
每个函数内部栈底EBP+4地址的值就是该函数的返回地址
对自己所学的总结,也希望对大家有所帮助。