注釈付き逆アセンブリコードの解釈

注釈付きの逆アセンブリコードを解釈することは、容易ではない作業です。命令がある行の中のメトリックは、次の理由により、その命令の実行の結果であるメトリックとして解釈することは通常できません。

  1. メトリックは、各呼び出しスタックのリーフ PC (プログラムカウンタアドレス) に割り当てられます。リーフ PC は、イベント記録時に実行中の命令のアドレスではなく、次に実行される命令のアドレスです。

    タイミングデータの場合、「この命令の実行に要した時間」ではなく、「この命令が実行されるのを待つことに要した時間」がメトリックであることになります。

  2. 命令はグループ別に発行され、複数の命令が同時に実行される可能性があるので、どの命令が次に実行されるのかについては多少の不確定さが伴うことがあります。
  3. 1 つのハードウェアカウンタイベントについて記録された PC は、そのイベントをトリガした命令から多くの命令を隔てたその先である可能性があります。間に介在する複数の命令には、分岐が含まれていることがあります。制御転送命令が存在していると、どの命令がハードウェアカウンタオーバーフローをトリガしたのかを確認するのがむずかしくなります。

TLB ミスを出力する命令は、例外です。TLB ミスをトリガしたロードやストアはミスを満たした後リトライされるので、ロード命令やストア命令に割り当てられたメトリックはその命令が起因していると解釈することができます。

メモリー操作に関するイベントをカウントするハードウェアカウンタに対して、コレクタは、ハードウェアカウンタの名前の先頭文字が + の場合にイベントをトリガーした命令を検索します。 検索が成功した場合は、メトリックは、そのイベントをトリガーした PC に割り当てられます。

関連項目
「逆アセンブリ」タブ

お探しの物が見つかりませんか? ご意見は電子メールで docfeedback@sun.com までお寄せください。
著作権と商標について