こんばんは、川合です。今までに分かったことをまとめます。
MITSUNARI shigeo さんは 2002/10/22 13:09:20 の「[OSASK 5202] Re:
gcc移植計画.」で書きました:
>かなり大変だと思いますががんばってください。
>先ほど gcc-3.2-20020817-1.src.tar.gz を Linux 上で展開して ./configure && make
>したら20〜30分でバイナリが出来上がりました(P4-2GHz)。
>作業後のディレクトリサイズは 290MB 程度でした。
>ちなみに gcc 直下にできた Makefile が 4900行でした。
がんばってみました。今日は少し雑用があってフルタイムでは勉強で
きませんでしたが、それでもまあまあ進歩しました。
・I.Tak.さんの指摘通り、cpp0はプリプロセッサ、cc1はコンパイラ、
asはアセンブラでした。
→gcc.exeなしでコンパイルする方法が分かって、それは以下の通
りでした。
cpp0 -I. -o helloc4.i helloc4.c
cc1 -O2 -o helloc4.s helloc4.i
as -o helloc4.o helloc4.s
これで、それぞれの中間ファイルの中身も分かりました。
・cc1はプリプロセッサも含んでいる。
→cc1 -O2 -I. -o helloc4.s helloc4.cとやったところ、cpp0を呼
び出すことなくアセンブラソースが出てきました。ということは、cc
1はプリプロセッサを内蔵しているというわけです。きちんと分かれ
ているんだと思ったのにけしからんです。とりあえずいったん分離さ
せる方針なのでサイズ縮小の可能性は上がりました。
・cc1plusは、cc1にC++の文法解釈機能を付加したものじゃないかな?
→ファイル名から勝手に想像しているだけです。違うかもしれませ
ん。
・cygwinでgcc-3.2-20020817-1.src.tar.gzから、cpp0.exe、cc1.exe、
cc1plus.exeの生成に成功しました。cygwin内では「gcc version 2.9
5.3-5 (cygwin special)」というのを使ってビルドしました。生成し
たcpp0とcc1でhelloc4.sを作ってみましたが、うまくいっているよう
です。
・作ったcpp0とcc1はすさまじく巨大です。
→cpp0.exe : 555KB (MinGWのcpp0.exeは93.0KBです)
cc1.exe : 7.49MB (MinGWのcc1.exeは2.50MBです)
なんでこんなにでかいのか分かりませんが、これからがんばって小さ
くするまでのことです。
・まずはcpp0.exeをMinGWで!
→cpp0.exeはプリプロセッサで、とりあえずこれに集中的に取り組
むことにします。プリプロセッサはASKAでも使いますので、あって困
るものではありません。まずはMinGWで作れるようになって、そしてコ
ンパクト化して、最後にOSASK上で走るようにします。
・GASのソースはどこにあるんだろう?
→as.exeも移植しなければいけないので、gasのソースがほしいん
ですが、どこにあるかご存知の方はおられますか?
cygwin上とはいえ、cpp0やcc1が生成できてとても嬉しいです。これ
はくーみんさん、光成さん、I.Tak.さんのおかげです。ありがとうござ
いました。
明日の晩にまた報告しますので、お楽しみに。
それでは。
--
川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/