Gua*_*ong 2 c operating-system elf
我是操作系统的初学者。这个问题是我的教授提出的,让我很困惑。我希望我能在这里得到一些提示和帮助。
在我的记忆中,ELF文件是可以相互链接的。这是 ELF 文件不能有堆栈段的原因吗?
非常感谢您的帮助!
这是因为堆栈不是需要以文件格式保存的东西,它完全与运行时执行相关。就像您的文件中不需要有“堆段”一样。
另一方面,堆栈属于执行线程,而不是数据或函数,并且它没有固定的大小。考虑一个递归函数:
int foo() {
printf("Stack Overflow!\n");
return foo();
}
Run Code Online (Sandbox Code Playgroud)
每个递归在栈中都有自己的帧,没有属于foo()自己的栈,只供其执行。
当然你可以在你的文件中保留一个堆栈段,就像一大块静态内存一样,并让%rsp指针(x64)指向它。但操作系统已经帮你做好了,所以没有必要。
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |