2016-12-05 63 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位體系結構已經很普遍,所以沒有人打算定義這樣的事情。

相關問題