Cコンパイラ開発顛末記 小窓次郎

はじめに
C3POとは、6809用に開発されたMicroCをベースにして日立のHD6301/6303にカスタマイズとチューニングを行った組み込み目的のCコンパイラです。現在DOSで動作するバイナリ-とソースコードとマニュアルなどがあります。開発の機会を与えてくださった、前職場の上司ならびに、快く端末開発の過程で付き合ってくれた仲間達、また没頭を許してくれた細君に感謝いたします。このコンパイラは、現在の状況で使う価値があるかといえば・・・?ということだと思います。まあ、まだチップとして630Xシリーズがあればフリーのコンパイラとしての価値があるのかもしれません。注意を加えるならば、このコンパイラはアセンブラソースコードを吐くタイプのコンパイラであってクロスアセンブラが必要になります。当時のクロスアセンブラの文法には準じたコードが出ますし、またその部分もコードが独立していますのでカスタマイズは可能です。ソースコードですのでご参照いただければ明白です。

開発されたのは、1984年12月が最初の版のリリースでした。1988年頃までは実務と趣味でメンテナンスをしてきたと思います。

アーカイブ(LZH形式です)

目的と開発の背景
このコンパイラの開発目的は次のようなものでした

  • 組み込み開発で適用可能なコンパイラが欲しかった
  • C言語を勉強する必要があった
  • アセンブラでのプログラミングノウハウをコンパイラにカプセル化したかった

今ならば、GCCも有りますし、昨今の溢れかえったFlashサイズなどからこだわりはなくなってしまったようですが、開発当時(1984)の組み込み開発事情を考えていただければまともに使えるコンパイラとは当時の8080用に開発されたLSI-Cだったかと思います。無論6809用であればMicroCはエレガントなコードを生成してくれました。コンピュータとしてのアーキテクチャが綺麗だったこともあります。しかし、私の暮らしていた組み込みの世界では、アーキテクチャよりも消費電力や多機能が搭載されていたマイクロコントローラという概念でかのモトローラと特許係争にまで陥ったほどのベストセラーになった日立の8ビットコントローラが厳然としたデファクトとしてありました。このCPUで16kBを越す大規模なソフトウェア開発の効率を上げたいというのが当時の背景でありました。

アセンブラベースで8kBぐらいの容量でメモリーダイヤル搭載の自動車電話を開発していた時代なのです。当時のアセンブラベースでICEと睨めっこしつつの開発というのは、現在のCベースで10MBを越すアプリケーション開発をしている状況から考えると稚拙に思われるかもしれません。せいぜい開発人数も3人で半年位かけて開発しているわけで8KBのコードですとアセンブラソースコードで9000行クラスでしょう。そうなると開発規模は、一人あたりの生産性は300ライン/月くらいだといわれていた時代でもあります。いまは、ベースとなるソースコードがCになって同様の数字なのでしょうか。アセンブラで記述するということによる問題点は相当の熟練を要するというのが背景にあります。スタック操作を誤れば簡単に暴走できますし、そうしたことからリアルタイムトレースといったツールや方法の必要論がまかり通っていました。

続きを読む