gpt4 book ai didi

assembly - 找出程序堆栈中 esp 和存储的返回地址之间的字节数

转载 作者:行者123 更新时间:2023-12-05 06:38:38 31 4
gpt4 key购买 nike

我找不到答案。从我读到的 %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 的标准调用约定,参数被放置在堆栈中,后跟被调用者应返回的地址。

关于assembly - 找出程序堆栈中 esp 和存储的返回地址之间的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684924/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com