植物 植物
初心者講座:CASLの予備知識

AOBA's Information Processing Education



1998/02/08

注意1:このページは、回線を切断した後でゆっくりご覧になってください(テキストを印刷する場合は、その取り扱いに注意してくださるようお願いします)。

注意2:背景が白地の画面を長時間見つめていると頭が痛くなってしまいますので、ここは背景をグレーにしています。


 今週からプログラム言語CASLの解説を行います。では早速

 CASLは、情報処理試験で出題される他のプログラム言語とは異なりアセンブラ言語(低水準言語)です。ちなみに、他のFORTRANやCOBOLやCはコンパイラ言語(高水準言語)といいます。
 「低水準言語」という用語から、レベルの低いプログラマのための言語のような感じを受けますが(ずっと以前私はそのように誤解していました)、それは完全に間違いです。ある意味では、高水準言語を扱うプログラマよりも高いレベルのプログラマが扱う言語と言ってもよいくらいです。

 コンパイラ言語を使用してプログラムを作成する場合、コンピュータのハードウェアを意識してプログラミングする必要はまずないでしょう(ある場合もありますが)。対して、アセンブラ言語を用いてプログラムを作成する場合は、ハードウェアを意識してプログラムを作成しなければなりません。
 しかしその分、コンピュータに対して細かな動作命令を行うことができ、コンパイラ言語では絶対に不可能な動作を行わせることもできます。

 似たような説明を以前の講座で行いましたね。そう、「第9回:機械語」における機械語の説明とほとんど同じです。
 「ということは、機械語とアセンブラ言語は似たようなものなのか」と思った方、あなたは正しい。

 コンパイラ言語で何がしかの命令書いても、それが機械語になったときどう展開されるかはコンパイラ(高水準言語で書いたプログラムを機械語に変換してくれるプログラム)が勝手に決めてしまします。ところがアセンブラ言語で一つの命令を書くと、その命令は一つの機械語になります。つまり、アセンブラ言語のプログラムにおける1命令は、機械語1つに対応します。
 だからアセンブラ言語でプログラムを作成するということは、コンピュータが唯一解釈できる機械語でプログラムを作成するということとほとんど同じであり、それ故コンピュータに対して細かな動作を行わせることができるのです。
 ただし、いくらなんでも2進数でプログラムを作成する訳ではありませんのでご安心を。アセンブラ言語で書いたプログラムは、アセンブラと呼ばれるプログラムによって機械語に変換されます。

 「なんかアセンブラ言語は難しそうだな。情報処理試験で(CASLを)選択するのは不利じゃないのか?」と思った方もいるかもしれません。しかしそんなことはありません。ここではその理由は説明しませんが、そう思った方はここをご覧ください(ブラウザの「前へ戻る」操作で戻ってネ)。

 ところで、機械語はCPUごとに異なります(第9回講座参照)。そして、アセンブラ言語は機械語と1対1で対応します。
 ということは、アセンブラ言語もCPUごとに存在することになりますね。確かにその通りです。アセンブラ言語はCPUが異なれば個々の命令の種類はもちろん、プログラムの文法がCPUごとに異なります(コンパイラ言語のプログラムは使用するコンピュータに関係なく同じです....Cはほんのちょっと違う場合もあるのですが)。
 ということは、アセンブラ言語はこのままだと試験問題に不向きですよね。なんせ世の中に数あるアセンブラ言語を、すべて習得するというのは不可能ですから。

 ということで情報処理試験では、ある仮想のコンピュータを1つ仮定して、そのコンピュータ(のCPU)用のアセンブラ言語の問題が出題されます。
 この仮想のコンピュータをCOMETといい、COMETにおけるアセンブラ言語がCASLなのです。

 CASLを学ぶ上でCOMETを理解することは必須です(とはいっても、理解しなければならないのは、極わずかですが)。
 今週は最後に、COMETの基本的な仕様を示します。これ以外にも知っておかなければならないことがいくつかあるのですが、とりあえずは5つだけ。

[COMETについて]

  1. COMETは仮想計算機であり、COMETにおけるアセンブラ言語がCASLである。
  2. COMETは1語(1ワード)が16ビット(2バイト)の計算機である。
  3. COMETの主記憶装置は16ビット(2バイト=1語)ごとに番地が振られる。
  4. COMETはGR0〜GR4までの五つの汎用レジスタを持つ。
  5. 汎用レジスタは16ビット(2バイト=1語)の大きさのデータ格納域である。

(注)1語(1ワード)の意味は省略します。とりあえず、COMETは1語が2バイトであり、主記憶装置はその単位で番地が振らている(つまり1つの番地内が2バイト)、と理解しておけば十分です。

 ということで今週はここまで。