Application Binary Interface

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索

Application Binary Interface(アプリケーション・バイナリー・インタフェース、ABI)とは、アプリケーションプログラム基本ソフトウェアであるオペレーティングシステム (OS) の間の低レベルのインタフェースを意味する。あるいはアプリケーションとライブラリ、あるいはアプリケーション内の部品間のインタフェースもABIと言うことがある。

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

[編集] 概要

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

Intel Binary Compatibility Standard (iBCS) のような完全なABIでは、OSが何であれ、そのABIをサポートしたシステム間でプログラム(実行ファイル)を全く修正せずに動作させることができる。他のABIとして例えばC++名前修飾や呼び出し規則があるが、あくまでも同じプラットフォーム上のコンパイラ間のABIであり、プラットフォーム間の互換性までは要求されない。

[編集] ABI共通化の試みとその成果

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

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

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

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

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

[編集] 関連項目

個人用ツール
名前空間

変種
操作
案内
ヘルプ
ツールボックス
他の言語