工具/软件:TI C/C++编译器
您好,
我遇到与编译器相关的问题。 我正在使用编译器v.6.4 12版,在更改代码中的一个常量时,它给出了不同的代码,有时不是工作代码。 下面介绍了我在其中发现此问题的设置。
在我相当庞大的项目中,执行了数个矩阵乘以矢量复用。
MAC功能定义如下:
矩阵值是常量的:
当我用Matrix S R 8 _10 =460的值编译代码时,它会生成工作代码。 但是,当我将值更改为Matrix _S_R_8_10 = 457时,装配体文件的输出看起来错误:
很难看到c代码和汇编文件之间的连接。 但当我分析 右边汇编代码的第1100行-第1102行(Matrix _S_R_8_10 = 457)时,我认识到以下内容:
MOV T,#8131 ;[CPU_]|160|
MPYA P,*+XAR6[1],#457 ;[CPU_]|160|
寄存器T加载8131。 然后执行命令MPYA P,loc16,#16bit。 它"使用的内容加载T寄存器
“loc16”寻址模式所指的位置(SPRU430F)。 因此,T寄存器的值将被覆盖。
这是一个已知问题吗? 是否存在解决方法?
感谢您的建议和意见。
此致,
Timon
设置:
DSP:TMS320F2.8334万
代码编辑器工作室:6.1 .3.0.0034万
编译器:v 6.4 .................................................................12.
--opt_level:4.
--opt_of_speed:5.