linux - 程序栈的增长方向到底是什么?

标签 linux assembly linux-kernel x86 stack

我正在阅读 Richard Blum 的 Professional Assembly Language,我对书中的一个不一致感到困惑,我想知道程序堆栈的增长方向到底是什么? 这是第312页的图片,这表明程序堆栈增长了。

enter image description here

但是当我到达第 322 页时,我看到了另一个版本,这表明程序堆栈向下增长。 enter image description here

还有这个

enter image description here

最佳答案

这本书并没有前后矛盾;每张图在顶部显示更高的地址。

第一张图说明了一个向下增长的堆栈。调用者将参数压入堆栈,然后调用新函数。调用的行为将返回地址压入堆栈。被调用者然后将基指针的当前值压入堆栈,将堆栈指针复制到基指针中,并递减堆栈指针以为被调用者的局部变量腾出空间。

关于linux - 程序栈的增长方向到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20452846/

相关文章:

linux - 挂载已挂载或忙

assembly - Intel 64架构中CALLF(Far Call)可以有64位地址内存操作数吗?

c - 如何在risc-v中实现printf函数?

linux - Linux 内核中的 parse_elf() 中的段是在哪里复制的?

linux - sbrk(2) 或 mmap(2) 可以阻塞吗?

linux - 使用 PID 文件杀死守护进程

java - 向其他人授予对生成的 HeapDumpOnOutOfMemoryError 文件 .hprof 的读取权限

python - 用于 e NetworkManager VPN 连接的 dbus 信号处理程序

assembly - COBOL 是否强制一行的前 6 个字符为数字,因为它更容易编译为二进制可执行文件?

c - 具有共享内存的进程异常终止的行为