ステータスレジスタ【status register】フラグレジスタ
別名 :flag register/コンディションコードレジスタ/CCR/condition code register
概要

ステータスレジスタの各ビットはそれぞれ独立した役割を持ち、特定の命令を実行した結果に応じて内容が変化する。どの命令が実行されたときにどのビットがどう変化するかは命令セットの仕様で定められており、プロセッサの種類ごとに異なる。x86系やARM系など、アーキテクチャが異なればフラグの構成や名称も異なる。
代表的なフラグとして、演算結果がゼロになったことを示す「ゼロフラグ」、結果が負の値であることを示す「サインフラグ」、符号付き整数の演算で表現可能な範囲を超えたことを示す「オーバーフローフラグ」、最上位ビットへの繰り上がりや繰り下がりが生じたことを示す「キャリーフラグ」などがある。
条件分岐命令は、これらのフラグを参照して次に実行する命令を切り替える。例えば、比較命令は内部で減算を行ってその結果をステータスレジスタに反映させ、続く分岐命令がゼロフラグや符号フラグを読み取ることで、等値判定や大小比較を実現する。繰り返し処理における終了判定もこの仕組みで実装される。
キャリーフラグは多倍長演算でも活用される。レジスタの桁数を超える大きな整数を加算する際、下位桁の加算で生じた繰り上がりをキャリーフラグに保持し、次の上位桁の加算命令に反映させることで、CPUが本来扱えるビット幅を超える数値の計算を連続して行える。アセンブリ言語やコンパイラはこの仕組みを利用して多倍長演算を制御する。
ステータスレジスタには演算結果以外の情報を保持するビットが含まれることもある。割り込みの許可・禁止状態や、プロセッサの特権レベル、動作モードなどを管理するビットが設けられているアーキテクチャもあり、CPU全体の制御情報を集約した領域としての性格を持つ場合もある。
(2026.6.15更新)