顧客からの開発案件が大詰めを迎える中、定期的に管理をしていたものの、マズイな・・・と思った事がある。首題の通り、ルネサス社のRXマイコンを採用し、開発環境としてはCS+の無償版にて進んでいたわけです。CPUのROM容量は256Kbyte、RAM64Kbyte で開発当初の見込みとしては十分な容量でした。
要求仕様に対して、経験則からではあるがROM容量は100Kbyte、RAMは20Kbyteは流石に使わないだろうという感じでいました。私の設計思想としては、8bitの低スペックマイコンであれば、処理速度やコード容量を鑑みて、アセンブラ言語で開発を進めたり、 可読性よりも 実展開処理を優先するコードを意識するのですが、RXシリーズのCPUは高機能CPUの類に入ると思われ、昨今の高機能CPUは、C言語で多少回りくどい処理を書いても、アセンブラ展開されたコードは 最適化をせずともそこそこ処理速度が速く、コード量も爆発的に大きくはならない。つまり、コンパイラが優秀で、半導体としてのCPUも高性能だ。それもあり、高機能CPUについては、処理速度やコード量は意識はするものの、可読性やメンテナンス性を優先したプログラムを作る方向で進める事が多い。
CS+の無償評価版の制限容量との追いかけっこ
CS+の無償評価版は、インストール後60日以降、CC-RXでROM容量128Kbyteがコンパイル上限である。
ルネサス社 コンパイルライセンスCPUとしてのROM容量は256Kbyteあっても、128Kbyteを超えた時点で、コンパイルできない。無償評価版を使い続けるのであれば128Kbyte以下に抑制しなければ、正規ライセンスを購入する他に手段がないわけだ。そこで、開発終盤でコード容量を確認すると112Kbyteだった。ほぼほぼ機能は盛り込んであり、大きなプログラムコードを入れ込むことは無さそうだが十分な余裕があるとは言えない。納品後に変更や修正が発生すれば、枯渇する恐れもあり得る。ここは、無駄な処理をスマート化して、ソースコードを整理した方が良さそうだ。という事で手を付ける。
コードの見直しと整理整頓
似て非なる処理を一つに纏めてしまったり、重複する様な処理部分は1本化をする。ルックアップテーブルを用意して参照処理に変えれば、コード処理がスッキリする部分もある・・・。という感じで全てのソースファイルを対象に整理整頓を行って、ROM容量100Kbyte以下に抑制を図った。20Kbyte以上の余裕があれば、そこそこの処理は入れ込めるはずなので、今後のメンテナンスを配慮しても気持ちとしては 安堵感。開発環境はどのメーカーも無償版が主流ではあるが、少し大きめな規模の開発に携わると、注意が必要だと改めて感じるわけです。