先頭へ戻る

プログラムカウンタ | Programming Place Plus 用語集

Programming Place Plus トップページ -- 用語集

先頭へ戻る

名称

解説

レジスタの一種で、次に実行されるべき命令が格納されているメモリアドレスを保持するものです。

呼び名がさまざまありますが、ここではプログラムカウンタを使います。なお、プログラムカウンタはよく「PC」と略記されます(「PC」はパーソナルコンピュータの意味で使われることも多いので注意してください)。

CPUは、プログラムカウンタに保持されているメモリアドレスを参照して、そのメモリアドレスにある命令をメインメモリから読み出して(フェッチ)、その内容を解析し(命令デコード)、実行します。

命令を読み出した後、次の命令を実行できるように、プログラムカウンタの内容を更新しなければなりません。通常は、取り出された命令の長さに応じて、プログラムカウンタを加算し、次の命令があるメモリアドレスになるようにします。

取り出された命令が、分岐ジャンプの命令であった場合には、プログラムカウンタの値を、飛び先の命令があるメモリアドレスで更新することで実現されます。

取り出された命令が、関数サブルーチン呼び出しの命令だった場合も同様に、飛び先のメモリアドレスでプログラムカウンタを更新します。しかし、分岐やジャンプと違って、最終的には元の位置に戻ってくる必要があるため、スタックの仕組みを併用して実現します(呼び出された側でもプログラムカウンタを使うので、たった1つしかないプログラムカウンタだけでは実現できない)。

呼び出し前に、現在のプログラムカウンタの内容をスタックへ退避してから、プログラムカウンタを飛び先のメモリアドレスで更新します。呼び出し元へ帰るときには、スタックから元のプログラムカウンタの値を取り出して、実際にその値でプログラムカウンタを更新します(これは基本的な仕組みを説明したものであって、細部の動作に違いがあり得ます)。


参考リンク

更新履歴


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー