0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >基础知识 > 单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析

单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析

来源: 21ic
2020-12-03
类别:基础知识
eye 69
文章创建人 拍明

原标题:单片机编程软件很简单(22),keil单片机编程软件优化等级+概念解析

Keil单片机编程软件中的优化等级是编译器的一个重要功能,它允许开发者根据具体需求调整编译器的优化策略,从而生成更高效、更紧凑的代码。以下是关于Keil单片机编程软件优化等级的概念解析:

一、优化等级概述

Keil C51编译器提供了0到9共10个优化等级,高优化级别中包含了前面所有的优化级别。每个优化等级都针对代码的不同方面进行优化,以提高程序的执行效率、减小代码大小或改善其他性能指标。

二、各优化等级详解

  1. 0级优化(无优化)

    • 常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,包括运行地址的计算。

    • 简单访问优化:对8051系统的内部数据和位地址进行访问优化。

    • 跳转优化:编译器总是将跳转延至最终目标上,因此跳转到跳转之间的命令被删除。

  2. 1级优化

    • 死码消除:无用的代码段被消除。

    • 跳转否决:根据一个测试回溯,条件跳转被仔细检查,以决定是否能够简化或删除。

  3. 2级优化

    • 数据覆盖:适于静态覆盖的数据和位段被鉴别并标记出来,连接定位器BL51通过对全局数据流的分析,选择可静态覆盖的段。

  4. 3级优化

    • “窥孔”优化:将冗余的MOV命令去掉,包括不必要的从存储器装入对象及装入常数的操作。如果能节省存储空间或程序执行时间,复杂操作将由简单操作所代替。

  5. 4级优化

    • 寄存器变量:使自动变量和函数参数尽可能位于工作寄存器中,只要有可能,将不为这些变量保留数据存储器空间。

    • 扩展访问优化:来自IDATA、XDATA、PDATA和CODE区域的变量直接包含在操作之中,因此大多数时候没有必要将其装入中间寄存器。

    • 局部公共子式消除:如果表达式中有一个重复执行的计算,第一次计算的结果被保存,后续计算将使用这个结果,从而消除繁杂的计算。

    • CASE/SWITCH语句优化:将CASE/SWITCH语句作为跳转表或跳转串优化。

QQ_1742458060359.png

  1. 5级优化

    • 全局公共子式消除:只要有可能,函数内部相同的子表达式只计算一次,中间结果存入一个寄存器以代替新的计算。

    • 简单循环优化:以常量占据一段内存的循环在运行时被优化。

  2. 6级优化

    • 回路循环:如果程序代码能更快更有效地执行,程序回路将进行循环优化。

  3. 7级优化

    • 扩展入口优化:在适合时对寄存器变量使用DPTR数据指针,指针和数组访问被优化以减小程序代码和提高执行速度。

  4. 8级优化

    • 公共尾部合并:对同一个函数有多处调用时,一些设置代码可被重复使用,从而减小程序代码长度。

  5. 9级优化

    • 公共子程序块:检测重复使用的指令序列,并将它们转换为子程序。C51甚至会重新安排代码以获得更多的重复使用指令序列。

三、优化等级的选择

优化等级的选择应根据具体的应用场景和需求来决定。一般来说,较高的优化等级可以生成更高效的代码,但也可能增加编译的复杂性和调试的难度。在开发阶段,为了便于调试和理解程序行为,可以选择较低的优化等级。而在产品发布前,为了最大化程序性能,可以选择较高的优化等级。

需要注意的是,优化等级并非越高越好。在某些情况下,过高的优化等级可能导致代码逻辑出错或性能下降。因此,在选择优化等级时,应综合考虑代码的可读性、可维护性以及性能需求。

综上所述,Keil单片机编程软件的优化等级是一个强大的功能,它允许开发者根据具体需求调整编译器的优化策略。通过合理选择优化等级,可以生成更高效、更紧凑的代码,从而提高程序的执行效率和可靠性。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

资讯推荐
云母电容公司_云母电容生产厂商

云母电容公司_云母电容生产厂商

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

开关三极管13007的规格参数、引脚图、开关电源电路图?三极管13007可以用什么型号替代?

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

74ls74中文资料汇总(74ls74引脚图及功能_内部结构及应用电路)

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片lm2596s开关电压调节器的中文资料_引脚图及功能_内部结构及原理图_电路图及封装

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

芯片UA741运算放大器的资料及参数_引脚图及功能_电路原理图?ua741运算放大器的替代型号有哪些?

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

28nm光刻机卡住“02专项”——对于督工部分观点的批判(睡前消息353期)

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告