IA-32におけるフラグレジスター。
80286までの頃の16ビットFLAGSの上位互換で、下位16ビットはFLAGSと同じまま、32ビットに拡張された。
なお、AMD64以降では更に64ビットに拡張されRFLAGSと呼ばれている。
フラグレジスターは汎用レジスターとは異なる扱いとなっていて、操作には専用の命令が必要である。
フラグレジスター制御のために、次の命令がある。
- pushf (8086互換、EFLAGSの下位16ビットをスタックにPUSH)
- pushfd (EFLAGSをスタックにPUSH)
- popf (8086互換、EFLAGSの下位16ビットをスタックからPOP)
- popfd (EFLAGSをスタックからPOP)
- sahf (AH→EFLAGSの下位8ビット)
- lahf (EFLAGSの下位8ビット→AH)
- clc (CF=0)
- cld (DF=0)
- cli (IF=0)
- cmc (CF= ̄(CF))
- stc (CF=1)
- std (DF=1)
- sti (IF=1)
このほか、比較命令や条件ジャンプ命令、演算命令等により、フラグレジスターは変更ないし参照される。
全32ビット構成で、具体的なビット構成は次のとおり。
ビット | 名称 | 機能 |
0 | CF | キャリーフラグ |
1 | 1 | 1 (未使用) |
2 | PF | パリティフラグ (演算結果の下位8ビット) |
3 | 0 | 0 (未使用) |
4 | AF | 補助キャリーフラグ(BCD演算用) |
5 | 0 | 0 (未使用) |
6 | ZF | ゼロフラグ |
7 | SF | サインフラグ |
8 | TF | トラップフラグ、トレースフラグ |
9 | IF | 割り込みフラグ |
10 | DF | ディレクションフラグ |
11 | OF | オーバーフローフラグ |
12 | IOPL | I/O特権レベル |
13 |
14 | NT | ネストタスクフラグ |
15 | 0 | 0 (未使用) |
16 | RF | デバッグレジスターの命令ブレイクポイントを(1回のみ)無効にする |
17 | VM | 1=仮想86モード |
18 | AC | 変更可能であれば、i486、Pentium以降のCPUである |
19 | VIF | 仮想割り込みフラグ (Pentium以降) |
20 | VIP | 仮想割り込みペンディングフラグ (Pentium以降) |
21 | ID | 変更可能であれば、CPUID命令に対応している |
22 | 0 | 0 (未使用) |
〜 |
31 |
用語の所属

フラグレジスター

専用レジスター