免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4761 | 回复: 10
打印 上一主题 下一主题

CPU的指令集是一定的,为什么还有ELF a.out这些格式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-11 13:50 |只看该作者 |倒序浏览
CPU的二进制指令集是指定的,要实现某个功能,到最后生成的二进制代码也应该是一样的
我看到有ELF a.out COFF很多目标文件格式,这两个有什么关系吗

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2008-11-11 13:59 |只看该作者
这些格式是被操作系统的加载器所识别,属于不同的可执行文件格式.

论坛徽章:
0
3 [报告]
发表于 2008-11-11 15:20 |只看该作者

回复 #2 cjaizss 的帖子

我对这个的理解是我们生成的可执行文件其实还不是最终intel等CPU能够识别的指令
这个加载器转化后的代码就是了

论坛徽章:
0
4 [报告]
发表于 2008-11-11 15:29 |只看该作者
给这些二进制文件脱了MJ就是机器码。机器码穿上ELF的MJ就叫ELF,穿上PE的MJ就在Win上混。

论坛徽章:
0
5 [报告]
发表于 2008-11-12 09:28 |只看该作者

Re:

ls 说得没错,就和早期的COM/EXE文件一样, EXE文件比COM文件复杂的地方就是多了很多段,加载时,将这些段放到指定的位置就可以执行了, 而.text段存放的就是实际可执行的机器码了, a.out/elf等等也是一个道理

论坛徽章:
0
6 [报告]
发表于 2008-11-12 10:42 |只看该作者

说个好理解的吧

在嵌入式处理器开发中,ELF中有不同的段,在执行时,把这个不同的程序段定位到不同的区域. 如.TEXT,.ZERO,.ROM等 ELF还可包含一些DEBUG信息
附个ARM的ELF format.

[ 本帖最后由 linlams 于 2008-11-12 12:34 编辑 ]

DUI0101A_Elf.pdf

103.78 KB, 下载次数: 91

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2008-11-12 11:00 |只看该作者
原帖由 zhongyj 于 2008-11-11 15:20 发表
我对这个的理解是我们生成的可执行文件其实还不是最终intel等CPU能够识别的指令
这个加载器转化后的代码就是了

像ELF这么复杂的格式最主要的一点是为了可扩展性的要求。
如同楼上网友所言,ELF里面可以定义很多的段。
ELF的全称为Executable and Linkable Format,ELF提供了一个可能,让可执行文件和可链接文件格式统一,用一个大类(ELF)把它们装在一起。

论坛徽章:
0
8 [报告]
发表于 2008-11-12 12:00 |只看该作者
google <linker and loader> 阅读之,了解程序执行的发展,为什么会出现二进制,原始的机器码为什么会被分段,起初都分成什么段,后来又是怎么发展的,比如bss段在磁盘上是不存在的,却有一个占位。现在的PE和ELF都是COFF的扩展,不光看看文件格式,书上也讲了为什么要那么做。

论坛徽章:
0
9 [报告]
发表于 2008-11-12 13:42 |只看该作者

回复 #1 zhongyj 的帖子

完全不同的概念。

如果想知道为什么,最好看一些发展历史的资料,因为任何东西的出现是为了满足当时的需求的。

论坛徽章:
0
10 [报告]
发表于 2008-11-13 17:22 |只看该作者
如果你是在一个裸机(没有操作系统)上开发代码,只要是同种CPU(同样的指令系统),生成的机器码,应该是一样的。但是,在操作系统上运行的程序除了功能代码外,还需要一个框架(也是一些代码)。不同的操作系统,这个框架自然是不同的。但是,在同一操作系统上,也可以有不同风格的代码框架。这ELF、a.out等,就是各种框架。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP