MCU编程软件非常简单(22),keil MCU编程软件优化级别+概念分析

SCM编程软件是使用SCM必不可少的一部分。

因此,相关人员应该对SCM编程软件有一定的了解。

在先前的文章中,编辑器介绍了许多微控制器编程软件。

本文对MCU编程软件的介绍基于两点:1.对keil MCU编程软件编译环境的优化级别描述,以及2.对keil MCU编程软件中的两个主要概念的分析。

如果您对微控制器编程软件有一定的兴趣,则不妨继续阅读。

1. KEIL编译环境优化级别优化级别描述(仅供参考):Keil软件中的“代码优化”列用于设置C51的优化级别。

有9个优化级别(如本书中所写),高优化级别包括以前所有的优化级别。

每个级别的描述如下:级别0优化:1.常量折叠:只要有可能,编译器就会执行将表达式转换为常量的计算,包括运算地址的计算。

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

3.跳转优化:编译器始终将跳转延迟到最终目标,因此将删除在跳转之间跳转的命令。

级别1优化:1.消除无效代码:消除了无用的代码段。

2.跳转拒绝:根据测试回溯,会仔细检查条件跳转,以确定是否可以简化或删除该跳转。

2级优化:1.数据覆盖率:识别并标记适合静态覆盖率的数据和位段。

连接定位器BL51选择可以通过分析全局数据流静态覆盖的段。

三级优化:1.“窥孔”(Peephole)。

优化:删除冗余的MOV命令,包括从内存加载对象和加载常量的不必要操作。

另外,如果可以节省存储空间或程序执行时间,则复杂的操作将被简单的操作取代。

优化的四个级别:1.寄存器变量:尽可能使自动变量和功能参数位于工作寄存器中。

只要有可能,就不会为这些变量保留任何数据存储空间。

2.扩展的访问优化:来自IDATA,XDATA,PDATA和CODE区域的变量直接包含在操作中,因此大多数时候不需要将它们加载到中间寄存器中。

3.消除局部公共子表达式:如果表达式中有重复的计算,则将保存第一个计算的结果,并尽可能将其用于后续计算,因此可以从中消除复杂的计算代码。

4. CASE / SWITCH语句优化:CASE / SWITCH语句被优化为跳转表或跳转字符串。

级别5优化:1.消除全局通用子表达式:只要有可能,该函数中的同一子表达式只计算一次。

中间结果存储在寄存器中以替换新的计算。

2.简单的循环优化:运行时,对占用内存部分的循环进行常数优化。

6级优化:1.循环循环:如果可以更快,更高效地执行程序代码,则程序循环将循环。

7级优化:1.扩展条目优化:在适当的情况下,将DPTR数据指针用于寄存器变量,对指针和数组访问进行了优化以减少程序代码并提高执行速度。

8级优化:1.通用尾部合并:当多次调用同一个功能时,可以重复使用某些设置代码,从而缩短了程序代码的长度。

9级优化:1.通用子例程块:检测重复使用的指令序列并将其转换为子例程。

C51甚至会重新排列代码以获得更多可重用的指令序列。

当然,更高的优化级别并不是越大越好,应该适当地根据具体要求选择。

2. KEIL软件概念术语分析1. uVisionuVision是由KEIL公司开发的集成开发环境(IDE),类似于Eclipse。

它包括项目管理,源代码编辑,编译和设置uVision设置,下载,调试和仿真等功能。

uVision有四个版本:uVision2,uVision3,uVision4,uVision5,最新版本是uVision5。

它为开发人员提供了一个易于操作的环境,并且不提供特定的编译和下载功能,因此需要软件开发人员添加。

uVisionu通常用于KEIL开发工具,例如MDK,PK51,PK166,DK251等。

2. MDKMDK(微控制器开发套件),也称为MDK-ARM,KEIL