【发布时间】:2011-02-13 03:39:24
【问题描述】:
我知道这个话题已经在此处以及互联网上的其他地方讨论过令人作呕 - 但希望这个问题是一个简单的问题,因为我试图让我的头脑了解组装......
所以如果我理解正确,ebp(基指针)将指向堆栈的顶部,而 esp(堆栈指针)将指向底部——因为堆栈向下增长。 esp 因此指向“当前位置”。 因此,在函数调用中,一旦您将 ebp 保存在堆栈中,您就会插入一个新的堆栈帧 - 用于该函数。因此,在下图的情况下,如果您从 N-3 开始,您将通过函数调用转到 N-2。但是当你在 N-2 时 - 你的 ebp == 25 和 esp == 24 (至少在最初,在任何数据放入堆栈之前)?
这是正确的还是我在这里切线?
谢谢!
(来源:wikimedia.org)
【问题讨论】:
-
我将继续并将其标记为 C,因为这听起来像是您试图了解 C 编译器生成的代码是做什么的。如果不正确,请随意删除该标记.
标签: assembly x86 callstack backtrace stack-frame