假设我想在设置标志时更改变量的值。一个明显的方法如下。
int a = 1, b = 2;
if(Flag)
{
a=b;
Flag = false;
}
然而,WRT 为执行操作而生成的代码是非常低效的。我发现以下生成的代码减少了 40% 来执行操作。
a = ((!Flag)*a)+((Flag)*b);
Flag = false;
我的问题:我宁愿不使用乘法“*”运算符,因为乘法/除法运算符在我的目标上执行速度较慢。在不增加代码空间的情况下,我还能用什么来加快速度?
编辑:目标设备是在 kHz 范围内运行的 MSP430。代码空间和执行时间至关重要。编译器是 IAR C