1. ホーム
  2. abi

[解決済み】APIとABIの違いについて

2022-04-02 01:11:51

質問

私はLinuxシステムプログラミングの初心者で、APIとABIを読んでいるときに出会いました。 Linuxシステムプログラミング .

APIの定義。

APIとは、以下のようなインターフェイスを定義するものです。 あるソフトウェアが通信する をソースレベルで共有することができます。

ABIの定義。

APIがソースを定義するのに対して インターフェイスを定義するのに対し、ABIは の間の低レベルバイナリインターフェース またはそれ以上のソフトウェアの断片を 特定のアーキテクチャ 定義するのは アプリケーションの相互作用 アプリケーションがどのように カーネルとの関係、そして アプリケーションはライブラリと相互作用します。

プログラムはどのようにしてソースレベルで通信することができるのですか?ソースレベルとは何でしょうか?ソースコードと何か関係があるのでしょうか?それとも、ライブラリのソースはメインプログラムに含まれるのですか?

私が知っている唯一の違いは、APIは主にプログラマーが使用し、ABIは主にコンパイラが使用することです。

どのように解決するのですか?

APIは人間が使うものです。私たちはソースコードを書きます。プログラムを書いていて、あるライブラリの機能を使いたいときは、次のようなコードを書く。

 long howManyDecibels = 123L;
 int ok = livenMyHills( howManyDecibels);

というメソッドがあることを知る必要がありました。 livenMyHills() これは長い整数のパラメータを取ります。つまり、プログラミングインターフェイスとして、すべてソースコードで表現されているのです。コンパイラはこれを、特定のオペレーティング・システム上でこの言語の実装に準拠した実行可能な命令に変換します。この場合、オーディオ・ユニットに対する低レベルの操作になります。つまり、特定のビットとバイトが、あるハードウェアに吹き込まれるわけです。つまり、実行時には、普段は目にすることのないバイナリレベルの動作がたくさん行われているのです。