簡介
形式
目標代碼通常採用三種形式:機器語言,彙編語言,待裝配機器語言模組。
生成目標代碼時應著重考慮的問題: (1)如何使生成的目標代碼較短; (2)如何充分利用暫存器,以減少訪問記憶體次數; (3)如何充分利用指僅系統的的特點。
目標檔案格式
目標檔案格式有許多不同的種類。最初每種類型
計算機都擁有自身獨特的格式,但隨著Unix和其他可移植作業系統的問世,人們
定義了例如COFF和ELF這些格式,並在不同的系統上使用它們。通常,
連結器的輸入和輸出使用相同的
檔案格式,庫檔案和
執行檔格式也是一樣使用相同的格式。
設計或選擇一種目標檔案格式是計算系統整體設計的關鍵部分。它影響著
連結器的性能並因此影響著
程式設計師在開發時的總耗時;如果格式是用於
執行檔,那么格式的設計還會影響程式的開始運行花費的時間,以及影響到系統對用戶請求的反應速度。大部分
目標檔案格式以區塊的方式來組織,每一區塊中都裝載著同種
數據。在
虛擬記憶體系統需要這些塊的時候,它可以通過將這些塊分頁後調入,無需進一步處理就可使用。
最簡單的目標檔案格式是DOS的COM檔案格式,它是一種僅僅由
原始數據組成的檔案。COM格式的檔案始終被載入到某固定位置。其他的格式都由一組複雜精密的
數據結構序列組成,這些格式的規範說明書一般會有許多頁。
調試信息可以是目標檔案格式中的一個組成部分,就像COFF中的那樣,或是一種可能被數個目標格式使用的半獨立格式,如stabs或DWARF。
GNU計畫的BFD庫提供了一套通用的
應用程式編程接口用來操縱各式各樣的目標檔案格式。
1. 符號起始區域(BSSBlockStartedbySymbol的縮寫);
2.正文段(textsegment或譯作
代碼段);
3.數據段(datasegment)。
主要格式