next up previous
: [SPIM] 配列の和 : マイクロプロセッサ演習 : マイクロプロセッサ演習

今回の演習に必要な予備知識

配列 (前回の補足) 前回のプログラム LoadStore3.asm は以下の流れを実行するプログラムであった。
  1. メモリに、データ 4 つ分 (4 バイト $\times$ 4 $=$ 16 バイト) の領域を確保。
  2. 先頭の 3 つのデータ領域 (array[0] ~ array[2] と呼ぶことにする) に整数 1、2、3 を格納。
  3. array[0] ~ array[2] の値をレジスタ $s0, $s1, $s2 にロード。
  4. $s0 $s1, $s2 の和を $s3 に格納。
  5. $s3 の値をメモリ上の array[3] にストア。
この流れの概念図を示したのが図 1 である。
図 1: LoadStore3.asm のプログラムの流れの概念図
\begin{figure*}\begin{center}
\epsfbox{loadstore.eps}\end{center}\end{figure*}
この流れの中で 3. ~ 5.、すなわち 「メモリから値をレジスタにロードし、計算を実行した後、結果を メモリ上にストアする」 という流れは重要であり、今後の演習でも頻出するので、 しっかり身につけて欲しい。

なお、ここではメモリ上の 4 つのデータ領域を array[0] ~ array[3] と 呼んだが、これは C 言語の配列の記法に従ったものである。

配列とはデータが表の様に複数個並んだものである。 例えば、50 人のクラスのテストの点数は配列 array[] に、 「array[0] $=$ 80, array[1]$=$ 70, $\cdots$, array[49]$=$58」 などと格納できる。 要素が $n$ 個の配列は array[0] ~ array[$n-1$]で表されることに注意。

また、配列の添字は 1 づつ増えるが、メモリアドレスは 4 づつ増えることにも 注意しよう (メモリの 1 ワードが 4 バイトであることによる)。


平成16年11月1日