在Ubuntu X86系统上拆卸精灵二进制文件,我不禁注意到代码(.TEXT)部分从虚拟地址0x8048000开始,并且所有较低的内存地址似乎都没有使用。

这似乎很浪费,而Google的出现都是 涉及stack_top的民间传说 或防止零销量的防止。后一种情况看起来可以通过使用单页而不是留下128MB差距来修复。

因此,我的问题是 - 是否有明确的答案,说明为什么布局已修复到这些值中,还是只是一个任意选择?

有帮助吗?

解决方案

来自 接头和装载机 书:

在386个系统上,文本基础地址为0x08048000,它允许在文本下方有一个相当大的堆栈,同时仍停留在地址上方0x08000000,允许大多数程序使用单个第二级页面表。 (回想一下,在386,每个第二级表映射0x00400000地址。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top