请教ELF文件格式的问题

精灵猫1 2006-08-11 03:10:07
我正在学习elf的文件格式,写了一个程序打印elf文件的信息,发现一个问题:

代码:
第3个段的信息:
该段为可装入段
该段在文件中的位移为:5704
该段的虚存地址为:134522440
p_paddr=134522440
该段的文件映象中字节的数目:292
该段的内存映象的字节的数目:312
该段段权限:写 读
这是关于一个段的信息,我没法理解的是该段的文件映象的字节数目和内存映象的字节数目为什么不一样?难道说该段中的部分信息不被映象的内存中?能给通俗的解释不???比如说哪些东西不需要映射到内存中??
...全文
565 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xaodoudou 2006-08-27
  • 打赏
  • 举报
回复
呵呵 这种东东中文的倒是不多:)
精灵猫1 2006-08-24
  • 打赏
  • 举报
回复
全英文的?有没有中文简介哩
xaodoudou 2006-08-20
  • 打赏
  • 举报
回复
TCC 是一个小型的编译链接器,主体文件代码只有一万多行, 对学习编译,链接过程是很不错的代码示例。
http://fabrice.bellard.free.fr/tcc/
pilixuanke 2006-08-20
  • 打赏
  • 举报
回复
Quote:
TCC 是一个小型的编译链接器,主体文件代码只有一万多行, 对学习编译,链接过程是很 不 错的代码示例。
http://fabrice.bellard.free.fr/tcc/

///////////////////////////////////////////////////////////////

呵呵:), 有机会得学习一下!谢谢xaodoudou(我不想做潜水员) 提供信息。
精灵猫1 2006-08-15
  • 打赏
  • 举报
回复
请问xaodoudou(我不想做潜水员)
什么是TCC代码啊?你用的是什么操作系统呢?
精灵猫1 2006-08-14
  • 打赏
  • 举报
回复
我也在做嵌入式,因为编译器显示编译出来的文件大小是1.5M但是真实的文件大小却是1.3M。感到很奇怪,所以查了下那个文件的内容,是elf格式的。就看了下。
linkers_and_loaders 网上有下的吗
OOPhaisky 2006-08-14
  • 打赏
  • 举报
回复
linkers_and_loaders下载链接:
http://norfs.sourceforge.net/linkers_and_loaders.pdf
xaodoudou 2006-08-13
  • 打赏
  • 举报
回复
推荐看 linkers_and_loaders ,书很好的 :)
不知道你有没有看过TCC的代码? 我现在想写一个关于多任务系统中对于多个任务间共享变量的检测,用于检测嵌入式系统的可靠性,不知道有没有这方面的兴趣?
lei001 2006-08-11
  • 打赏
  • 举报
回复
学习
OOPhaisky 2006-08-11
  • 打赏
  • 举报
回复
给楼主举个简单的例子,楼主一定学过C语言吧:
int a[1000] = {0};
int main(){
return 0;
}
注意数组a,它在运行时要占用“1000*4=4000”字节(大约4M左右)的内存空间(这里假设int类型4bytes),但是在目标文件中它不用占用那么多空间,而只需要简单的表示一下“1000个元素的数组,每个元素都等于0”这样的信息就可以了,所以文件映象与内存映象的大小不一样。

但是
int a[1000] = {1};
int main(){
return 0;
}
此时文件映象与内存映象的大小就应该一样了,因为在c语言中,只要数组的初始值不是0,则在目标文件中要占用数组实际的大小。

此例仅起抛砖引玉的作用,希望对楼主有帮助。
-----------------------------------------------------
顺便问一下,楼主在学习elf时,参考的是什么资料?

declare64 2006-08-11
  • 打赏
  • 举报
回复
什么是elf文件啊

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧