マルチセグメント化で一度は動くようになったけれど、いまいち挙動が安定しない。
どうも、マルチセグメント化時に従わなければ行けない規則に抵触しているようなのだけれどいまいちわからない。
なので、コードサイズを小さくすることで逃げるように方向転換。
基本的にインライン展開される STLが肥大化の一番の要因であることは想像がつくのでラッパーを作って総量を抑制するように。
この際目安になるのが m68k-palmos-sizeコマンド。
USER@lachesis:~/decop/edit$ ~/local/palm/bin/m68k-palmos-size *.o text data bss dec hex filename 196 196 0 392 188 application.o 818 472 0 1290 50a bottomlist.o 290 276 0 566 236 decop.o 4 4 4 12 c decop_e-sections.o 314 284 0 598 256 decopapplication.o 1010 872 0 1882 75a decoplan.o 46 0 0 46 2e device.o 1916 764 0 2680 a78 divelist.o 3662 2192 42 5896 1708 editbottomform.o 2686 1664 36 4386 1122 editdivenoform.o 4696 2368 146 7210 1c2a editplanform.o 884 852 0 1736 6c8 formbase.o 68 0 0 68 44 gccfix.o 288 460 8 756 2f4 infoform.o 96 148 0 244 f4 modaldialog.o 192 264 0 456 1c8 ownerdrawlist.o 660 492 8 1160 488 palm.o 1066 1028 0 2094 82e wrapper.o
ってな感じにオブジェクトコード毎のサイズを示してくれるので変更の結果が具体的にわかる。
ちなみに textが 20KiBを超えると赤信号。
富豪的プログラミングでぬるま湯につかっていた身としては非常に厳しいね。
C++は向いてないんだろうな。