2016-12-05 90 views
0

在ELF标头中,​​的值可以是1或2,表示32位操作系统或64位操作系统。但是从历史上我们知道ELF首先出现在1993年发布的Solaris 2.0中。然而,广泛使用的32位处理器Pentium Pro直到1995年才出现。 那么,为什么ELF头没有关于16位或甚至8位信息?为什么在ELF幻数中没有16位信息?

+0

@Someprogrammerdude谢谢!我一直认为人们使用16位架构,直到奔腾。再次感谢! – JiangFeng

+0

@Someprogrammerdude你可以做出答案;照顾这样做? – davmac

回答

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位体系结构已经很普遍,所以没有人打算定义这样的事情。

相关问题