GCC 3.3.2リリース 7
ストーリー by Oliver
一人でもがんばるもん 部門より
一人でもがんばるもん 部門より
yourCat 曰く、 "GCC 3.3.2がリリースされた (変更点一覧)。また、WindowsForDevices.comに、Windows CE/PocketPCへ一人で移植しているロシア青年・Vitaliy Pronkin氏へのインタビュー記事が掲載されている (本家/.の記事)。"
yourCat 曰く、 "GCC 3.3.2がリリースされた (変更点一覧)。また、WindowsForDevices.comに、Windows CE/PocketPCへ一人で移植しているロシア青年・Vitaliy Pronkin氏へのインタビュー記事が掲載されている (本家/.の記事)。"
最初のバージョンは常に打ち捨てられる。
make 終了 (スコア:2, 興味深い)
他にもいくつか -O2 -mcpu=i586 -march=i586 程度の CFLAGS を使用して make してみましたが、ごくわずか作成されたバイナリが小さくなるようです(1kB/1MB 程度)。
今回のリリースは bug fixs ばかりですが、かなり枯れてきていると思います。
Re:make 終了 (スコア:1)
ん?-mcpuオプションと-marchオプションの両方を指定するのって、何か意味があるのでしょうか?
gccのマニュアル [gnu.org]では、
-march=cpu-type
Generate instructions for the machine type cpu-type. The choices for cpu-type are the same as for -mcpu. Moreover, specifying -march=cpu-type implies -mcpu=cpu-type.
とあるので、-mcpuか-marchのどちらかを指定すれば十分だと思ってたんですが。
Re:make 終了 (スコア:2, 参考になる)
だと、命令のスケジューリング、関数エントリやジャンプ先をキャッシュラインに合わせる、また同じ動作の命令で386ではAがBより速く、586ではBがAより速い場合Bの命令を生成します。命令自体は386なので386でも動きます。
-march=i586
だと586にしかない命令を使うので586以上でしか動きません
-marchを指定すると-mcpuも指定したことになりますが、逆はありません。
Re:make 終了 (スコア:2, 参考になる)
-mcpu=cpu-type は CPU に合わせたスケジュールを生成します。
例えば -march=i386 -mcpu=i686 だと i386 でも実行できるけど、 i686 にスケジュールが最適化されたコードを生成できます。
つまり i686 では速く動くわけです。
この違いがよくわかるのは、例えば i586 と i686 に対するコードの生成のときです。メモリの align の違いがあるので、他にもオプションでいろいろ楽しめますよ。
Re:make 終了 (スコア:1)
なるほど、どういう違いがあったのですか。
今度試してみます。
タレコミ (スコア:1)
すでに安定したバージョンがあるtargetでは急いでupdateする必要が無いからだろうけど、
minor targetでは死活問題。(しかし直ってない (;_;)