是程序还是操作系统负责设置堆栈

6 linux assembly

提出这个问题是因为作者正在构建一个编译器(src - > asm),并且正在编写用于生成汇编代码的代码.

程序在基于Linux(任何操作系统)的操作系统上执行时,首先发生的事情之一就是堆栈设置完毕,SP寄存器被分配堆栈开头的内存地址.

我很好奇上面做这件事的责任在于程序还是操作系统本身.如果责任在于程序,那么程序如何实现(特别是在Linux基础环境中)?

在个别程序开始执行其主要功能之前,必须执行哪些其他操作?

评论i386 NASM汇编代码的示例表示赞赏.此外,任何可以帮助作者实现其目标的网络资源也将非常受欢迎.

Mar*_*tin 1

操作系统将为您设置 SP 并将程序参数放置在堆栈上。您的程序无需进行任何特殊设置即可运行。

至于程序启动时Linux上实际的堆栈布局,你可以查看这个文档了解详细信息。