x86 arch に固有の Linux 用の小さな逆アセンブラーを作成しようとしているときに、小さな問題に直面しました。必須のプレフィックスと繰り返しプレフィックスに関するものです。Intel ドキュメント [1] を見ると、繰り返しプレフィックスは0xf2または0xf3であり、必須プレフィックスは0x66、0xf2または0xf3であると言われています。
次の基本オペコードを持つ 2 つの命令があります。
crc32 -- f2 0f 38 f0 (ここで、0xf2 は必須のプレフィックスです)
movbe -- 0f 38 f0
したがって、カウンタ レジスタがゼロでない限り繰り返す必要がある「movbe」命令のオペコードは次のようになります。
repnz movbe == f2 0f 38 f0
命令の逆アセンブルを開始するときに、バイト0xf2が表示されている場合、それが crc32 命令の必須プレフィックスであるが、movbe命令の繰り返しプレフィックスではない、またはその逆であることをどのように確認できますか? オペコード パターン「f2 0f 38 f0」と一致する命令はどれですか?
私は何が欠けていますか?
[1] http://www.intel.com/design/intarch/manuals/243191.HTM
ありがとう、よろしく、
Hrishikesh Murali