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.

[参考译文] MSP430F149:代码优化

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1019749/msp430f149-code-optimization

器件型号:MSP430F149

我正在将常规 CCS 环境移植到新的 MacBook (M1)、在这个新系统上生成的代码与 当前系统上的代码不完全相同。 这对我来说是一个问题、因为代码 CRC 在本例中具有法律意义。

我有两个用于生成代码的项目、一个库和一个常规项目、是库项目(我无法在新 CCS 中导入)、在代码方面略有不同、 虽然 CCS 和编译器版本相同、并且(到目前为止我可以看到)所有优化设置都相同。

代码差异(我能够检测到的至少一个差异 可归结为以下代码段:

当前系统:

...
33a8:   12B0 33DC           CALL    #$abproc0
...
      $abproc0():
33dc:   403D 4B06           MOV.W   #0x4b06,R13
33e0:   12B0 4552           CALL    #operator <<
33e4:   4130                RET     

编译器使用$abproc0优化对同一例程的几个调用。

 在新系统上、代码如下所示:

3338:   403D 4B38           MOV.W   #0x4b38,R13
333c:   12B0 4584           CALL    #operator <<

这种情况会发生几次、因此另一个版本确实会保存几个字节。

是否有人知道在生成的代码中哪个参数/设置可能会产生这种差异?

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

    您好,

    优化设置可能会导致问题。 您现在在项目上使用的优化级别是什么? 您可以尝试关闭优化级别并构建项目吗?

    此致、

    现金 Hao

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

    是的、当然可以。 实际上 、两个项目的大小与优化设置(0与1)之间存在细微差异。 当值为1时、编译器设置中不会列出该值、因此我错过了差异、从视觉上看、该设置是...  无法读取。

    无论如何、感谢您的提问和建议。