首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么程序头段虚拟地址是0x40004000?

为什么程序头段虚拟地址是0x40004000?
EN

Stack Overflow用户
提问于 2014-02-17 15:23:11
回答 1查看 196关注 0票数 0

我正在学习一些关于ELF格式的东西(在x64 Linux平台上),在程序头中,第一个段(PT_PHDR)有这个虚拟地址0x40004000 (对齐是8个字节)。我不明白,也找不到解释的地方。在互联网上的其他一些例子中,它是0x08048034,我不知道这是因为操作系统还是处理器架构。有没有地方列出并简要解释这些固定值,比如参考书或手册之类的?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-17 17:50:15

在x64 Linux平台上

这个平台根本不存在。你是说Linux x86_64平台。

(PT_PHDR)有这个虚拟地址0x40004000

那是个很奇怪的地址。你确定不是0x400040吗?

我不明白,也找不到解释的地方。在互联网上的其他一些例子中,它是0x08048034,我不知道这是因为操作系统还是处理器架构。

对于Linux x86_64,链接可执行文件的默认地址是0x400000Elf64_Ehdr的大小(在每个ELF二进制文件的开头)是64,给出了0x400040的默认PT_PHDR地址。

对于Linux i*86,可执行文件的默认地址是0x08048000Elf32_Ehdr的大小是52,给出了0x08048034的默认PT_PHDR地址。

这些地址中的任何一个都可以通过例如使用链接器-Ttext=0xNNNN标志进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21832852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档