MCL(44)

インデックスに戻る

前のMCLへ  次のMCLへ

▼ My Computer Life (44)

44. Cコンパイラ

 RPGを作ろうという意気込みは、まだ潰えていなかった。しかし、処理速度の壁は厚く、高い。
 X-BASICも駄目、マシン語もアセンブラが無いと来て、色々思い悩んだ結果、やっぱりCコンパイラを買ってしまおうという結論になった。
 一応、アセンブラやリンカだけをなんとか手に入れる方法はないか調べたところ、フリーで出回ってるソフトがあるというのは分かった。それをどうやって手に入れるかはさておき、少なくとも何万円という金はかけなくても済みそうだ。
 しかし、これはOh!XやX68000マシン語プログラミングを読んでて分かったことだが、シャープ謹製のCコンパイラについてくるマニュアル類が実は重要らしい。あれにDOSコールやIOCSコールの詳細が書いてあり、アセンブラで組む場合も非常に役に立つ。だから、アセンブラなりリンカなりのソフトだけを手に入れても、結局それらのマニュアルが無いと上手くは使えない。
 そんなわけで、まあこれも将来への投資になるかと思い、決して安い買い物ではないが、Cコンパイラを買いに行く事にした。秋葉原にね。

 で、これが案外売ってないんだよね。並んでない。大体、X68kのソフト自体が少ないので、Cコンパイラのような開発ソフトとなると、なかなか店頭には出ていない。
 そこで秋葉原をぐるっと回ったあと、最初に入った店で「X68kのCコンパイラありませんか」と聞いたら、倉庫から引っ張り出してきた。なんだよ、じゃあ最初から聞けば良かったじゃんって話になるけど、そこはそれ秋葉原だから、色々回って安いところ探したいでしょ。
 でも、店員いわく「いやー、これ最後の1個ですよ」とか言ってた。あんまり入荷してないらしい。

 それはともかく、Cコンパイラはそこで買った。
 で…分かってはいたけど、重いのなんのって…。分厚い百科事典みたいなマニュアルが何冊も入った箱を渡される。量ってないけど、これ10kg近くあるだろ。そんなものを泣きながら家まで持って帰りましたよ。

 さて、Cコンパイラを買いはしたものの、最初はC言語は使わない予定だった。マシン語も使わない予定であった。お目当ては、BAStoCと呼ばれる、X-BASIC→Cのコンバータである。
 以前も書いたが、X-BASICのソースリストはそのままCのリストにコンバートできる。そのままと言っても、いくつか許されない書き方はあるし、また変数名などに使ってはいけない名前もある。注意点はそれくらい…とマニュアルには書いてあるが、お察しの通りそれ以外にも守らないといけない点はいくつもある。これは仕方ないか。
 が、上手くそういう約束事を守って作れば、Cにコンバートでき、プログラムの実行速度は目覚しく上がる。BASICの長所である、トライ&エラーのたやすさやとっつきやすさと、C言語の高速性を両立できる素晴らしい仕組みである。

 実際のコンバート作業にはかなり手間取った。
 いくらコンバータと言っても、マウスクリック一つでお手軽に…とはいかない。やっぱり大本はCコンパイラなのである。まずCコンパイラが動く環境を作って、その上でBAStoCを動かさないといけない。
 今なんかだと、そういうのはインストーラがある程度くらいまではやってくれるんだけど、当時のHDDなし、メモリ2Mという環境だと、まずシステムディスクから作らなければならない。
 そして、Cコンパイラ自体は、DOS(Human68k)での動作しか想定していない。つまり、DOSオペレーションを覚えなければいけない。私はその時点ではほとんどビジュアルシェルしか操作した事がなく、コマンドライン主体の操作に全然慣れていなかった。
 それで四苦八苦しながらシステムディスクを作り、とにかくコンパイルできるような環境にした。その過程で、DOSオペレーションに慣れたというのは収穫であった。

 で、BAStoCによるトランスレーションは、意外なくらいあっさり終わった。本当にそれで出来たのかどうか怪しんでしまうくらいだった。
 そのかわり、出来たソースをコンパイルするのにちょっと苦労した。細かい部分は忘れている事もあって割愛するが、最終的に悩まされたのが、「/W」のつけ忘れという単純なミスだ。/Wオプションは、BASICライブラリを含めるのに使用する。これをつけていなかったのだ。
 この/Wのつけ忘れというのは、のちのちまで私がやらかしてしまうミスの代表格みたいなものだった。

 もっとも、ここがシャープ製Cコンパイラの偉いところで、Cコンパイラのコマンド(cc)に対してX-BASICのファイルを渡してやると、自動的にBAStoCを呼び出してCのソースに変換してから、Cとしてのコンパイルを始める。2つのステップを一発のコマンドでやってくれるのだ(もちろん、正しくCに変換できるソースでないと上手くいかないが)。
 こちらのやり方をすると、わりと細かい事を考えずに実行ファイルを得られるので、おすすめのやり方だ。

 こんな感じで、C言語のコンパイラとしての使用はしていなかったが、お手軽に高速なプログラムを作るのには最適な環境であった。高かったけど、これは本当に買って良かったと今でも思える一品である。


前のMCLへ  次のMCLへ

戻る

TOM 2005