编译优化等级改变造成的系统问题的实验探究_李佳佳.pdf
《编译优化等级改变造成的系统问题的实验探究_李佳佳.pdf》由会员分享,可在线阅读,更多相关《编译优化等级改变造成的系统问题的实验探究_李佳佳.pdf(4页珍藏版)》请在咨信网上搜索。
1、2023.7电脑编程技巧与维护1概述嵌入式系统具有体积小、成本低、运行稳定的特点,这些特点要求低功耗、快相应和系统稳定。因此嵌入式系统会采用小内存和可裁剪定制的系统,对开发者及其对时间和空间的把控能力发起了巨大的挑战。编译器性能优化能帮助嵌入式开发者减小代码量,同时提升程序执行效率,更好地满足嵌入式应用的性能要求1。无论是在企业应用中还是在学生学习过程中,优化等级一般设为22,这时程序代码量会大幅缩小,运行效率明显提升。但是当优化等级为2时,程序在运行时会出现一些问题。因此调整或者切换开发工具时,应时刻注意优化等级是否有变化,及时察觉并解决优化等级不同导致的问题。编译优化一般通过配置编译器优化
2、等级来实现,此部分的知识比较抽象,学生难以理解,解决由此引起的问题更是无从着手。关于编译器优化造成的影响,没有现存可用的专门实验来展示,无论是学生还是在职工程师,都无法预先学习。因此,采用宏定义实现位带操作,设计此项操作展示优化等级改变所造成的影响的实验,引发学生对于优化等级改变所造成的问题的关注和思考。2编译器优化3编译器优化算法主要分为与机器有关的优化和与机器无关的优化两类。其中,用机器中执行更快、功能更强的指令替换原有指令的算法叫做与机器有关的优化4。调整代码结构的程序和元素,减少程序的执行时间和内存需求的优化技术叫做与机器无关的优化5。实验中主要来用与机器无关的优化算法,算法如下。2.
3、1代数优化算法表达式替换、赋值传递、死变量删除、公用子表达式约减都属于代数优化算法6。2.2常量优化算法(1)常量合并算法。用常量运算结果替代程序中不必要的常量运算称为常量合并算法。常量合并算法常用于处理数组下标的优化和预处理常量的类型变化等7。常量合并算法如表1所示。(2)常量传递算法。用常量初值替代在整个变量生命周期中不修改值的变量。一般情况下,在常量传递优化后还可以进行常量合并8。常量传递算法如表2所示。2.3循环优化算法循环优化算法包括不变表达式外提、循环强度削减、循环变量约减、循环扩展、循环合并、循环嵌套次序调整9。2.4尾优化算法尾优化算法包括尾合并、尾循环10。此验证实验采用位带
4、操作,实现STM32的GPIO读写操作,其中用到了常量优化的常量合并算法和常量传递优化算法,造成了程序优化后的错误问题。对程序中的循环结构及其他部分采用了循环优化等算法,从而使编译优化等级改变造成的系统问题的实验探究李佳佳,林喜文,张淑桐,范成名(青岛工程职业学院,山东 青岛266112)摘要:在嵌入式系统开发中,正确应用编译器优化等级提升嵌入式程序执行效率,同时缩小代码量,是嵌入式工程师的一项关键技能。为了在教学中讲解清楚优化等级带来的影响,引起学生对于此类问题的关注,设计了一项基于 STM32 芯片硬件环境和 MDK(Keil)软件环境的可观察的验证性实验。该实验根据嵌入式位带操作所控制的
5、跑马灯程序在编译器 2 优化等级下引起的系统错误,展示较高等级代码优化造成的问题;采用易变型变量(volatile)关键字配合位带操作,解决较高优化等级代码的优化问题,为学生提供了查找、解决此类问题的有效方法。关键词:嵌入式;优化等级;易变型变量;STM32 芯片;位带操作源代码常量合并后#define MAXPACKETS 30#define PACKETSIZE 1024long maxstreamsize=(long)(MAXPACKETS*PACK-ETSIZE);float f=3.1+3.4;long maxstreamsize=30720L;float f=6.5;表1常量合并算
6、法源代码经常量传递变形继续进行常量合并int x,y;int x,y;x=3;int x,y;x=3;x=3;y=x+5;y=3+5;y=8;表2常量传递算法48DOI:10.16184/prg.2023.07.0222023.7电脑编程技巧与维护整体的代码量大幅缩减,同时提升了程序的执行效率。3GCC 编译优化等级GCC编译器的优化级别11如表3所示。根据编译器优化等级的操作及说明,选用编译器优化等级0和优化等级2做对比实验,探究编译器无优化和最常用优化等级2之间的区别,观测优化后程序大小,运行效率的变化,同时展示优化等级改变后引发的问题,并提供一种解决方法。4验证实验4.1实验硬件电路实验
7、采用硬件资源有STM32F103核心板一块,有按键1个、LED小灯8个。电路设计实验硬件。将LED小灯阴极接到STM32F103芯片的PB0-PB7引脚,将阳极经过一个100 限流电阻连接到5 V电源。一个按键KEY1一端接PA0,同时通过10 k电阻连接到5 V电源;另一端接地。实验硬件电路如图1所示。通过按键控制跑马灯程序的启动与停止。4.2实验软件代码设计根据实验硬件电路图,将LED灯阴极接到PB0-PB7,PB0-PB7并设置为输出模式。因此PB0-PB7输出低电平(0)时,控制相应LED小灯点亮;PB0-PB7输出高电平(1)时,控制相应LED小灯熄灭。根据实验硬件电路图,按下KEY
8、1按键时,会产生低电平,抬起按键时,会产生高电平。PA0设置为输入模式,以获取按键的状态。KEY1按下时,跑马灯停止运行,所有LED小灯全部熄灭;KEY1抬起时,跑马灯启动。代码中按键的状态和小灯的控制,都是通过STM32的GPIO口操作进行。此处的GPIO操作经过位带操作来实现,以便提高代码的运行效率。程序的流程如图2所示。4.3实验过程(1)按照硬件电路图与控制逻辑,实现按键控制跑马灯的代码。注意GPIO控制采用位带操作来实现,并且位带操作不应用volatile关键字。代码如下。/用位带操作,内存映射,实现GPIO简化操作#define BITBAND(address,bit)(addre
9、ss&0 xF0000000)+0 x2000000+(address&0 xFFFFF)5)+(bit2)#define MEM_ADDR(address)*(unsigned long*)(address)#define BIT_ADDR(address,bit)MEM_ADDR(BITBAND(address,bit)/GPIO端口内存地址映射#define GPIOA_IDR_Addr(GPIOA_BASE+0 x08)/对IO口某一位操作,注意GPIOx端口仅16位,n的编号为0-15!#define PAin(n)BIT_ADDR(GPIOA_IDR_Addr,n)/PAx输入/跑
10、马灯程序的一次循环,从全部熄灭到全部点亮,/然后从全部点亮到全部熄灭的代码。优化级别说明备注-O0关闭所有优化代码空间大,执行效率低-O1基本优化等级编译器在不花费太多编译时间的基础上,试图生成更快、更小的代码-O2O1的升级版,推荐的优化级别编译器试图提高代码性能,而不会增大程序体积和占用太多编译时间-O3最危险的优化等级会延长代码编译时间,生成更大体积、更耗内存的二进制文件,大大增加编译失败的几率和不可预知的程序行为,得不偿失表3GCC编译器的优化级别图1实验硬件电路图2程序流程开始GPIOx端口初始化否按键是否按下?是延时1 s执行跑马灯程序492023.7电脑编程技巧与维护Void p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 优化 等级 改变 造成 系统 问题 实验 探究 李佳佳
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。