2016-07-04 13 views
3

それは命令がPOCNT、LZCNT、ADOX命令以外の命令の必須プレフィックスとしてF3Hを使用できますか?

F3Hの前に置かれIntel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 2A and 2B: Instruction Set Reference, A-Z

2.1.1で述べたようにもPOPCNT、LZCNTとADOX命令のための必須の接頭辞として使用されます。 F3 0F E6:

しかし

2.1.2オペコード例えば

では、CVTDQ2PDは、以下の配列からなります。最初のバイトは必須プレフィックスです(繰り返しプレフィックスと見なされません)。

intel's-manualのオペコードの最初のバイトがF3Hなら、その命令の必須接頭辞ですか?

答えて

4

はい。

シーケンス0F E6では、最初のバイト0Fは、2バイトのオペコードエスケープです。
他のバイトE6付録A(セクションA.3)のテーブルに従って変換され、ここで短いフォーム

CVTDQ2PD and siblings

上段は、バイトの下位ニブルであり、最初の列に報告されています高い方です。

F3バイトがないと、シーケンス0F E6は命令をエンコードしません。
66 0F E6vcvttpd2dq
F3 0F E6をコードしているそうです、F3は必須ですvcvtpd2dq

をコードしvcvtdq2pd
F2 0F E6をコードしています。


は確かにIntelが何をしたかの癖だった、バイトF3は本当rep接頭語であるが、CPUは次のようなことを解釈することはありません。サイズオーバーライドとvcvtpd2dq

  • unm2としてvcvtdq2pd
  • repne unm2振る舞うようud2
  • rep unm2振る舞うよう

    • unm2振る舞う:あなたは無名の命令として0F E6と考えることができ
      は、unm2、などと言いますvcvttpd2dq
  • +0

    詳細を説明してくれてありがとうございます。 – Steve

    関連する問題