什麼是ABI(應用程式二進位介面)

讓已編譯的程式與函式庫能一起運作的機器碼層級約定。包含呼叫慣例、資料型別的大小與對齊、系統呼叫的呼叫方式等。

日文名稱: ABI(アプリケーションバイナリインターフェース)

「ABI(應用程式二進位介面)」出現在2領域的3道練習題中(指令集與組合語言, 連結器與載入器與執行檔格式等)。

這個名詞所屬的領域: 指令集與組合語言

練習ABI(應用程式二進位介面)的題目

下列何者是對ABI(應用程式二進位介面)的正確說明?

  1. A在原始碼層級,規定函式名稱與引數型別的約定
  2. B只規定CPU的指令種類與位元排列的約定
  3. C規定呼叫慣例、資料型別的大小與對齊等,在機器語言層級將程式之間連結起來的約定
查看答案與解析

正確答案:C. 規定呼叫慣例、資料型別的大小與對齊等,在機器語言層級將程式之間連結起來的約定

ABI是讓編譯完成的程式或函式庫能一起運作的機器語言層級的約定,包含呼叫慣例、int、long與指標的大小、結構體的對齊、系統呼叫的呼叫方式等。API是在原始碼層級規定函式使用方式的東西,即使API相同,只要ABI不同,函式庫不重新製作就無法使用。即使是相同的RISC-V ISA,依作業系統或用途不同,ABI也可能不同。

解析中的「ABI(應用程式二進位介面)」

出現「ABI(應用程式二進位介面)」的題目(3題)

  1. 下列何者是對ABI(應用程式二進位介面)的正確說明?
  2. 下列何者是制定呼叫慣例(calling convention)的主要目的?
  3. 建置共用函式庫時,只公開要從外部使用的函式,並將內部函式的符號可見性(visibility)設為「hidden」,其優點下列何者正確?

相關名詞

呼叫慣例 系統呼叫 指令集架構(ISA) PLT(程序連結表) GOT(全域偏移表) 動態連結器(Dynamic linker) 分支延遲槽 立即值 呼叫者保存暫存器 定址模式

前往名詞解釋列表