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.8035万:变量赋值需要很长时间

Guru**** 2587345 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/656573/compiler-tms320f28035-variable-assignment-takes-a-long-time

部件号:TMS320F2.8035万

工具/软件:TI C/C++编译器

您好,Champs:

我的客户正在编写F2.8035万代码。 当他们发现分配 给变量时,需要2个用户来完成每个操作。 他们检查 了汇编代码,发现有一些长电话指令,如下所示。  

请您解释一下"LCR I$TOFS"的含义。 以及如何优化它?

谢谢。

巴西,

年轻

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

    使用了哪些编译器设置/优化设置? C28x CPU参考指南 www.ti.com/.../spru430f.pdf
    具有LCR说明的详细信息。

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

    您似乎尝试将整数值(Vrecrected)分配给浮点变量(CpuToCla.Vrect)。 这将调用库过程"I$TOFS"将整数值转换为单精度浮点值。 F2.8035万没有FPU,因此不能使用硬件指令进行此类转换。 这就是为什么它调用库过程(LCR表示"程序分支")。

    我可以看到,您想调用CLA进行浮点计算。 我还可以看到,您以前尝试将浮点赋值给浮点值。

    CLA中有一个用于转换的硬件操作:MI16TOF32,MI32TOF32。 因此最好将整数值传递到CLA,然后将它们转换为CLA代码中的浮点。

    不确定如何正确执行,但可能如下所示:

    在C28侧:
    CpuToClaIntegers.Vrect = Vrecalged;

    在CLA侧:
    VrectFloat =(float) CpuToClaIntegers.Vrect.