gpt4 book ai didi

x86 - 将数据存储在堆栈指针下方?

转载 作者:行者123 更新时间:2023-12-04 14:24:29 25 4
gpt4 key购买 nike

查看安装在 Ubuntu 9.04 中的 ld.so 的反汇编(以及指令跟踪),我发誓我有时会看到数据存储在堆栈指针下方(即超出堆栈顶部)。这对我来说似乎很疯狂,但也许这比我想象的更普遍。这种情况经常发生吗?

这是我看到的:

ebp: 0xBF8269E8, esp: 0xBF8269DC

c98:       8b 45 f0                mov    -0x10(%ebp),%eax
c9b: 8d 14 06 lea (%esi,%eax,1),%edx
c9e: 8b 83 28 03 00 00 mov 0x328(%ebx),%eax
ca4: 3b 50 04 cmp 0x4(%eax),%edx

最佳答案

信号处理程序需要能够随时创建堆栈帧。因此,您始终需要遵循 ABI 的堆栈协议(protocol)。

在 PowerPC 上,堆栈指针下方保留了一定数量的字节(半千字节?)。 (当然,这可能因平台而异。)然后信号处理程序必须浪费那么多空间以避免干扰任何东西。优点是消除了会为非常小的叶函数创建框架的存储+减法和添加指令。

关于x86 - 将数据存储在堆栈指针下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2308581/

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