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.

[参考译文] TMS320F28069:CGT C2000在编译时不会替换文字的 sqrt

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1175598/tms320f28069-cgt-c2000-does-not-replace-sqrt-of-literal-at-compile-time

器件型号:TMS320F28069

CGT C2000支持团队您好、

我注意到编译器在编译时未优化以下内容:

sqrt(2)

相反、生成的汇编代码显示对 sqrt 进行了实际运行时调用。

我想这种行为从根本上说是合理的,因为 sqrt ()只是一个函数调用,不能指望编译器知道函数将返回什么。

但是、编译器识别某些标准数学函数并评估常量表达式似乎是合理的。

毕竟、它在使用 TMU 的上下文中识别 sqrt、sin、cos、atan 和 atan2。

是否可以进行任何配置来使编译器也能够使用这些函数优化常量表达式?

提前感谢您、

心搏

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

    Beat、F28069没有 TMU、该 TMU 本来可以帮助在 fp_mode=relaxed 中进行 sqrt 计算、因此在这里不适用。 因此、我将把您的问题转交给编译器专家、看看他们是否有任何意见。

    谢谢、

    Sira

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

    您好、Sira -我知道 F28069没有 TMU。

    这个问题与 C2000 CGT 有关、而不是特定的 C2000器件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="134083" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1175598/tms320f28069-cgt-c2000-does-not-replace-sqrt-of-literal-at-compile-time "]是否可以进行任何配置来使编译器也能够使用这些函数优化常量表达式?

    是的。  如果使用类似的选项进行构建...

    --fp_mode=relaxed --tmu_support=tmu0 --opt_level=2

    (笑声) 然后将 sqrt (2)替换为常数。  要了解这些选项、请在 C28x 编译器手册中搜索它们

    请注意、如果 C28x 器件的数据表未指定 TMU 可用、则无法使用选项--TMU_support。

    谢谢、此致、

    乔治