レジスタの一種で、次に実行されるべき命令が格納されているメモリアドレスを保持するものです。
呼び名がさまざまありますが、ここではプログラムカウンタを使います。なお、プログラムカウンタはよく「PC」と略記されます(「PC」はパーソナルコンピュータの意味で使われることも多いので注意してください)。
CPUは、プログラムカウンタに保持されているメモリアドレスを参照して、そのメモリアドレスにある命令をメインメモリから読み出して(フェッチ)、その内容を解析し(命令デコード)、実行します。
命令を読み出した後、次の命令を実行できるように、プログラムカウンタの内容を更新しなければなりません。通常は、取り出された命令の長さに応じて、プログラムカウンタを加算し、次の命令があるメモリアドレスになるようにします。
取り出された命令が、分岐やジャンプの命令であった場合には、プログラムカウンタの値を、飛び先の命令があるメモリアドレスで更新することで実現されます。
取り出された命令が、関数やサブルーチンの呼び出しの命令だった場合も同様に、飛び先のメモリアドレスでプログラムカウンタを更新します。しかし、分岐やジャンプと違って、最終的には呼び出し位置の続きの命令に戻ってくる必要があるため、コールスタックを使って実現します。呼び出し前に、呼び出し元の次の命令のメモリアドレス(リターンアドレス)をコールスタックに保存しておき、サブルーチンの処理が終わったら、その情報を取り出して、呼び出し元の続きの位置に復帰できるようにします。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |