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.

[参考译文] 编译器/TM4C123BE6PZ:优化级别大于'OFF'

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/634213/compiler-tm4c123be6pz-optimization-level-greater-than-off

部件号:TM4C123BE6PZ

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

最近,我们的一个应用程序的内存被耗尽。  我们采取了两种方法来解决该问题:

1)分析MAP文件并删除不可执行代码所包含的任何函数。  这实际上解决了问题。

2)另一个途径是提高优化水平。  从关闭到0-Register优化通过25 % 减少代码大小,一级为我们提供了另一个6 % ,每个附加级别的帮助介于-1和4 % 之间。

我们讨论了优化级别。  我们一致认为,我们应远离更高的优化级别,因为:

1)逐步执行代码变得越来越困难,有时甚至几乎不可能

2)我们不信任上层。  

编译器编写者需要在某些时候变得相当棘手,其中一些技巧可能没有经过充分的测试。

经验表明,在更新到新版本的编译器时,中断的是高度优化的代码。

但是,如果我们遇到紧急情况,仅在第一级优化中节省25 % 的成本非常诱人。

那么这些优化级别定义在哪里?  如果没有,什么是'注册优化'?  

我可以猜函数参数和寄存器是否得到了更优化,本地变量与栈与寄存器是否是一样?  还有什么?

如何更改带CCS的逐步执行C代码?  这些差异是否只能在浏览汇编程序窗口时看到?

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

    那么这些优化级别定义在哪里?  [/引述]

    请参阅 ARM编译器手册中标题为“优化代码”的章节。

    如何更改使用CCS逐步执行C代码?  这些差异是否只能在浏览汇编程序窗口时看到?[/QUET]

    请参阅文章 调试与优化权衡

    最近,我们的一个应用程序的内存被耗尽。  我们采取了两种方法来解决该问题:[/QUOT]

    另一种要考虑的方法。  使用 Optimizer Assistant(优化器助手)。  这是CCS的一项功能,它使您可以轻松地使用编译器选项进行优化和代码大小测试。

    谢谢,此致,

    -George