什么是 esp和ebp?
ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
该文章写的很好
结论
esp会因为栈的变化而加或减,因为在汇编指令执行时,esp需要指向栈顶,所以会变化。
而 ebp是在call时则是保存着返回地址,通过call指令把bbp的这个值压入栈。(同时也是esp在进入该函数前的值);
在之后有个mov ebp,esp的操作。之后取参数时就通过ebp+偏移量取了。
esp是一个需要随时活动的打工人,它需要老是在顶部;ebp是一个在起初被esp赋予使命,在必要时寻找东西的打工人。