|
写了一个计算公式,用IQmath, 由于实时性要求比较高,原表达式是这样的: A=_IQ19mpy( _IQ19mpyI32(-sin_theta, ad_m1ia) - _IQ19mpyI32(-sin_thetaDec120, ad_m1ic) - _IQmpyI32(-sin_thetaAdd120, ad_m1ib), _IQ19(ROOT) );太长看起来麻烦,改变一下把无关紧要部分合成C: A = _IQ19mpy( C, _IQ19(ROOT) ); 由于_IQ19(ROOT) 是个定量, 经常被用到, 所以就改了一下,在程序刚开始时转换 D = _IQ19(ROOT);这样每次使用ROOT就不用强制转换了, 然后 A = _IQ19mpy( C, D ); 满以为会减少一肉步,结果编译后汇编比原来反而多了一行,出乎意料.
下图改后汇编:
下图改前汇编:
PS: #define ROOT 1.2247448713
[ 本帖最后由 hong7817 于 2012-11-16 13:56 编辑 ]
|
|