请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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 <<
这种情况会发生几次、因此另一个版本确实会保存几个字节。
是否有人知道在生成的代码中哪个参数/设置可能会产生这种差异?