最終更新:2015-10-20 (火) 13:11:57 (3336d)
x86/レジスタ
種類
基本プログラム実行レジスタ
x86/汎用レジスタ
- 8個の汎用レジスタ (32bit) - 各種演算、アドレス計算、ポインタなどに使用
レジスタ 名称 用途 EAX アキュムレータ オペランドと結果データ用のアキュムレータ。 EBX? ベースレジスタ DS セグメント内のデータに対するポインタ ECX? カウントレジスタ ストリング操作およびループ操作用のカウンタ EDX? データレジスタ データ一時記憶、EAXとの連携による乗除算 ESI? ソースインデックス DSレジスタがポイントするセグメント内のデータに対するポインタ。ストリング操作ではソースポインタ。 EDI? ディスティネーションインデックス ES レジスタがポイントするセグメント内のデータ(またはデスティネーション)に対するポインタ;ストリング操作ではデスティネーション・ポインタ。 EBP? ベースポインタ データを格納したアドレスのポインタ ESP スタックポインタ? スタック上のデータ格納アドレスのポインタ
セグメントレジスタ
- 6個のセグメントレジスタ (16bit) - メモリ内のセグメントを識別する特殊なポインタ
EFLAGSレジスタ
- EFLAGSレジスタ (32bit) - 演算結果にオーバーフローが生じたり、演算結果がゼロであったりしたときなど、CPU内のステータスが変化したときにその状態に応じて値が変化。
EIPレジスタ
- EIPレジスタ (32bit) - 次に実行される命令が格納されているアドレスを保持
SIMD
その他
- x87 FPUレジスタ (ST0~ST7,etc)
- コントロールレジスタ? (CR0~CR5)
- メモリ管理レジスタ? (GDTR?,IDTR?,LDTR?)
- デバッグレジスタ? (DR0~DR7)
- メモリタイプ範囲レジスタ? (MTRR)
- マシン固有レジスタ? (MSR)
- マシンチェックレジスタ?
メモ
- 16ビットプログラミングでは常にセグメントを意識したプログラミングが求められていましたが、32ビットプロセッサであるIntel386プロセッサからは「フラット」メモリモデル機能をサポートしたため、32ビットポインタのみを使用して最大4Mのアドレス空間をアクセス可能です。そのため、セグメントを意識する必要はなくなりました。