我发现 ESP 寄存器是当前堆栈指针,而 EBP 是当前堆栈帧的基指针。但是,我不理解这些定义(我刚刚开始学习如何在汇编程序中编码)。
我的理解是 ESP 指向堆栈本身,而 EBP 指向堆栈顶部的任何内容1。但这些只是我的猜测,它们很可能是不正确的。否则,像下面这样的陈述是什么意思?
MOV EBP, ESP
脚注 1:编者注:是的,这是不正确的。在标准术语中,“堆栈顶部”是 ESP 指向的位置,即使它是堆栈帧中的最低地址。类似于向上增长的堆栈数据结构,即使 x86 上的调用堆栈(与大多数 ISA 一样)向下增长。