4

現在、リンク/ロードの概念を理解するのに苦労しています。

シンボルと再配置テーブルの使用に関する次の記述が正しいかどうか教えてください。

  1. 再配置可能なオブジェクト ファイルでは、シンボル テーブルには、他のオブジェクト ファイルからアクセス/呼び出される変数と関数のエントリが含まれている必要があります。オブジェクトファイルの外で使用されない変数と関数のリストはオプションです。
    • これは、プログラムが 1 つのオブジェクト ファイルのみで構成されている場合、シンボル テーブルを省略できることを意味します。
  2. 再配置可能オブジェクト ファイルでは、再配置テーブルは、ロード中に更新する必要がある、アセンブルされたコードのすべての場所のアドレスを保持します。
  3. リロケータブルでないオブジェクトファイルでは、リロケーションテーブルを省略できます。ただし、オブジェクトは、命令にハードコードされているアドレス空間にロードする必要があります。

御時間ありがとうございます!

4

1 に答える 1

4
  1. 最初の部分 (extern必要な要素のみについて) は正しいです。ただし、単一のオブジェクト ファイルで構成されるプログラムに関する結果は、完全に正しいわけではありません。少なくとも 1 つのシンボルが外部で使用できる必要があります。つまり、エントリ ポイント ( mainC プログラムの関数) が可視でなければなりません。
  2. ここでは異なるコンテキストで異なることを意味するため、ファイル内ではアドレスではなくオフセットaddressについて話すことが望ましいです。再配置テーブルには、ファイルがメモリにロードされたときに更新する必要があるすべてのものへのオフセットと、これらのオフセットに書き込む必要があるものの情報が保持されます。
  3. 再配置不可能なファイルは、特定のアドレスにロードする必要があります。再配置テーブルは必要ありません。
于 2014-10-05T00:06:29.407 に答える