跳至內容

「A.out」:修訂間差異

出自Taiwan Tongues 台語維基
TaiwanTonguesApiRobot留言 | 貢獻
從 JSON 檔案批量匯入
 
(無差異)

於 2025年8月24日 (日) 03:39 的最新修訂

a . out是舊版類 Unix 系統中用佇執行檔、目的碼佮尾仔系統中的函式庫的一種檔案格式,這个名稱的意思是組譯器輸出

就算講這陣大多數類 Unix 系統攏已經改用 ELF 格式,無閣採用 _ a . out _ 格式,猶毋過編譯器佮連結器猶原會當使用者無指定檔名的時陣,將輸出檔案號做「a . out」。

應用

佇咧 UNIX 頭一版內底,就現予 PDP 抹七佮 PDP 鋪十一用的 _ a . out _ 格式。了後伊予人 UNIX System V 中的 COFF 所取代,而且 COFF 尾仔嘛去予人 SVR 四中的 ELF 格式所取代。

就算講 BSD 捌沿用一段時間的 _ a . out _ 格式,但較新的 BSD 系統攏切換著 ELF。NetBSD / i 三百八十六佇一鋪五版中正式對 _ a . out _ 切換著 ELF,FreeBSD / i 三百八十六是佇咧二四二到三鋪空的轉換中切換著 ELF 的。

_ a . out _ 格式對除毋著資訊的支援是由符號表中稱作「stabs」的特殊項實現的。真濟 COFF 和 ELF 變體中嘛用著矣 stabs 格式。

Linux 佇一爿二版的核心進前嘛捌使用 _ a . out _ 格式(實驗性的一孵一 . 五十二版內底加入矣嘿 ELF 的支援), 佇這爿了後嘛去予人 ELF 取代矣。Linux 之所以斡向 ELF,抑是濟或者是因為佇此平台頂懸構建一个 _ a . out _ 格式的函式庫所需要的複雜性過懸:因為乎 Linux 中 _ a . out _ 的 ld . so 袂當重定位共享函式庫,所以需要一个中央機構來註冊逐个函式庫的虛擬位址域。一寡仔 BSD 變體在 Linux 被迫轉向 ELF 了後猶閣用真久的 _ a . out _ 格式,因為比如講 Linux,BSD 的 _ a . out _ 略仔閣較靈活一寡。因為 a . out 格式的相關代碼已經老舊並無維護,而且已經是差不多無咧用 a . out 格式的存在,五孵一版核心決定欲移除相應的功能支援。

MINIX 三猶原將 _ a . out _ 作為二進位檔案的格式,毋過其他的支援共享函式庫。

格式

_ a . out _ 執行檔通常是以下幾種變體之一:OMAGIC、NMAGIC、QMAGIC 抑是 ZMAGIC。

OMAGIC

OMAGIC 格式檔案頭了後有連紲段,無文字佮資料的分離。嘛予人用作目的檔格式。

NMAGIC

NMAGIC 格式佮 OMAGIC 相仝,但資料段出現佇文字段結束了後的後一頁,而且文字段予人標為唯讀。

ZMAGIC

ZMAGIC 格式加入矣對揤需分頁的支援,代碼段佮資料段的長度需要是頁闊的整數倍。

QMAGIC

QMAGIC 二進位檔案通常予人載入佇虛擬位址池的底端,用通過段錯誤揣著對空指標的解除參照。_ a . out _ 頭部佮文字段的第一頁合併,通常會省後一頁的記持體。

CMAGIC

舊版的乎 Linux 使用這格式來囥核心轉儲。

_ a . out _ 檔案包含上濟七節,順序如下:

執行頭部

包含核心將二進位檔案載入記憶體閣執行所需要的參數,嘛包含講對動態連結器 ld 的指引。干焦本節是著愛出現的。

文字段

包含執行的時予人載入記持體的機器碼佮相關資料,可能是唯讀的。

資料段

包含已經初始化的資料,總是會當寫的。

文字重定位

包含連結編輯器佇合併二進位檔案的時修改文字段指標的記錄。

資料重定位

佮文字重定位一節類似,但是予資料段指標用的。

符號表

包含連結編輯器用佇交叉參照無仝二進位檔案中變數和函式(符號)的記錄。

字捾表

包含講對應於符號表的字串。

參見

  • Portable Executable
  • ELF
  • Vasm,一个自由的組譯器

參考資料

外部連結

  • a . out 格式
  • a . out 格式的 Unix 手冊頁