こんばんは、川合です。 --- go_0023pをMLリリースします。改変点は次のとおりです。 ・gas2naskにxchgを追加 ・gas2naskに新オプション-eを追加 ・naskの JMP $+2 をアセンブルするとおかしくなるバグを修正 ・w32clibcでコマンドラインで "abc def" のようなパラメータを与え たときに、argv、argcがうまく設定できていなかったのを修正 gas2nask.exeとnask.exeはosa_dir/z_tools/の中に入れてください。 w32clibc.libはosa_dir/z_tools/win32/の中に入れてください。 http://k.hideyosi.com/go_0023p.lzh (83.6KB) --- test063をMLリリースします。内容は次のとおりです。 ・最新版guigui00.hとgg00libc.lib test062のlib_getsig等の追加に加え、lib_execcmd2の追加。 lib_execcmd2は、上記のgas2naskの-eオプションと関係していて、 バイナリを小さくするのに貢献します。gg00libcはtek0圧縮がかか っています。 osa_dir/z_tools/guigui00/の中に入れてください。 ・最新版obj2bim.exe lib_getsig系の追加でgg00libcが大きくなったので、ライブラリや オブジェクトファイルがtek0圧縮されていてもそのまま扱えるよう にしました。 osa_dir/z_tools/の中に入れてください。 ・osa_dir用com_make.txtの最新版 gas2naskに-eオプションをつけてあったり、make arcのサポートな どがあります。 osa_dir/z_tools/の中に入れてください。 ・osa_dir用のz_new_oの最新版 make arc用にMakefileを書き換えました。 osa_dir/の中に入れてください。 http://k.hideyosi.com/test063.lzh (38.8KB) --- test064もMLリリースします。内容は次のとおりです。 ・helloc4, helloc7, helloc9 ・bballc0, bballc1, bballc2 ・invader2, invader4, invader5 先日確認したところlcc-win32時代のバイナリサイズが中心だったの で、これをgo_0023+test063ベースにしました。ついでにソースが読み やすくなりそうな改善もしました。内容的にはほとんど変わっていませ んが、gccの最適化能力とgas2naskの-eオプションのおかげで、結構小 さくなっています(註:一般的な傾向として、-eオプションは非圧縮時 のサイズを数パーセント拡大させるが、圧縮しやすいコードになるため 結果的には小さくなる)。 括弧内は非圧縮時のサイズで、左がlcc-win32時代の数字の抜粋、右 が今回の数字です。ツール群の進歩を感じてください(まあ手動最適化 の差(たとえばhelloc4とhelloc7の差)に匹敵するほどの効果ではない ですが。やっぱり人間は最強ってことで)。 helloc4 [工夫のない記述] 507 (619) → 497 (651) helloc7 [少しだけ工夫] 232 (343) → 231 (383) helloc9 [常識的な最適化] 187 (191) → 176 (177) bballc0 [工夫のない記述] 650 (760) → 628 (796) bballc1 [少しだけ工夫] 409 (507) → 389 (545) bballc2 [常識的な最適化] 314 (333) → 295 (318) invader2 [工夫のない記述] 1770 (2375) → 1699 (2654) invader4 [常識的な最適化] 1426 (1806) → 1371 (1652) invader5 [本気で最適化] 1293 (1519) → 1258 (1488) 5/12も近づいていることですし、これくらい最適化するとこれくらい 変わるのかという参考程度に、test064を活用してください(helloc4と helloc7を比べて、266バイトの差(=497-231)に見合うと思うかどうか など)。 そのうちこの内容でページも書き直します。 http://k.hideyosi.com/test064.lzh (24.5KB) --- 以上です。 それでは。 -- 川合 秀実(KAWAI Hidemi) OSASK計画代表 / システム設計開発担当 E-mail:kawai !Atmark! osask.jp Homepage http://osask.jp/