我们知道,当调用了一个函数后,底层汇编大多数会使用ebp寻址的方式去查找参数,关于ebp与esp寻址可以看我这篇文章《ebp寻址》。
下面简单说总结一下ebp几个偏移的含义:
ebp: 存放调用函数前ebp的值
ebp+4:存放call指令调用函数时压入堆栈的返回地址
ebp+8:存放函数传参的第一个参数地址
ebp+C: 存放函数传参的第二个参数地址
ebp+10: .........
ebp-4: 从ebp-4开始到函数提升堆栈后的栈顶之间被称为缓冲区(一般缓冲区栈顶是:函数调用时提升堆栈后esp的值),我们常说的局部变量都是定义在这里,所以大致可以理解为函数中ebp-4往上就是定义局部变量的位置
关于32位汇编中ebp常用的各个偏移的含义,先总结这么多,因为长时间不使用汇编可能会忘了这些东西,忘了的话翻到这篇文章看看就行了。