/ «2003-11-24 (Mon) ^ 2003-11-26 (Wed)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2003-11-25 (Tue)

[Writing] GCC の内部構造

The GNU Compiler Writer's Jump Point

私の当面のテーマは GNU 開発ツールの使いこなしと、Linux カーネルのふたつなのだが、前者についてはそろそろ終焉に近づきつつある。後者も、この調子で行けば「再来年」ぐらいには到達できそうな気がしてきた。

しかし、私達の回りには険しい山々が控えている。越えても、越えても次の頂上が目に入るのだから、たまったものではない(だから、止められないのよね)。

その険しい霊山のひとつが、GCC 山。この山ばかりは、頂上付近に雲がかかってるため、一体どれだけの標高があるのか、今の私には想像も付かない。下手すると、間違いなく滑落死。正直、怖い。

事実、未だ世界中の誰もこの山の踏破には成功していない。Jonathan Bartlett 氏による "The GNU Compiler Writer's Jump Point" のようなページが、最近ようやく登場してきたばかりである。

それでは、この霊山を越えると、一体どういう風景が眼前に広がるのだろうか?それは、あらゆる CPU を標的としたCコンパイラーを自分で製作できるだけでなく、オリジナル言語のコンパイラー作成さえも可能になるという、まさにソフトウェア野郎の桃源郷だ。

最近は FPGA を用いて、Software processor を設計することが一般的になりつつあるが、この時問題になるのが開発環境である。オリジナル CPU であれば、もちろん手作りの開発環境が必要になるし、そのコンパクトさから FPGA に好んで実装されることの多い 8051-core も、現在のところ GNU 開発ツールは対応していない。レジスター長の問題などもあるのかもしれないが、マイクロコントローラーのトップリーダーである 8051 のクロス開発が PC-UNIX 上で行えないのは、極めて残念。

8051 の開発環境に関しては、今のところ KEIL Software (Windows) の製品が有名であるが、正式版はなんと20万円以上するらしい・・絶句。20年前罪悪感に責められながら、コピーした Lattice C (当時、これも同じ位の値段がした)を使っていた自分を思い出した。KEIL 社はお試し版を無料で公開しているが、生成できるコードサイズなどに制限があるし、「所詮は無料。サブセットなのよねぇ・・トホホ」という思いを抱きながらコーディングするのは、精神衛生上良くない。プログラマーの精神は自由に飛翔できなければならぬ。そのためには、PC-UNIX 上の GNU 開発ツールが最もふさわしい。

ただし、GNU 開発ツールには「マイクロコントローラー系が弱い」という、致命的な弱点があった。もしも、カスタマイズ次第で 8051 や 6809 にも対応出来るのであれば、その時こそ GNU 開発ツールは名実共に世界最強のツールに成長するだろう。気分は、「どこからでも、かかって来なさい」なのである。Matrix でネオがやる、あの「手首クイックイッ」ポーズだ。あ〜、早くこんな一言吐いてみたい・・。

追記

読者の方から「8051 には Linux 上のツールとして SDCC があります」とのご指摘を頂きました。これはご指摘の通りで、SDCC (Small Device C Compiler) は i8051 および Z80 に対応したマルチプラットフォームの ANSI C です。SDCC のことは知ってはいたのですが、GNU 開発ツールとは全く独立した設計になっているため、蚊帳の外になっておりました。不正確な記述をしてしまい、申し訳ありません。