ModR/MModR/Mバイトは、x86命令セットの命令エンコーディングの重要な部分である。 説明x86のオペコードは通常1バイトだがしかし、2バイトの命令とプリフィックスも存在する。ModR/Mはオペコードに続くバイトで、命令がどのように実行されるかについての追加情報を追加する[1](§2.1)。フォーマットは以下の通りであり:
REGにはレジスタの指定が、R/MにはMODの値に応じてレジスタを格納するか、アドレッシングモードの指定が当て嵌まる。 一部の命令はModR/MバイトのREG部分を利用できない。これらの命令の多くは、(1つのオペコードで複数の命令を参照でき、そしてREGフィールドが命令を決定する)このフィールドを使用して「多重化」される(からである)。 オペコードのリストでは、これらはオペコードの後にスラッシュ (/) と数字0~7を続けることによって指定される[1](§3.1.1.1)。 64ビット切り替えModR/Mバイトは、AMDの64ビット拡張によってオリジナルの命令セットへ導入された変更の中心となる。ロングモードでは、最上位4ビットが SIBバイトSIBバイトは、i386以降のx86アセンブリのオプションのポストオペコードバイトで、複雑なアドレス指定に使用される。 SIBバイトはModR/Mバイトと同様にフォーマットされ、
リファレンス
関連項目 |