プログラムカウンタ【program counter】プログラムレジスタ

別名  :PCレジスタ/命令アドレスレジスタ/instruction address register/命令ポインタ/instruction pointer/インストラクションポインタ/IPレジスタ/逐次制御カウンタ/SCC/Sequential Control Counter

プログラムカウンタとは?

CPU内部に存在するレジスタの一種で、次に実行すべき命令が格納されているメモリ上のアドレスを保持するもの。また、その保存しているアドレス値。
プログラムカウンタのイメージ画像

レジスタCPU内部にある高速な記憶回路で、プログラムカウンタはそのうちの一つである。CPUプログラムを実行する際、メモリ上に配置された機械語命令をプログラムカウンタが指し示すアドレスから順に読み出す。命令を一つ実行するごとに、プログラムカウンタの値は次の命令の先頭アドレスへと更新される。命令長が固定のCPUでは一定値を加算し、可変長命令を採用するCPUでは読み込んだ命令のサイズ分だけ値を進める。

条件分岐命令やジャンプ命令が実行された場合、プログラムカウンタは加算による更新ではなく、指定された別のアドレスへ直接書き換えられる。これによりプログラム中での命令の実行順序が変わり、ループや条件による分岐が実現できる。関数呼び出しでは呼び出し先のアドレスへ移動し、処理が終わると保存しておいた復帰先アドレスへ戻る。こうした処理もプログラムカウンタの書き換えによって行われる。

プログラムカウンタはCPUが自動的に管理するものであり、通常は利用者やプログラマが直接操作するものではない。ただし、x86系やARM系など一部のアーキテクチャでは、特定の命令を通じて間接的に参照または変更できる場合もある。機械語レベルのデバッグや異常終了時の解析では、プログラムカウンタの値を確認することで、どの命令を実行中だったかを特定できる。

マルチタスクOSでは、複数のプロセスやスレッドを切り替えながら並行して実行するため、実行プログラムの切り替え(コンテキストスイッチ)の際にプログラムカウンタの値を保存し、再開時に復元する処理が行われる。これにより、切り替え前の実行位置から処理を再開できる。

他の辞典等による「プログラムカウンタ」の解説 (外部サイト)

資格試験などの「プログラムカウンタ」の出題履歴

▼ ITパスポート試験
平24春 問61】 CPUにおけるプログラムカウンタの説明はどれか。
▼ 基本情報技術者試験
令4修1 問11】 CPUのプログラムレジスタ(プログラムカウンタ)の役割はどれか。
平30秋 問10】 割込み処理の終了後に,割込みによって中断された処理を割り込まれた場所から再開するために,割込み発生時にプロセッサが保存するものはどれか。
平27修7 問9】 CPUのプログラムレジスタ(プログラムカウンタ)の役割はどれか。
平23秋 問10】 CPUのプログラムレジスタ(プログラムカウンタ)の役割はどれか。
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。