3 COMET IIのレジスタ

3のうち、プログラマが注意を払うべきものは、 です。今後アセンブラでプログラムを書いてみると分かりますが、制御装置や 演算装置について、あまり注意を払う必要はありません。COMET IIのレジスタ を表1にまとめておきます。以降、それぞれのレジス タについて、説明します。

表 1: CASL IIのレジスタ
記号 語源 日本語 機能
GR General Register 汎用レジスタ 計算等に用いる。またGR1〜GR7 は指標レジスタとしても使われる。
SP Stack Pointer スタックポインタ スタック領域の最上段のアドレスを保持する。
PR Program Register プログラムレジスタ 次に実行する命令のアドレスを保持する
FR Flag Register フラグレジスタ 演算結果の状態を保持する

3.1 汎用レジスタ

これは、算術や論理、比較、シフト演算を実行するときに使います。GR0〜GR7 までの8個用意されています。あとは、教科書の通りです。

3.2 プログラムレジスタ

プログラムカウンターと呼ばれることもあります。このレジスタの値は、プル グラムが次に実行する命令語の先頭番地です。したがって、 となります。

プログラムを事前に主記憶装置に格納して、プログラムレジスタPRの値によっ て、プログラムを構成する命令を1つずつ取り出して、処理を行います。この ような方式を逐次制御方式と言ったり、プログラム内蔵方式(stored program) と言ったりします。

3.3 フラグレジスタ

Flag Regisuterのフラグとは、旗のことです。サッカーの試合で、プレーの状 態により旗を上げます。あれと同じです。コンピューターでは演算の結果によ り旗を上げます。

COMET IIには、1ビットのレジスタが3個あります。演算結果によって、それらのレジ スタの値がセットされます。セットされる内容は、教科書P.18の表2.4の通り です。主に、このレジスタは、実行順序を変更、分岐命令に使われます。

あとは教科書の説明通り。

3.4 スタックポインタ

メインメモリーの一部をCPUが専用の記憶領域として使います。そのときのメ インメモリーのアドレスを示します。 したがって、 となります。

これは、ここでは少し早すぎますので、実際に使うときに説明します。

3.5 指標レジスタ(index register)

これは、特殊なレジスタで、ハードウェアーは汎用レジスタが兼ねます。汎用 レジスタのうちGR1〜GR7をつかいます。GR0を使わない理由、これはマシン語 との関係で、後の授業で述べます。

教科書の図2.5の表現は分かりにくいので、具体例でその動作を示します。例 えばクラス40人分の数学と英語と電子計算機のテストの点が、メモリに格納さ れており、それぞれの平均点を求めたい場合、指標レジスタを使うと便利です。 このプログラムでは、それぞれの教科のクラスの合計点を計算するところが、 重要です。指標レジスタを使う場合と使わない場合のフローチャートを図 4に示します。

指標レジスタを使わないと、プログラムが大変でしょう。このように、指標レ ジスタを使うことにより、基準点からのアドレスを加算してそのデータにアク セスできます。このように、アドレスを操作することをアドレス修飾と言いま す。

実は、皆さんは、これと同じプログラムテクニックをFORTRANの授業で学んだ はずです。FORTRANの配列と同じです。FORTRANでは分かりにくいのですが、C 言語の配列はまさにこれと同じことを行っています(実感できます)。

図 4: 指標レジスタを使った場合と使わない場合のプログラム。クラス の数学のテストの合計点を計算している。GR1を指標レジスタとして使って いる。
\includegraphics[keepaspectratio, scale=0.9]{figure/index_register.eps}

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年9月7日


no counter