我知道對象代碼是編譯階段後出現在目標文件中的代碼(例如:aaa.obj)。這個文件是什麼?包含機器指令?如果是這樣,爲什麼我不能在該文件中看到0和1。 請幫我一把。編譯狀態後的對象代碼究竟是什麼?
1
A
回答
4
一個目標文件是從編譯階段輸出的真實。它主要是機器碼,但有信息允許鏈接器查看其中包含的符號以及它需要的符號才能工作。 (作爲參考,「符號」是基本上全局對象的名稱, 函數等)
連接體需要的所有這些目標文件並且將它們組合以形成一個 可執行(假設是可以的,即:有不是任何重複的 或未定義的符號)。很多編譯器會爲你做(讀: 運行它們自己的鏈接),如果你不告訴他們「只是 編譯」使用命令行選項。 (-c是一種常見的「剛編譯; 沒有鏈接」選項)
如果是這樣,爲什麼我看不到任何0和1的在該文件中。
您正在將目標文件概念與可執行文件概念混淆。目標文件包含鏈接器的編譯代碼和指令(程序從一個或多個目標文件構建一個可執行文件)。鏈接器程序的輸出實際上是可執行文件,其中包含您所預計的零和一個。
相關問題
- 1. init編碼器aDecoder究竟是什麼?
- 2. 代表究竟是什麼?
- 3. 究竟是什麼'代碼重複'
- 4. Javascript超時對象究竟是什麼?
- 5. 在代碼的靜態分析中,究竟是什麼陰影?
- 6. 這段代碼究竟做了什麼?
- 7. 這段代碼究竟做了什麼?
- 8. jquery究竟返回什麼對象?
- 9. IKB究竟代表什麼?
- 10. [a]究竟代表什麼?
- 11. ZfcUser中的用戶狀態究竟是什麼?
- 12. 動態內存究竟是什麼?
- 13. 動態數據究竟是什麼?
- 14. 元編程究竟是什麼?
- 15. 預編譯在編譯器中究竟意味着什麼
- 16. 編譯後代碼中的'()'是什麼?
- 17. 「文件號碼」究竟是什麼?
- 18. 字節碼究竟是什麼?
- 19. 究竟是MySQL中的「尾隨空間」究竟是什麼?
- 20. 「句柄」究竟是什麼?
- 21. getGlobalVisibleRect()究竟是什麼?
- 22. Werkzeug究竟是什麼?
- 23. 究竟是什麼@ ViewDebug.ExportedProperty?
- 24. .parentNode究竟是什麼?
- 25. Heroku究竟是什麼?
- 26. session_hash究竟是什麼?
- 27. 究竟是什麼awakeFromNib?
- 28. 究竟是什麼任務
- 29. cout/cin究竟是什麼?
- 30. SKEmitterNode particleLifetime究竟是什麼?
取決於您用來查看文件的內容。任何文件都將包含0和1。對象文件確實包含機器指令和鏈接器用來構造可執行文件的其他內容。 – Ayman
那麼,我應該用什麼來查看文件? – prog481
是一個反彙編程序。 – Ayman