さて、今回の演習を行うための予備知識を以下で説明しておこう。 前回説明したように、C 言語で書かれたプログラムをコンパイルすると アセンブリ言語で書かれたプログラムが出力される。 その様子を図 1 に示した。
このとき、アセンブリ言語で書かれたプログラムは図にあるように 命令の列として表現される。この命令が CPU によって一命令づつ実行されることになる [1]。 C 言語による表現に比べ、アセンブリ言語でのプログラムは非常に 冗長になっていることに注意しよう。これは CPU の振舞いを 逐一記述しているためである。
ある CPU で定義されている命令を集めたものはその CPU の命令セット と呼ばれる。 CPU によって命令セットは異なるため、アセンブリ言語の文法も各 CPU で異なる。本演習で扱うのは MIPS R2000 と呼ばれる CPU のアセンブリ言語である。 MIPS は RISC (Reduced Instruction Set Computer) 型の CPU の一つであり、 その構造もシンプルであるため学習には適している。
また、CPU には「クロック」と呼ばれるものがあり、 クロックに同期して命令が実行される。このとき、 図2のように一命令の実行ごとに複数のクロックがかかるのが普通である [2]。
また、一命令を実行するのに必要なクロック数の平均値を CPI (clock cycle per instruction) と呼ぶ。
最後に、以下の問題を解くためのヒントを図 3 に載せる。