
介紹與基本概念
|
7
別的暫存器或組合語言指令。因此,在 Linux 上,每一種機器架構都具有自己的 ABI。
事實上,我們傾向使用機器架構的名稱(例如
alpha
和
x86-64
)來指稱特定的 ABI。因
此,ABI 是作業系統(例如 Linux)及架構(例如 x86-64)的一個函數。
系統程式設計者應該對 ABI 有所認識,但通常不需要記憶。ABI 的實施係透過
工具鏈
(
toolchain
)—編譯器、鏈結器,等等—而且通常不會以其他方式呈現。然而,對 ABI
的瞭解,卻能讓你設計出較理想的程式,而且這也是撰寫組合語言程式碼或是開發工具
鏈(畢竟,這也是系統程式設計)需要具備的能力。
ABI 係定義及實現自核心及工具鏈。
標準
Unix 系統程式設計是一門古老的技藝。Unix 程式設計的基礎已經十幾年未動過。然
而,Unix 系統卻是靜不下來的野獸。不僅行為有所更動,而且還加入了新的功能。為了
從混亂中理出頭緒,標準組織遂把這些系統介面編纂成正式的標準。儘管有眾多這樣的
標準存在,但是技術上來說,Linux 並未正式遵循其中任何標準。Linux 將
目標
鎖定在
兩個最重要和最盛行的標準:POSIX 以及 Single UNIX Specification(SUS)。
除了其他項目,POSIX 和 SUS 文件描述了 Unix-like 作業系統介面的 C API。事實上,
它們針對 Unix 系統的相容性,定義出了系統程式設計的方法,或者至少是它的一個共
同子集。
POSIX 和 SUS 的沿革
80 年代中期,電氣及電子工程師學會( ...