REXプリフィックス
読み:アーイーエックス-プリフィックス
外語:REX prefix

 x64(AMD64 ISA/Intel 64)で追加された、64ビット拡張に関する接頭辞。
目次

概要
 ロングモードでは、64ビット化するにあたり、16ビット時代から存在した1バイトのinc/dec命令であるinc reg16/dec reg16命令(op 0x40〜0x4f)を廃止してこの位置にプリフィックスを再定義した。結果として、4ビット分のビットフィールドが確保された。
 このプリフィックスは、従来のx86命令では決定的に情報量が不足していたModR/MSIBバイトの拡張用としての機能を持っている。つまり、CPUの64ビット化にあたってオペランドのサイズを64ビットにするというだけではなく、オペランドの数を倍にして、従来はなかったr8〜r15を使用することを可能とする。
 つまり、ロングモードで32ビット命令を使う場合でも、r8〜r15を使う場合はREXプリフィックスを使用する。

特徴

併用
 他のプリフィックス、例えば66Hや67Hなどのプリフィックスは、REXプリフィックスの前に置く。なお 0F プリフィックス以降は後にする。
 例
 66 REX.W 0F 3A 16 /r ib ‐ PEXTRQ r/m64, xmm2, imm8

技術
 4ビットの領域のうち、ビット3から0の順にREX.w、REX.r、REX.x、REX.bと呼ばれている。
76543210
 0  1  0  0 REX.wREX.rREX.xREX.b
 ちなみにREXプリフィックスを用いると、bp/sp/si/diの下位8ビットレジスターも利用可能になり、それぞれbpl/spl/sil/dilと呼ばれる。
 もっとも、sil/dilはともかく、bplやsplのメリットは誰にも分からないが、あくまでも都合上生じた産物である。

再検索