最終更新:2015-10-20 (火) 13:11:57 (3336d)  

x86/レジスタ
Top / x86 / レジスタ

種類

基本プログラム実行レジスタ

x86/汎用レジスタ

  • 8個の汎用レジスタ (32bit) - 各種演算、アドレス計算、ポインタなどに使用
    レジスタ名称用途
    EAXアキュムレータオペランドと結果データ用のアキュムレータ。
    EBX?ベースレジスタDS セグメント内のデータに対するポインタ
    ECX?カウントレジスタストリング操作およびループ操作用のカウンタ
    EDX?データレジスタデータ一時記憶、EAXとの連携による乗除算
    ESI?ソースインデックスDSレジスタがポイントするセグメント内のデータに対するポインタ。ストリング操作ではソースポインタ。
    EDI?ディスティネーションインデックスES レジスタがポイントするセグメント内のデータ(またはデスティネーション)に対するポインタ;ストリング操作ではデスティネーション・ポインタ。
    EBP?ベースポインタデータを格納したアドレスのポインタ
    ESPスタックポインタ?スタック上のデータ格納アドレスのポインタ

セグメントレジスタ

  • 6個のセグメントレジスタ (16bit) - メモリ内のセグメントを識別する特殊なポインタ
    CSコードセグメントコードへのポインタ
    SSスタックセグメントスタックを格納するアドレスのセグメント
    DSデータセグメントデータの読み書きをするアドレスのセグメント
    ESデータセグメントデータの読み書きをするアドレスのセグメント(Extra)
    FS?データセグメント追加データ
    GS?データセグメント更に追加データ

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のアドレス空間をアクセス可能です。そのため、セグメントを意識する必要はなくなりました。

参考