こんばんは、川合です。
---
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/