2023.7电脑编程技巧与维护1概述嵌入式系统具有体积小、成本低、运行稳定的特点,这些特点要求低功耗、快相应和系统稳定。因此嵌入式系统会采用小内存和可裁剪定制的系统,对开发者及其对时间和空间的把控能力发起了巨大的挑战。编译器性能优化能帮助嵌入式开发者减小代码量,同时提升程序执行效率,更好地满足嵌入式应用的性能要求[1]。无论是在企业应用中还是在学生学习过程中,优化等级一般设为2[2],这时程序代码量会大幅缩小,运行效率明显提升。但是当优化等级为2时,程序在运行时会出现一些问题。因此调整或者切换开发工具时,应时刻注意优化等级是否有变化,及时察觉并解决优化等级不同导致的问题。编译优化一般通过配置编译器优化等级来实现,此部分的知识比较抽象,学生难以理解,解决由此引起的问题更是无从着手。关于编译器优化造成的影响,没有现存可用的专门实验来展示,无论是学生还是在职工程师,都无法预先学习。因此,采用宏定义实现位带操作,设计此项操作展示优化等级改变所造成的影响的实验,引发学生对于优化等级改变所造成的问题的关注和思考。2编译器优化[3]编译器优化算法主要分为与机器有关的优化和与机器无关的优化两类。其中,用机器中执行更快、功能更强的指令替换原有指令的算法叫做与机器有关的优化[4]。调整代码结构的程序和元素,减少程序的执行时间和内存需求的优化技术叫做与机器无关的优化[5]。实验中主要来用与机器无关的优化算法,算法如下。2.1代数优化算法表达式替换、赋值传递、死变量删除、公用子表达式约减都属于代数优化算法[6]。2.2常量优化算法(1)常量合并算法。用常量运算结果替代程序中不必要的常量运算称为常量合并算法。常量合并算法常用于处理数组下标的优化和预处理常量的类型变化等[7]。常量合并算法如表1所示。(2)常量传递算法。用常量初值替代在整个变量生命周期中不修改值的变量。一般情况下,在常量传递优化后还可以进行常量合并[8]。常量传递算法如表2所示。2.3循环优化算法循环优化算法包括不变表达式外提、循环强度削减、循环变量约减、循环扩展、循环合并、循环嵌套次序调整[9]。2.4尾优化算法尾优化算法包括尾合并、尾循环[10]。此验证实验采用位带操作,实现STM32的GPIO读写操作,其中用到了常量优化的常量合并算法和常量传递优化算法,造成了程序优化后的错误问题。对程序中的循环结构及其他部分采用了循环优化等算法,从而使编译优化等级改变造成的系统问题的实验探究李佳佳...