为什么 Linux 二进制文件的虚拟内存地址从 0x8048000 开始?
- 2024-11-01 08:41:00
- admin 原创
- 45
问题描述:
在 Ubuntu x86 系统上反汇编 ELF 二进制文件时,我注意到代码(.text)部分从虚拟地址 0x8048000 开始,并且所有较低的内存地址似乎都未被使用。
这似乎相当浪费,Google 找到的答案要么是涉及 STACK_TOP 的民间传说,要么是针对空指针取消引用的保护。后一种情况似乎可以通过使用单个页面而不是留下 128MB 的间隙来解决。
所以我的问题是 - 为什么布局固定为这些值,是否有明确的答案,或者这只是一个任意的选择?
解决方案 1:
摘自《链接器和加载器》一书:
在 386 系统上,文本基地址为 0x08048000,这允许在文本下方有一个相当大的堆栈,同时仍保持在地址 0x08000000 之上,从而允许大多数程序使用单个二级页表。(回想一下,在 386 上,每个二级表映射 0x00400000 地址。)
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD