next up previous contents index
Next: 機械語の命令セットと命令の実行 Up: プログラム Previous: 命令の種類   Contents   Index

高水準プログラム言語における分岐/ジャンプ

本節は高水準プログラム言語をある程度知っている人を対象に, 高水準プログラム言語における分岐/ジャンプ文が, 機械語の分岐/ジャンプ命令とどのように関わっているかを示すために記載した。 したがって,興味のない人は読み飛ばしてもらって構わない。

高水準プログラム言語にも,if-then-else文,while-do文, do-until文などと呼ばれるいくつかの分岐/ジャンプを伴うプログラム用の文がある。

Figure 8.1: 高水準プログラム言語に見られる分岐/ジャンプ文の例
\begin{figure}\centering
%
\unitlength 1pt
\begin{picture}(295,143)
\put(0,0){\...
...ootnotesize\rm (c) do-until }{\footnotesize\mc 文}}}
\end{picture}
\end{figure}

図 8.1に見られるように,これらはいずれも条件判定を行う文と, その条件により実行される文がある。
(a)のif-then-else文はif文に記載された条件を調べ, それが真ならばthen以下に書かれた文(一般には複数文)を, 偽ならばelse以下に書かれた文(一般には複数文)を実行する。
(b)のwhile-do文はwhile文に記載された条件を調べ, それが真のうちはdo以下に書かれた文を実行する。
(c)のdo-until文は,まずdo文を1回実行し,続くuntil文に記載された条件を調べ, それが偽のうちはdo以下に書かれた文を実行する。

問題1
次の各プログラムを実行するには, 上記のどの分岐/ジャンプ文を使うのがよいだろうか。 (この問題は高水準プログラムを知っている人のみが対象である。)

この他,else文のないif-then文,主として回数を指定して同じことを実行するfor文, 条件が真の間はdo以下を実行するdo-while文などもあるが, いずれもここに示した三つの典型例と本質的には変わらない。

Figure 8.2: メモリー上に展開された分岐/ジャンプ文
\begin{figure}\centering
%
\unitlength 1pt
\begin{picture}(275,149)
\put(0,0){\...
...ootnotesize\rm (c) do-until }{\footnotesize\mc 文}}}
\end{picture}
\end{figure}

こうした条件判定により,分岐したり反復したりする文でも, 図 8.2に示すように,メモリー上には1次元的に展開されている。 これらの命令群が図 8.1と同じ動作をすることはすぐに確認できるであろう。 このメモリー上に展開された機械語のプログラムを見ると, ほとんど逐次プログラムとなっているが, 例外的に条件ジャンプ(conditional jump)と無条件ジャンプ(unconditional jump)があることがわかろう。


next up previous contents index
Next: 機械語の命令セットと命令の実行 Up: プログラム Previous: 命令の種類   Contents   Index
Yoichi OKABE 2008-03-29