現在、x86 命令セット アーキテクチャ (ISA) の動的命令置換に関する研究を行っています。これまでは、RISC-V ベースのプロセッサ アーキテクチャに対してのみ行っていました。FPGA に合成できるパブリック ドメインの x86 実装がないため、今のところ視覚化に固執する必要があります。
私の実験的なセットアップは次のとおりです。ゲストアプリケーション (gcc でコンパイルされ、外部ライブラリなし) は qemu-user-mode で実行されます。(この投稿は非常に役に立ちました: QEMU - コード フロー [命令キャッシュと TCG] ) システム全体は Fedora 25 Linux オペレーティング システムで実行され、最新の git ソースからビルドされます。
いくつかの命令は (私自身のコード分析) に内部的にディスパッチされます
static AddressParts gen_lea_modrm_0(CPUX86State *env, DisasContext *s, int modrm)
そこから、このクラスの命令に何が起こっているのかわかりません。
gen_nop_modrm(env, s, modrm); (translate.c:8108)
呼び出し方法です。
私の主な目的は、命令が認識された後に命令を追加して、同じ命令の連続実行を遅らせることです。
KVM ベースの QEMU 実行がどのように機能するかについて読みました。明らかに、ある種のハイパービジョンが可能です (USB トランザクションの場合でも: https://www.blackhat.com/docs/eu-14/materials/eu-14-Schumilo-Dont-Trust-Your-USB-How-To- Find-Bugs-In-USB-Device-Drivers-wp.pdf ) アーキテクチャは (非常に複雑ではありますが) ここまで単純です。
私は、に興味を持っています:
- これらの gen_lea_modrm メソッドによってキャッチされる命令はどのように処理されますか。
- KVM 経由で単純に渡される命令を観察できますか?
- Translation Buffer (tb) はチャンクされています (私が理解している限り)。バッファを拡張して命令を挿入できますか?
- 命令プロファイリングを行う組み込み機能はありますか
私が持っていた検索語でSOを徹底的に検索しました。どんな種類のヒント、ヒント、または提案も本当に役に立ち、感謝しています。
よろしくお願いします。