-
目標代碼
鎖定
目標代碼簡介
目標代碼(object code)指計算機科學中編譯器或彙編器處理源代碼後所生成的代碼,它一般由機器代碼或接近於機器語言的代碼組成。目標文件(object file)即存放目標代碼的計算機文件,它常被稱作二進制文件(binaries)。目標文件包含着機器代碼(可直接被計算機中央處理器執行)以及代碼在運行時使用的數據,如重定位信息,如用於鏈接或調試的程序符號(變量和函數的名字),此外還包括其他調試信息。[2]目標文件是從源代碼文件產生程序文件這一過程的中間產物,鏈接器正是通過把目標文件鏈接在一起來生成可執行文件或庫文件。目標文件中唯一的要素是機器代碼,例如,用於嵌入式系統的目標文件可能僅僅含有機器代碼。
目標代碼形式
目標代碼通常採用三種形式:機器語言,彙編語言,待裝配機器語言模塊。
生成目標代碼時應着重考慮的問題: (1)如何使生成的目標代碼較短; (2)如何充分利用寄存器,以減少訪問內存次數; (3)如何充分利用指僅系統的的特點。
目標代碼目標文件格式
目標文件格式有許多不同的種類。最初每種類型計算機都擁有自身獨特的格式,但隨着Unix和其他可移植操作系統的問世,人們定義了例如COFF和ELF這些格式,並在不同的系統上使用它們。通常,鏈接器的輸入和輸出使用相同的文件格式,庫文件和可執行文件格式也是一樣使用相同的格式。
設計或選擇一種目標文件格式是計算系統整體設計的關鍵部分。它影響着鏈接器的性能並因此影響着程序員在開發時的總耗時;如果格式是用於可執行文件,那麼格式的設計還會影響程序的開始運行花費的時間,以及影響到系統對用户請求的反應速度。大部分目標文件格式以區塊的方式來組織,每一區塊中都裝載着同種數據。在虛擬內存系統需要這些塊的時候,它可以通過將這些塊分頁後調入,無需進一步處理就可使用。
最簡單的目標文件格式是DOS的COM文件格式,它是一種僅僅由原始數據組成的文件。COM格式的文件始終被加載到某固定位置。其他的格式都由一組複雜精密的數據結構序列組成,這些格式的規範説明書一般會有許多頁。
調試信息可以是目標文件格式中的一個組成部分,就像COFF中的那樣,或是一種可能被數個目標格式使用的半獨立格式,如stabs或DWARF。
GNU計劃的BFD庫提供了一套通用的應用程序編程接口用來操縱各式各樣的目標文件格式。
1. 符號起始區域(BSSBlockStartedbySymbol的縮寫);
2.正文段(textsegment或譯作代碼段);
3.數據段(datasegment)。
目標代碼主要格式
- COM
- EXE(MZ)
- 可重定位目標模塊格式(Relocatable Object Module Format 一般稱作“OBJ文件”或“OMF”,也在微軟視窗操作系統中被一些開發工具廠商所使用)
- 嵌入式系統
- IEEE-695
- S-records
- Macintosh
- PEF/CFM
- Unix
- ECOFF(Mips)
- XCOFF(AIX)
- a.out(Unix/Linux)
- COFF(System V)
- 可執行與可鏈接格式(System V縮寫為ELF,用於大多數現代計算系統中)
- Mach-O(NeXT,Mac OS X)
- 視窗(Windows)
- 16位的New Executable
- Portable Executable
- 其他
- IBM 360目標格式
- NetWare可加載模塊(NetWareLoadableModule 縮寫為NLM)
- OMF(VME)
- SOM(HP)
- XBE(Xbox的可執行文件格式)
- APP(Symbian OS的可執行文件格式)
- 可重定位動態目標文件格式(RelocatableDynamicObjectFileFormat 縮寫為RDOFF)
- Hunk(AmigaOS)
- 參考資料
-
- 1. 目標文件解釋 .百度文庫[引用日期2015-02-08]