REXプリフィックス

読み:アーイーエックス・プリフィックス
外語:REX prefix
品詞:名詞

AMD64 ISAおよび互換環境(Intel 64)で追加された、64ビット拡張に関する接頭辞。

ロングモードではinc reg16/dec reg16命令(op 0x40〜0x4f)を廃止し、この位置に再定義したもので、4ビット分のビットフィールドが存在する。

これはプリフィックスというよりは、x86命令では決定的に不足しているmod r/mとSIBの拡張用としての機能を持っている。つまりオペランドサイズを64ビットにするだけではなく、オペランドとしてr8〜r15を使用する場合にもREXプリフィックスを使用する。

4ビットの領域のうち、ビット3から0の順にREX.w、REX.r、REX.x、REX.bと呼ばれている。

76543210
 0  1  0  0 REX.wREX.rREX.xREX.b
  • REX.w ‐ 1=オペランドサイズを64ビットにする。
  • REX.r ‐ mod r/mのregフィールドのビット4として機能する。
  • REX.x ‐ SIBのindexフィールドのビット4として機能する。
  • REX.b ‐ mod r/mのr/mフィールドや、SIBのbaseフィールドのビット4として機能する。

ちなみにREXプリフィックスを用いると、bp/sp/si/diの下位8ビットレジスタも利用可能になり、それぞれbpl/spl/sil/dilと呼ばれる。

もっとも、sil/dilはともかく、bplやsplのメリットは誰にも分からない。