コラム23.  :国産Cコンパイラ、LSI-C

LSI-C

マイクロソフト社のVisualC++や、gccなど、代表的なC/C++言語のコンパイラは、ほとんどが外国産です。しかし、日本でも、独自にC言語のコンパイラを開発していた会社がありました。それが、エル・エス・アイ・ジャパン株式会社によって開発された、LSIC(エル・エス・アイ・シー)というコンパイラです。

同社は放送機器や通信機器を開発するハードウェアメーカーで、LSI-Cは、いわばその「副産物」と言えるものでした。1983年に国産初のCコンパイラーLSIC-80を開発しました。これは8ビットCPUである、Intel 8080/Z80用コンパイラで、C89に準拠していました(一部期のは未実装)。その後、1988年にインテルの16ビットCPUである8086に対応したLSIC-86が開発され、日本国内で広く普及しました。

クロスコンパイラとしてのLSIC

LSICが対応しているOSは、MS-DOS(後にWindows)、にSolaris、Linux、FreeBSD等があります。ただ、このコンパイラの目的は、こういったOSのネイティブアプリを作成する、というよりも、クロスコンパイラとして使用するというのが本来の目的です。

クロスコンパイラとは、開発に使用しているのとは異なる機種で実行可能な機械語のプログラムを生成するコンパイラのことで、組み込み機器や、ゲーム専用機など、独自の開発環境を持たないハードウェアのためのソフトウェア開発のために使用します。

前述のように、このコンパイラはハードウェアメーカーが開発したものであることから、LSICには、作成したマシン語のROM化機能などが含まれおり、現在でも販売されています。

LSICの特徴

LSICのコンパイラとしての特徴は、メモリおよびCPUのレジスタの割り当てに重点が置かれている点にあります。

例えば当時の8086用のCコンパイラの多くは変数に割り当てられるレジスタは2つか3つしかありませんでしたが、LSI C-86では宣言される変数の生存期間を調べ、全レジスタに対し可能な限りの最適な割り当てを行えるという特徴がありました。その上8086シリーズの特徴の一つでもある4つのメモリモデルを全てサポートしているという特徴もありました。

また、コンパクトなコードを生成することも特徴で、機種依存になるようなコードは生成せず、MS-DOS Ver 2.11以上、メモリ 384KBytes 以上の環境であれば、たいていのマシン上で動作できるというすぐれものでした。

こういった特徴はすべて、なるべくコンパクトで高速に動作する必要があるハードウェア組み込みのためのコンパイラとして、非常に大事なポイントだと言えるでしょう。

試食版

このように、特殊な用途で開発されていたLSICでしたが、かつてはC言語の入門用のコンパイラとして広く普及していました。その理由は、LSIC試食版という、フリーのコンパイラを配布していたことによります。

試食版では、デバッグ機能やROM化機能が削除されているなどの機能制限があったものの、本格的なC言語のコンパイラとして使用でき、マニュアルが添付されているなど、非常に使い勝手の良いものでした。

今のようにインターネットが本格的に普及していなかった1990年代までは、gccのようなフリーのコンパイラを入手するのも困難であった上に、マイクロソフト社やボーランド社などによって開発されている商用のコンパイラは非常に高価であったことから、LSIC試食版は当時C言語を学習したいと考えていたプログラマーにとっては、非常にありがたい存在でした。その上、プログラミング関連雑誌やC言語の入門書の付録のCD-ROMなどに付録として収録されていたことから、おおいに普及しました。

当時は現在と違い、パソコン本体も高価であり、その上C言語などのコンパイラを購入することは一般のプログラマーにとってはたいへんな経済的負担であり、至難の業でしたが、LSIC試食版は、当時そういった個人プログラマーたちにとって、救世主のような存在と言っても過言ではありませんでした。

現在のLSIC

なお、LSICは、現在でもエル・エス・アイ・ジャパン株式会社の製品として販売されており、試食版も入手可能になっています。なお、かつて同社の社員であり、LSICの開発された森公一郎氏は、2015年に死去されました。

一般的な知名度もほとんどないうえに、世界的に普及したゲームの開発者などと違い、コンピュータ業界でほとんど注目されることもなかった森氏でしたが、日本のコンピュータやソフトウェアの発展に果たした貢献は計り知れないものがあると言えます。