【发布时间】:2014-10-09 05:24:15
【问题描述】:
我有几个关于英特尔 IA-32 堆栈的问题。具体来说:
- 当我将
push一个值放入堆栈时,堆栈指针会减少压入的值的大小(%esp - size),并将值存储在%esp的旧值处。 - 如果我想在没有
poping 的情况下从堆栈中读取值,我需要增加堆栈指针 (%esp + size)。 - A piece of kernel code I have 是从堆栈中减去所需的大小,而不是添加它。我的假设是,当这种情况发生时,我想要的值是从指针地址 远离,而不是 向它移动。
- 因此,任何进一步的读取都会获取错误数据。
我的上述断言正确吗?提前致谢。
【问题讨论】:
-
发布代码(带注释!!!),以便我们阅读并查看编译器在做什么,以及您认为您希望它做什么。