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.

[参考译文] TMS320F28375S:C 编译器

Guru**** 2535750 points
Other Parts Discussed in Thread: TMS320F28375S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1079735/tms320f28375s-c-compiler

部件号:TMS320F28375S
“线程: 测试”中讨论的其它部件

大家好,我是在写一篇关于 C2000 DSP C 编译器的问题的文章的
(Code Composer Studio 8.0.0.00016,编译器版本21.6.0.LTS,DSP TMS320F28375S)。
以下是两个翻译示例:

ACC        32位无符号(DSP 蓄能器)
RES        16位无符号局部变量

1) C 代码             ACC ==((UINT16)(ACC >> 16))<<4);
                       RES = ACC + 1;

   ASM 代码           Add    ACC,AH<#4     ;SXM = 0
   需要           添加    附件,#1
                       MOV    PL,AL

   ASM 代码           MOVL   P,附件
   从编译器      MOV    ACC,PH <<#4.
                       MOVZ   AR7,AL
                       MOVL   附件
                       Addu   ACC,AR7.
                       MOVL   P,附件
                       MOV    AL,PL
                       ADB   AL,#1
                       MOV    PL,AL

2) C 代码             分辨率= ACC +(((UINT16)(ACC >> 16))<<4)+1;

   ASM 代码           Add    ACC,AH<#4     ;SXM = 0
   需要           添加    附件,#1
                       MOV    PL,AL

   ASM 代码           MOVZ   AR4,AL
   从编译器      MOV    ACC,AH <<#4.
                       添加    AR4, AL
                       ADDBXAR4   ,#1
               

示例2编译器中的 ASM 代码不是预期的代码(即我应该编写的代码),但仍然可以接受。
但是,在示例1中,编译器生成的汇编指令数是预期代码的三倍。
我做了些什么错了吗?
是否有编写 C 代码的指导方针,以便编译器生成的汇编代码高效?

谢谢!
下午好

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

    当性能很重要时,请使用编译器选项--opt_level=2或更高版本启用优化。  请在 C28x 编译器手册中搜索该选项。

    如果这不能解决问题,我需要一个测试用例。  就在目前,我认为这一问题的示例发生在同一源文件中的两个不同函数中。  对于该源文件, 请按照文章 “如何提交编译器测试用例”中的说明进行操作。  此外,请为 生成问题代码的函数命名。  如果这些函数较大, 请指出 这些函数中的哪些行与问题相关。

    谢谢,此致,

    乔治

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

    大家好,我将 opt_level 从1更改为2,但基本上没有什么变化。 示例1的装配说明为9到8,而示例2的装配说明为4到5。 请求的主题不是非常关注特定示例,而是关注 TI 可能提供的包含 C 代码一般准则的文档,以便通常获得优化的汇编代码。 感谢您的回复。 此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="60619" url="~/support/icros/c2000微控制器-group/c2000 /f/c2000微控制器-forume/1079735/tms320f28375s-c-compiler/3997100#3997100"]一份包含 C 代码一般指南的文档,用于一般获取优化的汇编代码

    我有两条建议。  一是 较大文章 C28x 代码生成提示和技巧的优化部分。  第二, C28x 优化指南

    如果您仍然遇到与第一篇文章中提到的特定代码片段类似的问题,那么我需要一个测试用例,以便我重现相同的结果。  在这样的情况下,所有的小细节都很重要。

    谢谢,此致,

    乔治

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

    您好,感谢您提供的链接和信息。

    此致。