【发布时间】:2013-12-08 11:23:17
【问题描述】:
我正在阅读 Richard Blum 的 Professional Assembly Language,我对书中的不一致感到困惑,我想知道程序堆栈的增长方向到底是什么? 这是第312页的图片,这表明程序堆栈长大了。
但是当我到达第 322 页时,我看到另一个版本,这表明程序堆栈变小了。
还有这个
【问题讨论】:
-
我说的是两个版本的书不一致。
-
由于绘制堆栈有两种约定,所以上下术语有点误导。但是在任何体系结构中找出最简单的方法是使用 -O0 编译一个简单的函数并检查创建堆栈帧的指令是什么。在我使用的当前系统中,它是
sub r1, #xxx;因此堆栈增长到较小的地址。另一种是从ISA手册中找到“push x”的解释。 -
相关:stackoverflow.com/questions/14296088/…(对于 x86-64,替换
rsp->esp, 8 -> 4)。 -
要确定堆栈的增长方式,请比较“push”指令前后的堆栈指针。
标签: linux assembly linux-kernel x86 stack