next up previous
: マイクロプロセッサ演習 : [SPIM] ロードとストア (3)

[補足] C 言語との対応

本演習ではアセンブリ言語の記述を通してコンピュータの動作を理解するが、 受講者の中にはアセンブリ言語と C 言語との対応について知りたい人もいるだろう。 本資料では、「付録による補足」という形で C 言語との対応を 必要に応じて解説してゆくことにする。

まず「ロードとストア (2)」で扱ったアセンブリ言語プログラムを C 言語に 対応させると、以下のようになるだろう。

図 3: LoadStore2.asm に対応する C 言語記述。
\begin{figure}\hspace*{0.5cm}int array[3]; // 外部変数で配列を定義\\
\\
\hspac...
...
\hspace*{1cm}return(0); // プログラムの終了\\
\hspace*{0.5cm}\}\end{figure}

この C 言語プログラムでは要素数が 3 の配列 array[3] を外部変数として定義し、 main 関数内で array の各要素に値を代入している。 このとき、array[3] はメモリ上の静的領域に確保される。

このように、C 言語によるプログラミングはメモリ上における変数の配置に 注意しながら進められる。 表現を変えると、C 言語 (やその他の高級言語) によるプログラミングでは メモリの状態だけに気をくばっていれば良いことになる。 しかし、実際のコンピュータでは本資料で扱ったようにメモリと CPU が 常に相互作用して値をやりとりしながら計算が進行してゆくのである。

なお、「ロードとストア (3)」では配列 array[4] を定義し、 array[3] = array[0] + array[1] + array[2]; を計算するプログラムの 記述になっていることに注意しておく。

なお、array[3] などの変数を main 関数内で宣言するにはスタック の知識が必要であり、今後扱うことになるだろう。 (図 2 ではその点をごまかして記述した)


平成16年10月22日