大家好,我是
电源漫谈
。
在想必今年的贺岁档电影,由贾玲导演的“热辣滚烫”很多朋友都看过,在其中讲述的是主人公励志瘦身后开启的热辣滚烫的人生故事。
同样在嵌入式开发中,当用户使用XC16编译器时,往往会由于Flash空间大小或者其它问题需要使用代码优化功能,本文将对这方面问题做一个简单介绍。在一些特殊的场景下,如涉及到多方合作开发时,固定空间的代码占用Flash空间受限时,通过编译器的优化处理“瘦身”是一种方便的方式。
MPLAB XC16 C
编译器许可证类型有
FREE
、
EVAL
和
PRO
。初始编译器开始下载为评估
(EVAL)
版本
,
允许在
60
天的时间内
,
将编译器用作为专业
(PRO)
许可证,它具有最
优化的功能。当然,免费许可证的优化最少。
PRO
许可证可以随时购买,在编译器优化选项里可以设置不同的优化,从无优化到完全优化,具体取决于您的编译器
版本。
这里值得一提的是,当调试代码时,您可能不希望优化代码以确保预期的程序流程。
图
1 FREE
和
PRO
版本优化等级
FREE
等级和
PRO
等级的编译器的优化能力等级如上述图
1
,二者相差较多。
图
2
三种编译器版本的可使用优化等级及限制
在上述图
2
表格中,可以看到
PRO
版本的编译器具有所有等级的优化功能,如
O0,O1,O2,O3,mpa
等,但是
PREE
版本的优化功能也不止选择默认的
O0
,对于
O1
,
O2
优化选项也可以选择,
EVAL
版本的编译器在
60
天内可以按照
PRO
版本来用。
每个许可证都支持与特定功能相同的优化。当前支持的优化功能列表是显示如下,如图
3
所示,这些功能可能会发生变化。
图3 FREE
和
PRO
版本编译器的优化内容说明
图
4
默认编译器优化选项
上述图
4
中,默认编译器优化选项为
0
,这时候编译器一般是没有优化的。
图
5
不同优化等级的选项
可以在上述编译器特性选项中设置不同的优化等级,说明如下:
- 0 - Do not
optimize. The compiler’s goal is to reduce the cost of compilation and to make
debugging produce the expected results.
- 1 - Optimize. Optimizing compilation takes somewhat longer, and a lot more
host memory for a large function. The compiler tries to reduce code size and
execution time.
- 2 - Optimize even more. The compiler performs nearly all supported
optimizations that do not involve a space-speed trade-off.
- s - Optimize yet more favoring size (superset of O2).
- 3 - Optimize yet more favoring speed (superset of O2)