プログラムカウンタとは?ぷろぐらむかうんた
プログラムカウンタとは、次に実行する命令が置かれた主記憶上のアドレスを保持するレジスタ。命令をフェッチするたびに命令長ぶん自動的に進み、分岐・サブルーチン呼出し・割込みが起きると飛び先アドレスへ書き換わる。実行の現在位置そのものなので、退避と復帰の対象として制御の連続性を担う。
最終更新:2026-10-06
この語が出る過去問を解く →背景
プログラム内蔵方式では命令もデータも同じ主記憶に並んでいるため、「いまどこを実行しているか」を保持する場所がハードウェア側に必要になる。プログラムカウンタはその1点であり、値を書き換えるだけで実行の流れを移せるという性質が、分岐・関数呼出し・割込み・タスク切替えのすべてを支えている。組込みでは、暴走時にこの値がどこを指していたかが原因究明の出発点になるため、退避と参照の経路を理解しているかがそのままデバッグ能力に直結する。
具体例
Arm Cortex-Mでは例外発生時に、プログラムカウンタとステータスレジスタを含む一群のレジスタがハードウェアで自動的にスタックへ積まれる。フォールト発生後にそのスタックフレームからプログラムカウンタの値を取り出し、マップファイルと突き合わせて暴走箇所を特定するのが定番の追い込み方になる。
試験での引っ掛け
演算結果を保持するアキュムレータ、直前の演算のフラグを持つステータスレジスタ、フェッチした命令そのものを保持する命令レジスタと役割を入れ替える選択肢が定番。保持するのは命令の中身ではなくアドレスである点、分岐命令の実行中はすでに次のアドレスを指している点が問われやすい。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問2(IPA)
命令アドレスレジスタ(プログラムカウンタ)に関する記述として、適切なものはどれか。
正解:条件分岐命令を実行すると、命令アドレスレジスタの内容が書き換えられることがある。
要点:プログラムカウンタは次の命令アドレスを保持し分岐で変わる
命令アドレスレジスタ(プログラムカウンタ)は、次に実行すべき命令が置かれている主記憶上のアドレスを保持するレジスタで、通常は命令の取出しごとに自動的に進む。条件分岐命令では条件が成立した場合に分岐先アドレスがこのレジスタへ設定されるため、内容が書き換えられることがある。逐次実行時と分岐時で更新のされ方が変わる点が要点である。
出典:令和6年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問6(IPA)解説で登場
プロセスの切替えに関する記述のうち、ディスパッチャの説明として、適切なものはどれか。
正解:主記憶に保存されている選択したプロセスの情報を、CPUにロードしてプロセスを起動する。
要点:ディスパッチャは選ばれたプロセスにCPUを引き渡す
ディスパッチャは、スケジューラが選んだプロセスの実行環境(プログラムカウンタやレジスタなどのコンテキスト)を主記憶からCPUへ復元し、そのプロセスの実行を開始させる役割を担う。「どれを動かすか」を決めるのがスケジューラ、「実際にCPUを明け渡す」のがディスパッチャという分担になる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの2 コンピュータシステム > 1. プロセッサ > (5) プロセッサの構造と方式に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。