This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F2.8334万:C2000编译器可能使用MPYA生成了错误的汇编代码

Guru**** 2390735 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/583212/compiler-tms320f28334-c2000-compiler-generates-probably-wrong-assembly-code-with-mpya

部件号:TMS320F2.8334万

工具/软件: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.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的分析听起来很有声音。  我需要复制该汇编代码以便对其进行调查。  请...

    1. 使用 问题代码预处理源文件
    2. 将其附加到下一帖子
    3. 用问题代码指示功能的名称
    4. 准确显示编译器看到的所有生成选项

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您通过其他渠道提交测试案例。  我可以重复这个结果。  我在 SDOWP系统中提交了CodeGen-2168,以便对其进行调查。  欢迎您使用我签名中下面的SDOWP链接进行关注。  

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    George,

    客户脱机询问在 解决此勘误表之前大约需要多长时间。

    此致,贝恩德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此问题已解决,正在等待提交。  补丁将在v.LTS.4.LTS 16.9 和v 15.12 6.LTS中提供,这两个版本都将于7月17日到期,而在v.STS.STS中将17.6 于6月到期。  请注意,问题所针对的版本6.4 不再受支持,将不会修补。