見出し画像

プログラミング遍歴#5 アセンブリ言語

 今回はちょっと変化球で、アセンブリ言語です。プロセッサが直接実行できる言語は機械語です。しかし機械語は、1001010111・・・のような2進数の羅列なので、人間には極めて理解しにくいというか、理解できません!!。そこで機械語を直接書くのではなく、ニーモニックと呼ぶ命令語でプログラムを記述することで、人間により分かりやすくしたものがアセンブリ言語です。

 アセンブリ言語は、原則として機械語の命令に1対1で対応した、人間に理解しやすい文字列や記号で記述されます。ただしアセンブリ言語の意味は 、個々のプロセッサ(CPU) に依存しています。しかも、ハードウェア制御を含むことも多いため、同一プロセッサを用いても、アセンブリ言語の互換性は限定的です。アセンブリ言語は、汎用性の高いCやPythonなどの高水準言語に対して、CPU寄りの言語などで低水準言語と呼ばれたりします。

 こんな難しいプログラミング言語は誰が使うかというと、プロセッサに直結した基本プログラム、すなわちオペレーティングシステム(OS)を開発するときに使われます。私はOSの開発はしたことがありませんが、PC98用のチョットしたプログラムを書いたことはあります。PC98は発売当時は最先端で、計算はまあまあ高速でしたが、グラフィクス関係が全然だめでした。色数も少ないし、BASICを使った描画速度は超低速でした。現在のゲーム機の精細なグラフィクスを見ると、隔世の感があります。

 PC98の描画の速度向上のため、当時はグラフィックRAMを直接制御するプログラムが使われていました。私も本『PC-Techknow9800』を見ながら、アセンブリ言語を使ってグラフィクスのための機械語ライブラリを作ったりしました。せっかく苦労して作ったライブラリでしたが、大学の研究室の後輩に恐ろしいほどのプログラミング猛者がいて、高速な多角形の塗りつぶし機能を含めた汎用グラフィクスライブラリを作ってくれたので、私の粗末なライブラリはお蔵入りしました。


いいなと思ったら応援しよう!