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.

TMS320F28066: 不同编译器编译同样代码,代码占用flash内存差异过大问题

Part Number: TMS320F28066

你好,我使用CCS10.4(编译器版本V20.2.7)和CCS6.1(编译器版本V6.4.2)编译同样的代码,对比它们生成的.map文件,发现前者的编译出来的.text文件比后者编译出来的大了1K多,请问是什么原因呢?

  • 你好,我已查看你发的帖子,里面是描述了代码优化的。上述的同样代码在不同编译器版本下编译,所占内存大小差异过大问题是在同样的优化等级下进行的。所以我还是不明白问题出在哪里?

  • 好的,我需要咨询下相关资深工程师,一旦有回复会立即回复您。

  • 不同版本的编译器也可能会使用不同的默认编译选项,例如不同的优化级别等。你可以比较一下两个版本所使用的编译选项是否相同,尤其是关于优化的设置。如果有差异,可能会影响生成的可执行文件大小。

  • 上面提到的问题是我把两个编译器的优化选项设置为一样的情况下测试的结果,下图是两个编译器的设置。麻烦帮忙看一下还有哪些地方会导致出现此问题?谢谢!

  • 以下是我能想到的一些可能导致.text文件大小差异的原因:

    1. 版本差异:CCS 10.4和CCS 6.1使用不同版本的编译器,有可能存在编译器内部实现的差异,导致生成的代码大小不同。

    2. 引入的库文件不同:如果在两个版本的CCS中使用了不同版本或不同数量的库文件,则编译生成的代码大小可能会有所不同。

    3. 编译器标志不同:尽管你说已经将优化选项设置为相同,但是还有许多其他的编译器标志可以影响最终生成的代码大小。

    4. 对象文件不同:如果你使用了不同版本的源代码,或者在两个版本的CCS中使用了不同的编译器选项来编译不同的源代码文件,那么生成的.obj文件可能会有所不同,导致最终的.text文件大小也不同。

  • 感谢Amter Cai的分享。请参考Amter Cai的回答。

    两个编译器版本差异太大,没有特殊需求还是请使用新版的编译器,同时根据需求修改编译器优化等级(一般情况默认就行)。