[OSASK 5231] Re: gcc移植計画.

  こんばんは、川合です。毎度のレポートです。

  ようやく、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/


ML番号でジャンプ
ML単語検索