アプリケーションバイナリインターフェイス(ABI)とは何ですか?
私はABIが何であるかを明確に理解したことがありません。ウィキペディアの記事を紹介しないでください。理解できたらここまでそんなに長い投稿はしないでしょう。 これは、さまざまなインターフェイスに関する私の考え方です。 テレビのリモコンは、ユーザーとテレビの間のインターフェースです。これは既存のエンティティですが、それ自体では役に立ちません(機能を提供しません)。リモコンのこれらの各ボタンのすべての機能は、テレビに実装されています。 インターフェース:それは間の「既存のエンティティ」層であり、 functionalityかつconsumerその機能の。インターフェイス自体は何もしません。背後にある機能を呼び出すだけです。 ユーザーが誰であるかに応じて、さまざまなタイプのインターフェースがあります。 コマンドラインインターフェイス(CLI)コマンドは既存のエンティティであり、コンシューマがユーザーであり、機能は背後にあります。 functionality: 私たちがこのインターフェースを説明しているいくつかの目的を解決する私のソフトウェア機能。 existing entities: コマンド consumer: ユーザー グラフィカルユーザーインターフェイス(GUI)ウィンドウ、ボタンなどは既存のエンティティであり、コンシューマがユーザーであり、機能は背後にあります。 functionality: このインターフェイスについて説明している問題を解決するソフトウェア機能。 existing entities: ウィンドウ、ボタンなど consumer: ユーザー アプリケーションプログラミングインターフェイス(API)関数(またはより正確には)のインターフェイス(インターフェイスベースのプログラミングの場合)は既存のエンティティであり、コンシューマーはユーザーではなく別のプログラムであり、機能はこのレイヤーの背後にあります。 functionality: このインターフェイスについて説明している問題を解決するソフトウェア機能。 existing entities: 関数、インターフェイス(関数の配列)。 consumer: 別のプログラム/アプリケーション。 Application Binary Interface(ABI)ここからが私の問題の始まりです。 functionality: ??? existing entities: ??? consumer: ??? ソフトウェアをさまざまな言語で作成し、さまざまな種類のインターフェース(CLI、GUI、API)を提供しましたが、ABIを提供したことがあるかどうかはわかりません。 ウィキペディアは言う: ABIは次のような詳細をカバーします データ型、サイズ、および配置。 関数の引数の受け渡し方法と戻り値の取得方法を制御する呼び出し規約。 システムコール番号、およびアプリケーションがオペレーティングシステムに対してシステムコールを行う方法。 他のABIは次のような詳細を標準化します C ++名のマングリング、 例外の伝播、および …