”組み込み”プログラムと移植性・保守性
■ このスレッドは過去ログ倉庫に格納されています
0001休職中プログラマ
NGNG”組み込み”プログラムにおいて、移植性・保守性を損なわず、かつ、高速でコンパクトなコードを作成するノウハウに関して、このスレで意見を交換できればと思います。
私自身の経験としては、”V832・GreenHills”から、”SH4・日立純正コンパイラ”へC言語のプログラムを移植するという作業をした事があります。
お客様から仕事を請け負った時点では、
�@初期化や終了処理に関して仕様変更があるので、対応してほしい。
�Aメインとなる処理部分(音声入力に関して専門的な知識が必要)は、コンパイルを通すだけで良い。
という条件でした。
しかし、実際に移植して動かしてみると、メインとなる処理部分の実行時間が、クロック周波数が同程度であるにも関わらず、1.2倍ほど掛かる事が分かりました。
今にして思えば、請け負った時点で、2つのCPUの汎用レジスタの数の違いを、考慮するべきでした。
私は、SH4のアプリケーションノートを読んで、以下のような対策を取りました。
�@汎用レジスタに割り付けられる局所変数は4つという事なので、局所変数を減らす。
�A局所変数を減らすために、モジュールを細かく分割し、変数を各モジュールに閉じ込める。
�B最終的に、関数コール以外で、メモリアクセス(スタック)が発生しないように再コーディングする。
※お客様からのご要求もあり、アセンブラは使用しませんでした。
その結果、メインとなる処理部分の実行時間は、V832の0.8倍程度になりました。
今現在でも上記の方法が、ベストだったのかは、分かりません。
私の経験が、同様の問題を抱えてられている方の、ご参考になれば幸いです。
また、「自分はこういう工夫をした」という体験談や「自分ならこうする」といったご意見を支障のない範囲でお聞かせ下さい。
■ このスレッドは過去ログ倉庫に格納されています