標籤: 暫無標籤

1簡介

目標代碼(objectcode)指計算機科學中編譯器或彙編器處理源代碼后所生成的代碼,它一般由機器代碼或接近於機器語言的代碼組成。[1]目標文件(objectfile)即存放目標代碼的計算機文件,它常被稱作二進位文件(binaries)。
目標文件包含著機器代碼(可直接被計算機中央處理器執行)以及代碼在運行時使用的數據,如重定位信息,如用於鏈接或調試的程序符號(變數和函數的名字),此外還包括其他調試信息。[2]目標文件是從源代碼文件產生程序文件這一過程的中間產物,鏈接器正是通過把目標文件鏈接在一起來生成可執行文件或庫文件。目標文件中唯一的要素是機器代碼,例如,用於嵌入式系統的目標文件可能僅僅含有機器代碼。

2目標文件格式

目標文件用以存放目標代碼和由編譯器或彙編器生成的相關數據的計算機文件格式稱為目標文件格式。
目標文件格式有許多不同的種類。最初每種類型計算機都擁有自身獨特的格式,但隨著Unix和其他可移植操作系統的問世,人們定義了例如COFF和ELF這些格式,並在不同的系統上使用它們。通常,鏈接器的輸入和輸出使用相同的文件格式,庫文件和可執行文件格式也是一樣使用相同的格式。
設計或選擇一種目標文件格式是計算系統整體設計的關鍵部分。它影響著鏈接器的性能並因此影響著程序員在開發時的總耗時;如果格式是用於可執行文件,那麼格式的設計還會影響程序的開始運行花費的時間,以及影響到系統對用戶請求的反應速度。大部分目標文件格式以區塊的方式來組織,每一區塊中都裝載著同種數據。在虛擬內存系統需要這些塊的時候,它可以通過將這些塊分頁后調入,無需進一步地處理就可使用。
最簡單的目標文件格式是DOS的COM文件格式,它是一種僅僅由原始數據組成的文件。COM格式的文件始終被載入到某固定位置。其他的格式都由一組複雜精密的數據結構序列組成,這些格式的規範說明書一般會有許多頁。
調試信息可以是目標文件格式中的一個組成部分,就像COFF中的那樣,或是一種可能被數個目標格式使用的半獨立格式,如stabs或DWARF。
GNU計劃的BFD庫提供了一套通用的應用程序編程介面用來操縱各式各樣的目標文件格式。
典型的目標文件格式所支持的數據類型有:
符號起始區塊(BSSBlockStartedbySymbol的縮寫)
正文段(textsegment或譯作代碼段)
數據段(datasegment)

3主要格式

DOS
COM
EXE(MZ)
可重定位目標模塊格式(RelocatableObjectModuleFormat一般稱作「OBJ文件」或「OMF」,也在微軟視窗操作系統中被一些開發工具廠商所使用)
嵌入式系統
IEEE-695
S-records
Macintosh
PEF/CFM
Unix
a.out(Unix/Linux)
COFF(SystemV)
ECOFF(Mips)
XCOFF(AIX)
可執行與可鏈接文件格式(SystemV縮寫為ELF,用於大多數現代計算系統中)
Mach-O(NeXT,MacOSX)
視窗(Windows)
16位的NewExecutable
PortableExecutable
其他
IBM360目標格式
NetWare可載入模塊(NetWareLoadableModule縮寫為NLM)
OMF(VME)
SOM(HP)
XBE(Xbox的可執行文件格式)
APP(SymbianOS的可執行文件格式)
可重定位動態目標文件格式(RelocatableDynamicObjectFileFormat縮寫為RDOFF)
Hunk(AmigaOS)
上一篇[詞法分析]    下一篇 [編譯方式]

相關評論

同義詞:暫無同義詞