gpt4 book ai didi

汇编:如果 push 命令已经做了减法,为什么我们还要减去 esp?

转载 作者:行者123 更新时间:2023-12-03 22:19:39 24 4
gpt4 key购买 nike

根据反汇编程序,有一些函数看起来像

sub esp, 0x20
push some registers
do some stuffs
pop the registers
add esp, 0x20
ret

一开始我以为是为局部变量分配内存,后来发现还有其他的函数看起来很简单

push some registers
do stuffs
pop some registers
ret

它不会手动减去 esp。

我进行了一些搜索,显然 push 命令已经自动减去 esp 以得到推送值的大小;如果是这样,那么为什么在第一个函数中我们仍然需要在函数开头手动减去esp?或者换句话说,这两个函数的目的到底有什么不同?

最佳答案

我不是为局部变量保留(分配)堆栈空间。此外,一些版本的 ABI函数入口时可能需要特定的堆栈指针对齐

关于汇编:如果 push 命令已经做了减法,为什么我们还要减去 esp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39258035/

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