スタックポインタ

問題

応用情報技術者 平成24年秋期 午前問10

CPUのスタックポインタが示すものはどれか。

  • サブルーチン呼出し時に,戻り先アドレス及びレジスタの内容を格納するメモリのアドレス
  • 次に読み出す機械語命令が格納されているアドレス
  • メモリから読み出された機械語命令
  • 割込みの許可状態,及び条件分岐の判断に必要な演算結果の状態

回答

サブルーチン呼出し時に、戻り先アドレスおよびレジスタの内容を格納するメモリのアドレス

解説

レジスタ (コンピュータ)


レジスタ(register)はコンピュータプロセッサなどが内蔵する記憶回路で、制御装置演算装置実行ユニットに直結した、操作に要する速度が最速の、比較的少量のものを指す。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

スタックポインタ


アドレスレジスタの一種で、コールスタックの先頭を指すポインタレジスタである。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

コールスタック


コールスタック (Call Stack)は、プログラムで実行中のサブルーチンに関する情報を格納するスタックである。実行中のサブルーチンとは、呼び出されたが処理を完了していないサブルーチンを意味する。実行スタック (Execution Stack)、制御スタック (Control Stack)、関数スタック (Function Stack)などとも呼ばれる。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

スタックポインタを使ったサブルーチンの呼出し

  1. メイン・ルーチンの次に実行される命令のアドレスをスタックに格納
  2. サブ・ルーチンのアドレスをプログラムカウンタに設定
  3. サブ・ルーチンを実行
  4. スタックの最上段に格納された復帰先(メイン・ルーチンの次に実行される命令のアドレス)をプログラムカウンタに設定

プログラムカウンタ

次に読み出す機械語命令が格納されているアドレス。


アドレスレジスタの一種で、実行する命令のアドレスを指し示すレジスタ。命令の読み込みを行なう際にはその内容がアドレスバス上に出力され、また命令を読み込む度に読み取った命令の分だけ値が増加するようになっている。分岐命令は、このプログラムカウンタに値を代入することで実現される。さらに、スタックポインタと組み合わせ、プログラムカウンタの内容をスタックに一時保存した後に新たな値を代入すると、サブルーチンの呼出しを実現する事になる。また、スタックから値を取り出してプログラムカウンタに代入すると、サブルーチンから呼出し元に制御を復帰させる事になる。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

命令レジスタ

メモリから読み出された機械語命令を格納するレジスタ。


命令レジスタ(めいれいレジスタ、instruction register)とは、CPU実行ユニットの一部であり、現在実行中の命令を格納する。


出典: フリー百科事典『ウィキペディア(Wikipedia)』

ステータスレジスタ

割込みの許可状態,及び条件分岐の判断に必要な演算結果の状態を格納するレジスタ。


ステータスレジスタは、コンピュータプロセッサなどにおいて、フラグビットの集まったワードをその内容とするレジスタである。フラグレジスタフラグバイト、コンディションコードレジスタなどとも呼ばれる。
その仕様は一般に、プロセッサの命令セットと密接に結びついており、命令セットアーキテクチャ(ISA)毎に決まっている。


一般的なステータスレジスタの構成[編集]
一般にステータスレジスタは、そのプロセッサの命令による様々な演算などの結果などに関して「あふれが生じた」であるなどといったような対処が必要な場合がある事象に関する状態(ステータス)を示すフラグと、割込みなどといったシステムを制御する状態を示すフラグとから成る。


出典: フリー百科事典『ウィキペディア(Wikipedia)』