next up previous
: [SPIM] 手続き hello の : マイクロプロセッサ演習 : マイクロプロセッサ演習


今日の演習の内容 (手続きと関数)

「手続き (procedure)」や「関数 (function)」とは、 いくつかの命令をひとまとめにし、プログラムの他の部分から 呼び出せるようにしたものである。 特に、戻り値を持たないものを「手続き」、戻り値をもつものを 「関数」と呼ぶ。

図 1: 手続き hello
\begin{figure}{\tt
int main(void)\{\\
\hspace*{1cm}$\cdots$\\
\hspace*{1cm}hel...
...
\hspace*{1cm}printf(''Hello World.$\backslash$n'');\\
\}
} %\tt\end{figure}

例えば、図 1 は C 言語において 「Hello World と画面に表示する」という機能を 手続き hello として実現したものである。 main (プログラムのメイン部分) の外部に手続き hello の 宣言を置き、main の内部で hello() として呼び出している。

図 2: 関数 square
\begin{figure}{\tt
int main(void)\{\\
\hspace*{1cm}$\cdots$\\
\hspace*{1cm}a=5...
...}\\
int square(int i)\{\\
\hspace*{1cm}return(i*i);\\
\}
} %\tt\end{figure}

一方、「整数 i の 2 乗を与える」機能を関数 square として C 言語で実現したのが図 2 である。 このプログラムを実行すると b には a の 2 乗、 すなわち 25 が代入される。

以上の 2 つを MIPS のアセンブリ言語で実現するのが今回の演習である。 なお、「手続き」と「関数」の用語の区別は C 言語では存在せず、 どちらも「関数」と呼ばれることに注意しておく。


平成16年11月17日