1

私はこれらすべての用語と混同しています:

ABI、呼び出し規約、およびハードウェア アーキテクチャ。

ABI はアーキテクチャとリンクしています。x86-64 には、i386 とは異なる ABI があります。ただし、独自の呼び出し規約 cdecl を定義することもできます...

では、これらすべての概念の間のリンクは何ですか? どちらが他のものを定義していますか?

ほとんどの場合、私は ABI と混同していると思います。呼び出し規約の一部の中に何を入れますか?

ありがとう

4

1 に答える 1

2

これは、いくつかの指針を提供するための広大なトピックです。

ABI (アプリケーション バイナリ インターフェイス) は、アプリケーションが特定のシステム (通常はオペレーティング システム) で動作できるようにするために指定する必要がある詳細をカバーしています。したがって、例を取得するには:

  • データ型のサイズ (たとえば、C 標準は型の最小要件を示しています。int 型は少なくとも short と同じ大きさで、short は 16 ビットである必要があります。)
  • 構造体とビットフィールドのメモリ内レイアウト
  • 呼び出し規約 (関数が呼び出されるとき、パラメーターを見つけることができる場所、レジスター、スタックなど)
  • スタック フレーム (スタック上に存在するもので、デバッガーに役立ちます)
  • システムコール番号
  • その他

基本的に、他のコンポーネント (ライブラリ、OS) と一緒に実行されるプログラムを構築するために知る必要がある詳細は、ABI に含めることができます。詳細を指定する ABI もあれば、詳細を指定しない ABI もあります。

ハードウェア アーキテクチャも仕様と見なすことができますが、さらに低いレベルです (ソフトウェアではなくハードウェアに関するものです)。ハードウェア アーキテクチャは、使用可能な命令セット、メモリ階層、周辺機器へのアクセス方法などを指定します。1 つのハードウェア アーキテクチャに対して、異なる ABI が存在する場合があります。また、複数の (ただし通常は類似した) ハードウェア アーキテクチャに対して同じ ABI を使用することもできます。

于 2010-08-13T15:06:08.883 に答える