【发布时间】:2010-07-16 13:02:22
【问题描述】:
问这个问题是因为作者正在构建一个编译器(src -> asm),并且正在编写用于生成汇编代码的代码。
当程序在基于 Linux(实际上是任何操作系统)的操作系统上执行时,首先发生的事情之一是堆栈被设置,并且 SP 寄存器被分配了堆栈开头的内存地址。
我很好奇执行上述操作的责任在于程序还是操作系统本身。如果是程序的责任,程序是如何完成的(特别是在Linux基础环境中)?
单个程序必须执行哪些其他操作才能开始执行其主要功能?
感谢带有注释的 i386 NASM 汇编代码的示例。此外,任何可以帮助作者实现目标的网络资源也将不胜感激。
【问题讨论】:
-
这位评论员想知道为什么作者用第三人称谈论自己。
-
我简单的头脑无法处理手动内存管理而不意外跨越几个突触'。肯定有副作用的,呵呵。