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