0

リスティング ファイルの括弧の意味は何ですか? 例えば、

0000001C E8(00000000)

他の種類の括弧がありますか? そして、彼らは何を意味するのですか?

4

1 に答える 1

3

リンク時に再配置が適用される場所を示しています。

[nnnnnnnn] は絶対再配置を示します (リンカが再配置を実行すると、一部のセクションのベース アドレスがオフセットに追加されます)。たとえば、バイナリが完全にリンクされると、プッシュ str2 命令のこれらのバイトは、.data + 0x09 のベース アドレスを含むように変更されます。

(nnnnnnnn) は、PC 相対再配置を示します (呼び出しと分岐に使用され、最終値は次の命令のアドレスに関連している必要があります)。たとえば、call func2 命令のバイトは、func2 の最終アドレスと次の命令 (call func3) のアドレスの差で更新されます。

この場合、再配置は必要ないため、call func3 命令自体に括弧はありません。call 命令には相対アドレスが必要ですが、func3 は同じセクション内にあるため、相対アドレスは既にわかっています (次の命令は .text にあります)。 + 0x21、func3 は .text + 0x2c にあるため、相対アドレスは .text の最終アドレスに関係なく 0xb になります)。

場所:ここ

于 2012-07-23T15:55:27.060 に答える