关于F2812 IQmath 乘法优化问题
CPU: F2812
ccs6
long x;
x=_IQ16mpy(_IQ16(0.017),x);
第一段程序:
正常编译后为:
MOVL XAR4,#1114 ; [CPU_U] |502|
MOVL XT,XAR4 ; [CPU_] |502|
IMPYL P,XT,*-SP[4] ; [CPU_] |502|
QMPYL ACC,XT,*-SP[4] ; [CPU_] |502|
LSL64 ACC:P,#16 ; [CPU_] |502|
MOVL *-SP[4],ACC ; [CPU_] |502|
如上代码计算时间较长.
第二段程序,与第一段程序结果相同,但速度要快,
MOV T,#1114 相当于先左移16位,后面就不需要左移16位。
QMPYL ACC,XT,*-SP[4]
MOVL *-SP[4],ACC
这样效果是一样的,不需左移了,这样时间省了一半.
如何才能编译出第二段程序呢? 我想可能的办法是:
1、使用优化方法,试过,没有效果
2、采用其他的IQmath方法,如IQNmpyIQX, 但一直没找到合适的方法。
请大侠帮忙看一下,如何才能优化成第二段程序呢?