CPUでどの命令が実行されたかを検出する方法は?

CPUでどの命令が実行されたかを検出する方法は?

どのCPU命令が実行されているかを検出する方法を知っている人はいますか?

私は特にテストに興味がありますAES指令最新のIntelおよびAMD CPUで実装されています。これらの命令を検出するカーネルモジュールを書くことは可能ですか?それとも、カーネルが単にCPUに送信された特定のCPU命令を知らないのですか?

答え1

ほとんどの場合、CPUはカーネルを含まずにプロセスの命令を実行します。ユーザーレベルのプロセスでトラップが発生した場合にのみ、カーネルが無効なコマンド(ここでは無効)を実行しようとする必要があります。さまざまな理由)またはソフトウェア割り込みを呼び出すことによって。 AES命令は直接実行され、カーネルは命令が実行されていることを認識しません。

使用できる関連パフォーマンスカウンタがないと思います。 AES命令に異常な実行パターンがあります。可能統計的に識別することは可能ですが、試したことはなく、通常は適用されません。

次のような適切なエミュレータを試すことができます。、またはバイナリを分析して、それらが使用する命令を決定します。Debian: x86-64 バイナリはどの命令を使用しますか?後者に関する追加情報があります。

関連情報