應用程序二進制接口(ABI)

每個操作系統都會爲運行在該系統下的應用程序提供應用程序二進制接口(ABI)。ABI包含了應用程序在這個系統下運行時必須遵守的變成約定。ABI總是包含一系列的系統調用和使用這些系統調用的方法,以及關於程序可以使用的內存地址和使用機器寄存器的規定。

 

應用二進制接口,描述了應用程序和操作系統之間,一個應用和它的庫之間,或者應用的組成部分之間的低層接口。ABI不同於應用程序接口(API),API定義了源代碼和庫之間的接口,因此同樣的代碼可以在支持這個API的任何系統中編譯,然而ABI允許編譯好的目標代碼在使用兼容ABI的系統中無需改動就能運行。

ABI掩蓋了各種細節,例如:調用約定(控制着函數的參數如何傳送以及如何接受返回值);系統調用的編碼和一個應用如何向操作系統進行系統調用;以及在一個完整的操作系統ABI中,目標文件的二進制格式程序庫等等。一個完整的ABI,像Intel二進制兼容標準(iBCS),允許支持它的操作系統上的程序不經修改在其他支持此ABI的操作體統上運行。其他的ABI標準化細節包括C++名稱修飾和同一個平臺上的編譯器之間的調用約定,但是不包括跨平臺的兼容性。

發佈了15 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章