アプリケーションバイナリインタフェースABI, : Application Binary Interface)とは、アプリケーション(ユーザ)プログラムとシステム(オペレーティングシステムライブラリ)との間の、バイナリレベルのインタフェースである。また、アプリケーション相互間や、それらの部品(プラグイン等)とのバイナリインタフェースもある。

ABIはアプリケーションプログラミングインタフェース (API) とは異なる。APIはソースコードとライブラリ間のインタフェースを定義したものであり、同じAPIをサポートしたシステム間では同じソースコードをコンパイルして利用できる。一方、ABIはオブジェクトコードレベルのインタフェースであり、互換ABIをサポートするシステム間では同じ実行ファイルを変更無しで動作させることができる。

概要

編集

ABIには、以下のような定義が含まれる。

Intel Binary Compatibility Standard (iBCS) のような完全なABIでは[1]、オペレーティングシステム (OS) が何であれ必要な共有ライブラリが存在するなどの前提条件が満たされていれば、そのABIをサポートしたシステム間でプログラム(実行ファイル)を全く修正せずに動作させることができる。

他のABIとして例えばC++名前修飾[2]例外の伝播[3]や呼出規約があるが、あくまでも同じプラットフォーム上のコンパイラ間のABIであり、プラットフォーム間の互換性までは要求されない。

EABI

編集

EABI (Embedded Application Binary Interface) とは、組み込みシステムのソフトウェアについてのファイルフォーマット、データ型、レジスタ使用法、スタックフレームの構成、関数の引数渡し方法などについての規約を意味する。

あるEABIをサポートするコンパイラで生成したオブジェクトコードは、同じEABIをサポートする別のコンパイラで生成したコードと互換性があり、コンパイラが異なっていても同じEABIに対応していればライブラリやオブジェクトコード間でリンク可能である。アセンブリ言語でコードを書く場合でもEABIに準拠するように書けば、他のコードとのリンクが保証される。

EABIと汎用OS向けABIとの主な違いは、アプリケーションのコードでも特権命令の使用が許されている点、ダイナミックリンクが要求されない点(完全に不可能とされている場合もある)、メモリを節約するためスタックフレームをなるべくコンパクトに構成している点が挙げられる[4]

EABIが広く使われているCPUアーキテクチャとしては、PowerPC[5]ARM[6]MIPS[7]がある。

EABIの選択は性能に影響することがある[8][9]

ABI共通化の試みとその成果

編集

Unix系OSでは、同じハードウェアプラットフォーム上で非互換な複数のOSが動作する。

例えばRISCチップにおいては以下のような例がある。

最も互換Unix系OSが多いのは、IA-32系であろう。それらOS間でABIを定義して相互にアプリケーションが動作できるようにしようという試みがいくつかあった。しかし、そのような計画が成功したことはない。Linuxにおいては、Linux Standard Base(LSB)が同様の試みを行っている(LSBはABI以外にも多くの規定を試みている)。

一方、採用ベンダ数が多く、複数のUnix系OSが乱立していたMIPS系においては、何度もABIの共通化を目指した試みがなされている。

例えば、1990年代中盤〜後半にかけてUNIXワークステーション / サーバにおいて、MIPS系CPUを採用したNEC(UX/4800)、Sony(NEWS)、住友電工EWS4800などのNECからのOEM品とSUMIStation)、日本タンデムコンピュータ(MIPS系だったNonStopServer)によるOCMP (Open Computing Environment for MIPS Platform) が定義され、シェアの維持など一定の成果を挙げた。OCMPはMIPS-ABIの日本語対応の側面とAPバスの標準化による周辺デバイスの共通化の側面がある。

脚注

編集
  1. ^ Intel Binary Compatibility Standard (iBCS)
  2. ^ Itanium C++ ABI (compatible with multiple architectures)
  3. ^ Itanium C++ ABI: Exception Handling (compatible with multiple architectures)
  4. ^ “EABI Summary”. PowerPC Embedded Application Binary Interface: 32-Bit Implementation (Version 1.0 ed.). Freescale Semiconductor, Inc. (1995-10-01). pp. 28–30. http://www.freescale.com/files/32bit/doc/app_note/PPCEABI.pdf 
  5. ^ "PowerPC Embedded Processors Application Note"
  6. ^ EABI2
  7. ^ MIPS EABI
  8. ^ Debian ARM accelerates via EABI port”. Linuxdevices.com (2007年1月19日). 2012年7月14日時点のオリジナルよりアーカイブ。2007年10月11日閲覧。
  9. ^ Andrés Calderón and Nelson Castillo (2007年3月14日). “Why ARM's EABI matters”. Linuxdevices.com. 2007年10月22日時点のオリジナルよりアーカイブ。2007年10月11日閲覧。

関連項目

編集

外部リンク

編集

📚 Artikel Terkait di Wikipedia

インタフェース (情報技術)

フロッピーディスク ソフトウェア間の通信を行う際の情報の渡し方などを決めたもの。 API (Application Programming Interface) ABI (Application Binary Interface) プロセス間通信 ネットワーク オブジェクト指向プログラミングにおいて、複数の種

Carbon (API)

CFMやMach-OはABI (Application Binary Interface) のことで、API (Application Programming Interface) とは無関係。 ^ Choosing a Development Path for Your Carbon User Interface 表示 編集

Transport Layer Interface

Addison-Wesley. ISBN 0-201-52374-4  Santa Cruz Operation (1997). System V Application Binary Interface — Intel386 Architecture Processor Supplement (4th ed.). Santa

コンピュータ略語一覧

(無線LAN) APC 大型コンピュータの電源制御 (Automatic Power Controller) API Application Programming Interface APM Advanced Power Management ARP Address Resolution Protocol

WebAssembly

environments such as the Web. These will each define a WebAssembly application programming interface (API) suitable for a given environment.” ^ “Introduction —

ABI

クノロジーズとなったのち、現在はサーモフィッシャー・サイエンティフィック。 アプリケーションバイナリインタフェース(英: Application Binary Interface)- オペレーティングシステム (OS) とアプリケーションのインタフェース。 Ankle Brachial Pressure

OPT

ReaderのLinux版は/opt/Adobeにインストールされる)。System V Interface Definition (Third Edition)を基にしたSystem V Application Binary Interfaceに同様の定義が見られる。 オプトイン - 「選択」を意味する英単語

オフィススイートの比較

stated if supported. ^ Dropped 2006. ^ Version 2000. ^ a b Microsoft's binary file formats for Office 97-2003 ^ a b An open file format for word processing