令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問2
テクノロジハードウェアプロセッサ・性能計算
命令アドレスレジスタ(プログラムカウンタ)に関する記述として,適切なものはどれか。
解答・解説
正解: ア. 条件分岐命令を実行すると,命令アドレスレジスタの内容が書き換えられることがある。
命令アドレスレジスタ(プログラムカウンタとも呼ばれます)は、次に実行すべき命令が格納されている主記憶上のアドレスを保持する制御レジスタです。
通常、CPUが主記憶から命令を取り出す(フェッチする)と、命令アドレスレジスタの値は自動的に次の命令のアドレスへと更新(加算)されます。しかし、条件分岐命令や無条件分岐命令などが実行され、分岐条件が成立した場合、実行順序を変えるために分岐先のアドレスが命令アドレスレジスタに直接書き込まれます。したがって、「条件分岐命令を実行すると,命令アドレスレジスタの内容が書き換えられることがある」という記述は正しいです。
各選択肢の解説
- ア: 正解です。条件分岐命令の条件が成立した場合、次に実行する命令が分岐先のものになるため、命令アドレスレジスタの内容は分岐先アドレスに書き換えられます。
- イ: 誤りです。データの転送元アドレス、転送先アドレス、転送バイト数などを一時的に保持するためには、通常汎用レジスタなどが用いられます。命令アドレスレジスタは次に実行する命令のアドレスを保持する専用のレジスタです。
- ウ: 誤りです。サブルーチン呼出命令(CALL命令など)の実行時には、戻り先アドレスとして現在の命令アドレスレジスタの内容をスタック等に保存しますが、通常の分岐命令の実行前後に命令バッファへ保存・復帰するといった動作は行いません。
- エ: 誤りです。命令アドレスレジスタで示された番地の主記憶には、実行すべき「命令そのもの」が格納されています。「命令のアドレス」が格納されているわけではありません。