在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. 爲什麼C#中的8位和16位整數沒有算術運算符(+, - ,*,/,%)?
- 3. 爲什麼沒有信息在電子郵件中發佈?
- 4. 爲什麼VB.Net中的負SByte數字有16位?
- 5. 爲什麼它沒有顯示所有的信息爲XML?
- 6. 爲什麼Django中沒有response_finished信號?
- 7. 爲什麼VS2013有Typescript類型信息但沒有Intellisense?
- 8. ELF格式的重定位信息在哪裏?
- 9. 爲什麼在Java中右移16乘32將導致16而不是0? 16 >> 32 = 16爲什麼?
- 10. 爲什麼在我添加-g參數後沒有加載調試信息
- 11. 爲什麼我的數據庫信息沒有顯示在Heroku上?
- 12. 爲什麼我不能在8位和16位積分
- 13. 爲什麼一些java庫沒有調試信息編譯
- 14. 爲什麼我沒有看到錯誤信息?
- 15. Electron IPC:爲什麼我的ipc信息沒有被接收?
- 16. 爲什麼OpenAM沒有使用OpenLDAP信息進行更新?
- 17. 爲什麼PyQt崩潰沒有信息? (退出代碼0xC0000409)
- 18. 爲什麼我沒有得到正確的返回信息?
- 19. 爲什麼我沒有得到正確的錯誤信息?
- 20. 爲什麼pytz似乎沒有任何時區信息?
- 21. 爲什麼我的索引列顯示沒有統計信息?
- 22. 不知道爲什麼jQuery沒有獲取變量信息
- 23. 爲什麼jpeg_decompress_create崩潰而沒有錯誤信息?
- 24. 爲什麼這個類庫沒有從app.config獲取信息
- 25. 爲什麼信息記錄但沒有FINEST
- 26. 爲什麼GCM信息今天沒有交付?
- 27. 爲什麼我不能在SystemVerilog的邏輯中存儲16位?
- 28. 爲什麼在我的Rails開發環境中沒有顯示調試信息?
- 29. 爲什麼沒有通過Firebase驗證?爲什麼沒有返回錯誤信息?
- 30. 爲什麼沒有PWM信號出來?
@Someprogrammerdude謝謝!我一直認爲人們使用16位架構,直到奔騰。再次感謝! – JiangFeng
@Someprogrammerdude你可以做出答案;照顧這樣做? – davmac