【发布时间】:2020-09-27 19:25:17
【问题描述】:
我需要使用程序集插入来获取堆栈的开始和结束地址。 据我了解,SP寄存器指向堆栈的开头,但是如何找到结尾呢? 我说的是 i386 架构。 我意识到SP是栈顶,BP是栈底。 那么我可以使用 BP-SP 计算大小吗?
还有一个问题。堆栈大小是静态的吗?启动后没有变化?
【问题讨论】:
-
SP 指向当前栈顶。它可能是也可能不是你想要的。另一端取决于您忘记指定的操作系统。你也没有提到建筑。
-
BP 是当前堆栈帧的底部(-ish),如果它已设置的话。它又可能是也可能不是你想要的。不清楚。
-
您知道那些是 16 位寄存器名称,对吧? ESP 是 32 位堆栈指针。
标签: assembly x86 callstack stack-size