フラグが設定されているときに変数の値を変更したいとします。明らかな方法は次のとおりです。
int a = 1, b = 2;
if(Flag)
{
a=b;
Flag = false;
}
ただし、これは、操作を実行するために生成されたコードでは非常に非効率的です。私は、以下が操作を実行するために40%少ないコードを生成することを発見しました。
a = ((!Flag)*a)+((Flag)*b);
Flag = false;
私の質問:乗法/除算演算子はターゲットでの実行が遅いため、乗法「*」演算子は使用しません。コードスペースを増やすことなくこれを高速化するために他に何を使用できますか?
編集:ターゲットデバイスは、kHz範囲で実行されているMSP430です。コードスペースと実行時間は重要です。コンパイラはIARCです