レジスター (x86)
読み:レジスター
外語:register

 x86シリーズにある、最高速の記憶装置のこと。
目次

概要
 x86シリーズは、16ビット、32ビット、64ビットと拡張が続けられている。
 レジスターについても、アーキテクチャーの拡張に応じてビット長が長く拡張されたり、数が増やされたりしている。但し、互換性などから従来のアーキテクチャーも残されており、ここに独特の特徴がある。
 また、従来のFPUはレジスターというよりは8個までの値を格納できるスタックであるが、MMXではそれぞれをレジスターとして直接指定して扱えるようになっているなどの仕様拡張もある。

特徴

MMX
 MMX用レジスターは、従来のFPU用レジスターと同じ領域にマッピングされているため、MMX命令とx87 FPU命令は排他的に使用する。
 但し、MMXのmm0〜mm7は内部物理レジスターへ直接マッピングされ直接参照できるのに対し、従来のFPUはあくまでスタックであるのでST(0)〜ST(7)はポインターによって間接的に参照される。

一覧
 64ビット、32ビット、16ビット全てを含めたレジスター構成は、次の通りである。

汎用レジスター
 64ビットモードでは、汎用レジスターは64ビットが16本ある。なお、32ビットモードは32ビットが8本、16ビットモードは16ビットが8本であった。
 64ビットの各レジスター(Rxx)の下位32ビットが32ビットの各レジスター(Exx)に対応し、32ビットの各レジスターの下位16ビットが16ビットの各レジスター(xx)に対応する。
 64ビットで追加された8本のレジスター(R8〜15)は、機械語の水準ではREXプリフィックスによって指定される。
 REXプリフィックスを使用すれば、RSI、RDI、RSP、RBPの各レジスターの下位8ビットをSIL、DIL、SPL、BPLとして扱うことが可能。一方、64ビットで追加された8本のレジスターのビット8〜15をバイト単位で扱う(AXレジスターに対するAHレジスターのような)ことはできない。

数値演算用
 FPUレジスターは80ビット長だが、同じ内部物理レジスターにマッピングされているMMXレジスターは64ビット長である。
 SSE用の新規に作られたXMMレジスターは128ビットで、VEXプリフィックス使用時には256ビットのYMMレジスターに拡張できる。
 MMXレジスターとXMM/YMMレジスターは全く異なるものだが、XMM‐MMX間での転送命令などが用意されている。

その他専用レジスター

再検索