こんばんは、川合です。毎度のレポートです。 ようやく、cpp0.exeとcc1.exeはwin32環境下のMinGWのみでmakeでき るようになりました(cygwinはいりません)。cc1plus.exeは明日やり ます。つかれました。 それでもやっぱりcpp0.exeは143KBでした。MinGWのcpp0.exeは93KB なのに・・・。いったいどうやってMinGWの製作者たちはこれを作った んじゃ〜!と思って、途方に暮れました。 それで余興に、hello.cを作ってMinGWでビルドしてみたんですが、こ れが22KBにもなりました。win32用アプリとはいえ、これは大きいです 。lcc-win32なら、3.0KBにしかならないのに・・・。しかしこの差は、 コンパイラの性能というよりも主にスタートアップルーチンの特性によ るということは、百も承知です。 ということは、MinGWでオブジェクトファイルを作ってlcc-win32のス タートアップルーチンを使ったらどうなるだろうと思いました。もちろ んやってみました。大当たりです。あっさりと95.0KBになりました。こ れはいけます。 しかし、起動しないんですよ・・・。うーん、やっぱりちょっと強引 だったか・・・。でもこの実験で希望が持てました。MinGWにくっつい てくるライブラリを使わないようにすれば、lcc-win32のスターアップ ルーチンでもいけるということになるので、それだけで小さくできそう です。cc1.exeなんてlcc-win32のスタートアップなら2.48MBだったのに ・・・うーん、実に惜しいなあ。ということで、gcc専用の代用標準ラ イブラリを作ります。これを作ることが移植のメインです(代用ライブ ラリの都合に合わせて、gcc側もいじりますが)。僕は最初からそのつ もりでしたので、これは予定通りです。代用ライブラリはOSASKでも使 えるように配慮するので、これができたら移植の大半は終了です。 サイズの話をまとめると、こんな感じです。 lcc-win32のリンカとwin32用標準ライブラリを使用: cpp0.exe : 95.0KB → でもうまく動かない cc1.exe : 2.48MB → でもうまく動かない MinGWのリンカとwin32用標準ライブラリを使用: cpp0.exe : 143KB → でもうまく動く cc1.exe : 2.78MB → でもうまく動く (参考)MinGWに付属のcpp0とcc1のサイズ: cpp0.exe : 93.0KB → もちろんうまく動く cc1.exe : 2.50MB → もちろんうまく動く なお、MinGWのレベルまでくれば、tek0で圧縮してなんとかディスク2 枚に収まります。これはとりあえず合格といえるでしょう。まあ今のレ ベルでも3枚なら収まりそうなサイズですが。 それでは、またあした。 -- 川合 秀実(KAWAI Hidemi) OSASK計画代表 / システム設計開発担当 E-mail:kawai !Atmark! imasy.org Homepage http://www.imasy.org/~kawai/