next up previous
: [SPIM] シミュレータ SPIM のインストールと使用 : マイクロプロセッサ演習 : マイクロプロセッサ演習

はじめに

本演習は、「マイクロプロセッサ」の授業と連動し、 我々が普段使っているコンピュータが動く仕組みを理解することを目的と する。

具体的には以下の 2 つの内容を柱として演習をすすめる。

どちらに重きを置くかは、教科書の章ごとに異なるだろう。 配布資料は、章末問題を解く節には「[問題]」を、 SPIM シミュレータを用いる節には「[SPIM]」をつける。

具体的には以後の授業と演習で学んでゆくが、ここでは MIPS CPU のアセンブリ言語を学ぶ意味について簡単に触れておこう。

図 1: C 言語で書かれたプログラムから実行ファイルが生成されるまでの流れ。
\includegraphics{prog}
2 年生の後期には C 言語の講義があり、C 言語で書かれたプログラムから、 PC 上で実行可能なファイルが生成されることを学ぶであろう。 この実行ファイル (windows では exe ファイルと呼ばれるもの) を 生成する過程は図 1 に示すように 「コンパイル」、「アセンブル」、「リンク」の三つに分けられる。 C 言語のプログラムがコンパイラによってコンパイルされたときに出力されるのが アセンブリ言語である。

このようにアセンブリ言語はコンパイラによって出力されることが多いのであるが、 もちろん自分でアセンブリ言語を記述することも可能であり、 実際に本演習で多くの時間を割いてアセンブリ言語の記述を学んでもらう。 アセンブリ言語を記述するメリットには以下のようなものが考えられる。

  1. C 言語のコンパイラが存在しない環境でプログラミングができる。
  2. プログラムの中で高速化したい部分をアセンブリ言語で記述し、 最適化することができる。 (ただし、最近はコンパイラの最適化技術が進歩しているので アセンブリ言語での最適化を必要とする状況はほとんどない)
  3. 高水準言語である C 言語に比べてアセンブリ言語は低水準、すなわちハードウェアに近いため、CPU の構造や動作の理解に役立つ。
本演習でアセンブリ言語を学ぶ目的は上の 3 番目、 すなわち CPU の構造と動作を理解することである。

このように、アセンブリ言語を学ぶことはハードウェアの働きを 理解することにつながり、普段我々が使っているソフトウェアが ハードウェア上で動作する原理を理解することにつながる。 教科書のサブタイトル「ハードウェアとソフトウェアのインターフェイス」 とはそういう意味である。

また、アセンブリ言語を理解すると、C 言語で鬼門と呼ばれる「ポインタ」 の理解も容易になるであろうことを付け加えておく。


平成16年10月8日