找出有多少字节分隔 esp 和程序堆栈上存储的返回地址



我很难找到答案。从我读到的内容来看,%ebp 有 32 位,将 %esp 移动到 %ebp 你仍然会有 32 位,然后减去 70 到 32,其余的我不明白。我是新手,所以我不是很精通。请给出详细的解释。谢谢!

以下是我遇到问题的问题。

在此指令序列的末尾,有多少字节将 esp 和程序堆栈上存储的返回地址分开?假设我们使用标准的 32 位 x86 调用约定调用此函数。

804847c functioname:
804847c: push %ebp
804847d: mov %esp,%ebp
804847f: sub $0x70,%esp
8048482: movl $0x0,0x4(%esp)
804848a: movl $0x8048580,(%esp)
sub $0x70,%esp

:在堆栈上保留 0x70 个字节。

movl $0x0,0x4(%esp):放置一个零 32 位值作为参数。

movl $0x8048580,(%esp):放置地址。下一个 ret 将跳到它。

根据标准调用约定(命名为cdecl(,参数被放置在堆栈上,后跟被调用方应返回的地址。

最新更新