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 );}
}