This page looks best with JavaScript enabled

什麼是ABI?

 ·  ☕ 1 min read

所以是什麼?

我們比較abi與api

  • api
    • 你寫程式呼叫函式庫(#include<stdio.h>)與api(printf)
  • abi
    • 編譯完成後,約定底層的行為

誰需要知道abi

開發編譯器,組合語言,作業系統的人
https://stackoverflow.com/questions/2171177/what-is-an-application-binary-interface-abi

ABI範例

  • RISC-V ELF psABI specification

    • 定義riscv每個暫存器負責什麼
  • Procedure Call Standard for the Arm Architecture

    • 定義arm每個暫存器負責什麼
  • System V AMD64 ABI

    • 規定Solaris,GNU/Linux,FreeBSD和其他非微軟OS如何傳遞
    • stack如何規劃與維護
    • 定義x86每個暫存器負責什麼
  • Itanium C++ ABI

    • 確保編譯出來的檔案可以互相操作,舉例object file可以link在一起,或是可以呼叫動/靜連結庫
    • GCC and Clang都是依照此abi所規範,所以可以相容object file
  • https://abi-laboratory.pro

python abi 範例

call

c

Share on

呂奕珣
WRITTEN BY
呂奕珣
SDN ML FINTECH HFT