关于MDK5代码优化问题(学习笔记)

之前学习时发现,代码实运行时,会自动跳过一部分代码,所以怀疑可能是代码被编译器优化过的问题。

1.Use Cross-Module Optimization:使用跨模块优化使用跨模块优化可以启用链接器反馈文件(进行两次编译),从而允许进一步的代码优化。理解就是减小代码大小,优化代码性能。

参考:https://blog.csdn.net/chengdong1314/article/details/70622392

2.Use MicroLIB:MicroLIB是缺省C库的备选库,适用在深层嵌入式的应用程序中,不在操作系统上运行。作用就是高度优化,使代码空间更小。

参考:https://blog.csdn.net/chengdong1314/article/details/70622392

3.Use Link-Time Code Generation:

使用链接时代码生成

在我当前的keli版本里并没有这个优化选项,不过在其他资料里有提到过,作用也是优化代码,减少空间,重新排列变量,优化内存访问。

4.Execute-only Code:生成只执行的代码。意思就是不用的变量或函数,不进行链接。

5.Optimize for Time:优化时间,代码空间变大,但运行时间变小。

6.Split Load and Store Multiple:

拆分加载和存储多个

提高系统的总体性能。但是之前很少用到(几乎没有)

7.The One ELF Section per Function:

每个函数一个ELF段

功能是告诉编译器可以删掉不使用的函数代码段。

8,优化等级有5个,分别是default ,level 3,level 2,  leve 1, level 0;

default:作用是优化性能为先,

level 0. ;关闭大部分优化,只进行简单的转化,

level 1,代码有合理的优化,对于调试比较友好

level  2,此时优化程度比较高,不适合调试,

level 3.最大优化级别.这时优化程度最高。

我当前的编译器时AC5;

1、要优化代码大小,可选择

USE MicroLIB

Use Cross-Module Optimization

level  2

2、优化代码性能

Use Cross-Module Optimization

level 3.

optimize for time 

3、如果两者都要考虑,则可以选择

Use Cross-Module Optimization

level 3.

optimize for time .

目前还没打算把编译器升级AC6,

https://www.cnblogs.com/CodeWorkerLiMing/p/12034471.html这篇博客是教怎么升级到AC6的


参考:https://blog.csdn.net/chengdong1314/article/details/70622392

https://www.myoschain.com/blog/155727006896488449

https://blog.csdn.net/yangtalent1206/article/details/8493120

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容