0

我一直在玩汇编和操作系统开发(在真实模式和保护模式下),因为我在内核模式下工作(“Ring 0”又名“Full Privileges”)我总是不得不担心之前设置堆栈使用堆栈指令(推/弹出)。

现在我一直在查看用户模式的 32 位汇编程序(适用于 windows 和 linux),并注意到我看到的所有程序示例都只是使用堆栈指令而没有先设置堆栈。这是什么意思?操作系统是否在启动所述进程之前自行设置进程堆栈?

提前致谢,

若昂席尔瓦。

4

1 回答 1

1

你自己已经给出了答案:

为代码、全局数据(堆)和本地数据(堆栈)提供所有必要的内存是系统职责的一部分。

[更新:这不应该被忽视:一旦进入特权较低的环,就像任何用户空间应用程序通常那样,这个用户空间应用程序就不可能轻易地设置堆栈。它必须进行系统调用才能分配它。但是由于大约 99.999% 的应用程序需要一个堆栈,因此首先为所有用户空间应用程序提供一个堆栈同样经济,而不是强迫开发人员在每个程序中都请求它。/更新]

于 2012-09-15T12:26:00.347 回答