我一直在使用汇编和操作系统开发一段时间(在实际模式和受保护模式下),因为我在内核模式下工作(“Ring 0”又名“Full Privileges”),我总是不得不担心设置使用堆栈指令之前的堆栈(推/弹)。
现在我一直在关注用户模式32位汇编程序(对于windows和linux),并注意到我看到的所有程序示例,只是在没有先设置堆栈的情况下使用堆栈指令。这是什么意思?操作系统在启动所述进程之前是否设置了进程堆栈?
提前致谢,
JoãoSilva。
答案 0 :(得分:1)
你已经给出了答案:
系统有责任为代码,全局数据(堆)和本地数据(堆栈)提供所有必要的内存。
[更新:这不应该被提及:一旦进入权限较低的环,就像通常的任何用户空间应用程序一样,这个用户空间应用程序很难设置堆栈。它必须进行系统调用才能分配它。但由于大约99.999%的应用程序需要堆栈,因此首先为所有用户空间应用程序提供堆栈同样经济,而不必强迫开发人员在每个程序中请求它。 /更新]