【问题标题】:The need for setting up a stack in user mode?需要在用户模式下设置堆栈吗?
【发布时间】:2012-09-15 12:23:06
【问题描述】:

我从事汇编和操作系统开发已经有一段时间了(在真实模式和受保护模式下),因为我在内核模式下工作(“Ring 0”又名“Full Privileges”)我总是不得不担心设置使用堆栈指令(push/pop)之前的堆栈。

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

提前致谢,

若昂·席尔瓦。

【问题讨论】:

    标签: assembly linux-kernel windows-kernel


    【解决方案1】:

    你自己已经给出了答案:

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-25
      • 2012-12-02
      • 2013-12-14
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      相关资源
      最近更新 更多