在ELF标头中,的值可以是1或2,表示32位操作系统或64位操作系统。但是从历史上我们知道ELF首先出现在1993年发布的Solaris 2.0中。然而,广泛使用的32位处理器Pentium Pro直到1995年才出现。 那么,为什么ELF头没有关于16位或甚至8位信息?为什么在ELF幻数中没有16位信息?
0
A
回答
6
第一个“广泛使用”的32位CPU是年龄要大得多的Intel 80386。
然后我们对SUN和他们的距离大约在同一时间框架为386
的Solaris是Sun在90年代初开发了他们的机器,接近当第一64 SPARC架构的故事实际上开始出现。
ELF(Executable and Linkable Format的首字母缩写词)是在20世纪80年代后期开发的,当时所有主要的Unix变体都运行在纯粹或混合(32位系统)上(请考虑Motorola 68000)。
0
EI_CLASS
未标识“操作系统”,而是标识内存模型。该设置定义了文件中各种地址信息的编码方式,而不一定是目标寄存器有多宽。
对于PC CPU,代码加载器在执行包含在ELF文件中的程序的同一CPU上执行,因此EI_CLASS
与代码格式相匹配。但是,即使在8位和16位控制器上,ELF文件也可用作便携式代码/调试格式。此外,几乎所有的16位CPU都可以处理超过64 KB的内存,因此对于这些目标(假设存在这样的类别),EI_CLASS
不能设置为ELFCLASS16
。总而言之,指针的宽度是多少,这只与你可以拥有多少虚拟内存有关。当然,通过定义诸如ELFCLASS20
(包括Intel 8086在内的16位CPU的常见值)之类的东西,仍然可以使ELF文件变得更紧凑,但正如已经指出的那样,在1993年,32位体系结构已经很普遍,所以没有人打算定义这样的事情。
相关问题
- 1. 为什么没有DWARF信息?
- 2. 为什么Django中没有response_finished信号?
- 3. 为什么VS2013有Typescript类型信息但没有Intellisense?
- 4. 为什么linux有人和信息页
- 5. 为什么在Java中右移16乘32将导致16而不是0? 16 >> 32 = 16为什么?
- 6. 为什么我不能在8位和16位积分
- 7. 为什么一些java库没有调试信息编译
- 8. 为什么这个类库没有从app.config获取信息
- 9. 为什么jpeg_decompress_create崩溃而没有错误信息?
- 10. 为什么我没有视频信息来源与此网址
- 11. 为什么GCM信息今天没有交付?
- 12. 为什么信息记录但没有FINEST
- 13. 为什么PyQt崩溃没有信息? (退出代码0xC0000409)
- 14. Electron IPC:为什么我的ipc信息没有被接收?
- 15. 为什么我的索引列显示没有统计信息?
- 16. 为什么OpenAM没有使用OpenLDAP信息进行更新?
- 17. 为什么没有通过Firebase验证?为什么没有返回错误信息?
- 18. 为什么没有PWM信号出来?
- 19. 为什么函数参数中没有动态位模式?
- 20. 为什么log4net没有记录消息
- 21. 电子垂死没有任何信息,现在是什么?
- 22. 为什么没有数据信息显示? (试图创建谷歌图表)
- 23. 为什么LocationManager没有lastKnown位置?
- 24. 为什么xUnit.net中的Assert.NotNull的失败消息没有参数?
- 25. 为什么在64位FreeBSD v8.1上运行32位可以执行ELF错误?
- 26. 为什么在使用图形api浏览时没有可用的信息?
- 27. router.navigate为什么在空白页面上留下我没有错误信息?
- 28. 为什么十进制数16 == 5的二进制表示中的位数?
- 29. 为什么我没有在Python中接收日志INFO消息?
- 30. android art elf和Linux elf文件有什么区别?
@Someprogrammerdude谢谢!我一直认为人们使用16位架构,直到奔腾。再次感谢! – JiangFeng
@Someprogrammerdude你可以做出答案;照顾这样做? – davmac