ROMとはお金である
先日購入したBluetooth キーボード、Mac/Windows タイプに対応しているキーボードなんですが、デフォルトでMacなのが面倒くさい…(毎回切り替えないといけない)です。と早くも文句たらたらw
使い勝手はいいんだけどね。
さて、仕事を進めるには、様々なやり方があり、そのための手順を組み立てられなければ、仕事にならないわけです。いくつもの手順を描けるのであれば、それらを比較し、最適を探しだし、随時改善する。コストがかからない。嬉しいね、となるわけです。
組み込み系技術者にとってROM容量はこのコストに直結することを見据えた上で、設計をしなければいけません。
私は仕事しているときはあんまり何も考えておりませんでした。
精進します。
typedef unsigned char UI_8; typedef unsigned short int UI_16; /* * がんがん頻繁に呼ばれるような外部関数 */ void external_busy_func(UI_8 type) { if ( type < TYPE_1 ) { // type の値により ex_set_func( SET_VALUE_TYPE1 ); // 同じ関数を場合わけしている。 } else { // このような場合、アセンブラで見るとわかるが ex_set_func( SET_VALUE_TYPE2 ); // 関数は記述するだけROMを食ってしまう(無駄である) } }
(ただし、ちりも積もれば…的な考えなので、そうそうROMは溢れない(はずである)。しかしコストを気にする場合にあたっても、平易なコードになるかどうかはトレードオフの関係であるので注意する)
これは次のようにしませう。
typedef unsigned char UI_8; typedef unsigned short int UI_16; /* * がんがん頻繁に呼ばれるような外部関数 */ void external_busy_func(UI_8 type) { UI_16 set_value; if ( type < TYPE_1 ) { // type の値により set_value = SET_VALUE_TYPE1; // 関数を呼ぶ回数は } else { // 最小限にする set_value = SET_VALUE_TYPE2; } ex_set_func( set_value );} }