volatile关键字对编译器优化的影响

strongerHuang 2019-07-04 22:16

关注、星标公众,不错过精彩内容


初学的朋友可能不怎么关心优化选项,但对于经验丰富的工程师来说,掌握代码优化是必备技能。


今天讲述的话题就是关于代码优化中,关键字volatile在优化过程中起到的作用


一、关于volatile

volatile是一个类型修饰符(type specifier)。 


volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。


volatile变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。


---来自百度百科


volatile的定义,应该在读书时都看过无数遍。但我相信绝大部分人都没有深刻理解其中含义


但当你真正编程,开发项目之后,你就会进一步理解其中含义。



二、volatile关键字对编译器优化的影响

我们都知道编译器有优化代码的功能,我们常用的集成开发环境(Keil、 IAR)都有优化选项。


如果不使用关键字volatile申明变量,则编译器可能会对变量的访问并生成非预期的代码或删除预期的功能。


1.何时使用volatile?

常见使用volatile声明的情况:

  • 访问内存映射外设。

  • 在多个线程之间共享全局变量。

  • 在中断例程或信号处理程序中访问全局变量。


比如,在STM32代码中:

#define     __O     volatile             /*!< Defines 'write only' permissions */#define     __IO    volatile             /*!< Defines 'read / write' permissions */

浏览代码,你会发现,很多地方都使用了“__IO”,也就是volatile.


在跑系统的项目中,线程间共享的全局变量,建议都加上volatile关键字,这一点,很多人没有在意。


2.不使用volatile时可能出现的问题

如果未将变量用volatile声明,则编译器会假定其值不能在其定义的范围之外进行修改。


因此,编译器可能会执行不需要的优化。这可以通过多种方式表现出来:

  • 在轮询硬件时,代码可能会陷入循环。

  • 多线程代码可能会表现出奇怪的行为。

  • 优化可能会导致删除实现故意时序延迟的代码。


举例:

自己写一个延时函数:

void Delay(int Cnt){  int i;
while(Cnt--) { i++; for(i=0; i<10; i++); }}


你在不同优化等级情况下,延时时间可能会不一样


同样的代码,你在Keil 和 IAR环境下编译出来的延时时间也可能不一样。


当然,更深入的理解就会牵涉到汇编代码,编译之后的汇编代码会比较直观的呈现差异。


推荐阅读:

1.如何将变量存储在指定内存地址(基于Keil MDK-ARM)

2.ARM针对Cortex-M处理器推出一套安全系统:Arm FuSa RTS


我的知乎:strongerHuang

我的网站:www.strongerhuang.com


关注公众号『strongerHuang』,在底部菜单中查看更多精彩内容!


长按识别图中二维码关注

strongerHuang 作者黄工,高级嵌入式软件工程师,分享嵌入式软硬件、物联网、单片机、开发工具、电子等内容。
评论 (0)
  •   网络链路攻防战术对抗仿真系统软件深度剖析   一、系统概览   北京华盛恒辉网络链路攻防战术对抗仿真系统软件,是专为网络安全领域攻防对抗需求打造的高仿真平台。它模拟真实网络环境中的攻、防行为,为安全研究人员以及红队、蓝队提供实战训练和策略验证工具。该系统以动态仿真技术为核心,融合人工智能与大数据分析,实现攻防战术的自动推演与可视化展示 。   应用案例   目前,已有多个网络链路攻防战术对抗仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润网络链路攻防战术对抗仿
    华盛恒辉l58ll334744 2025-04-16 14:42 94浏览
  • 三、芯片的制造1、制造核心流程 (1)晶圆制备:以高纯度硅为基底,通过拉晶、切片、抛光制成晶圆。 (2)光刻:光刻、离子注入、薄膜沉积、化学机械抛光。 (3)刻蚀与沉积:使用干法刻蚀(等离子体)精准切割图形,避免侧壁损伤。 (4)掺杂:注入离子形成PN结特性,实现晶体管开关功能。2、材料与工艺创新 (1)新材料应用: 高迁移率材料(FinFET中的应变硅、GaN在射频芯片中的应用); 新型封装技术(3D IC、TSV硅通孔)提升集成度。 (2)工艺创新: 制程从7nm到3nm,设计架构由F
    碧海长空 2025-04-15 11:33 287浏览
  • 一、引言:健康管理数字化浪潮下的血压监测转型在慢性病高发与老龄化加剧的双重压力下,家庭健康监测设备正从“被动测量工具”向“主动健康管家”演进。传统血压计虽能提供基础数值,却无法解决用户的核心痛点:数据如何解读?异常如何干预?风险如何预防?WT2605C芯片方案的诞生,通过“AI对话+云端互联+个性化服务”三重技术突破,重新定义了血压计的价值边界——它不仅是一台测量仪器,更是一个全天候在线的健康管理生态系统。二、传统血压计的局限与用户需求升级1. 功能单一性困境数据孤岛:仅显示收缩压/舒张压数值,
    广州唯创电子 2025-04-16 08:55 143浏览
  • 一、引言:智能化趋势下的学爬玩具开发挑战随着早教理念的普及,学爬玩具作为婴幼儿早期运动能力开发的重要工具,市场需求持续增长。然而,传统学爬玩具开发面临多重挑战:需集成红外遥控、语音交互、电机控制等多模块,开发周期长、硬件成本高;复杂的红外编解码与语音功能实现依赖工程师深度参与,技术门槛陡增。如何以更低成本、更快速度打造差异化产品,成为行业亟待解决的痛点。二、传统开发模式痛点分析硬件冗余红外接收模块、语音芯片、主控MCU分立设计,导致PCB面积增加,BOM成本攀升。开发周期长需工程师独立完成红外协
    广州唯创电子 2025-04-16 08:40 151浏览
  • 瑞芯微电子(Rockchip)是国内领先的AIoT SoC设计制造企业,专注于智能应用处理器及周边配套芯片的研发。飞凌嵌入式作为瑞芯微的战略合作伙伴,已基于瑞芯微RK3399、RK3568、RK3588、RK3576、RK3562和RK3506系列处理器推出了多款嵌入式主控产品,包括核心板、开发板和工控机,这些产品已成功帮助数千家企业客户完成了项目的快速开发和落地。本文将系统地梳理飞凌嵌入式RK平台主控产品在开发过程中常用的命令,助力更多开发者快速掌握RK系列芯片的开发方法。01、查看CPU温度
    飞凌嵌入式 2025-04-16 15:50 168浏览
  • 多极电磁铁的核心应用领域一、工业制造领域1.‌磁性材料处理‌:用于多极磁环充磁,通过四极、六极或八极磁场设计,使磁环获得均匀或梯度分布的磁性能,提升电机、传感器等设备的效率‌。在电子束焊接中控制电子束的聚焦和偏转,增强焊接精度(如精密电子元件加工)‌。2.‌机械控制与自动化‌应用于旋转磁场导向系统,优化工业机器人、自动化产线中磁性物料的传输路径。配合电磁吸盘用于起重设备,实现对金属部件的快速吸附与释放,提高搬运效率。二、科研实验领域1.‌物理与材料研究‌在实验室中生成径向梯度磁场或均匀磁场,用于
    锦正茂科技 2025-04-16 09:39 80浏览
  •   水下装备体系论证系统软件全面解析   一、系统概述   水下装备体系论证系统软件是针对水下作战、资源勘探、海洋工程等需求,专门设计的信息化论证工具。该系统通过集成建模、仿真、优化等技术,对水下装备体系的使命任务、环境适应性、技术参数、作战效能等进行全流程分析,为装备体系设计、方案权衡和决策提供科学依据。   应用案例   目前,已有多个水下装备体系论证系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润水下装备体系论证系统。这些成功案例为水下装备体系论证系统的推广和应用提
    华盛恒辉l58ll334744 2025-04-16 17:03 147浏览
  • 4月15日,京东全球购迎来十周年生日。为了回馈广大用户十年来的支持与信赖,早在4月初,京东全球购就已率先开启十周年庆典活动,为消费者带来了一场消费盛宴。来自全球各地的进口好物,以全场进口大牌1元抢、爆品低至5折、跨店每满200减30的优惠价格被呈现在消费者面前。同时,在迎来十周年庆典之际,京东全球购还宣布,未来一年,将投入亿级资源,升级四大商家扶持举措,包括提供仓配和流量等多项补贴,推出扶持新品、新商家等举措,助力更多进口商家降本提效,在京东获得可持续、高质量成长。十年如一日 打造跨境购物首选平
    华尔街科技眼 2025-04-16 16:18 116浏览
  • 2025年4月13日(中国武汉)——在全球经济分化与地缘政治不确定性加剧的背景下,科技与金融的深度融合已成为推动创新与繁荣的关键动力。为实现科技创新、产业进步和金融发展有机结合,发挥金融对科技创新和产业进步的支持作用,国际金融论坛(IFF)科技金融委员会启动大会暨首届科技金融圆桌会议于4月13日在湖北省武汉市武汉产业创新发展研究院成功举行。同时,IFF科技金融委员会由国际金融论坛IFF与武创院联合成立。本次大会汇聚了来自政府、产业与学术研究机构及金融等多领域的精英,共同探讨科技金融如何更好地服务
    华尔街科技眼 2025-04-15 20:53 103浏览
  • 在这个AI技术日新月异的时代,人工智能(AI)已经逐渐渗透到我们生活的方方面面,从工作到学习,从娱乐到医疗,AI都在以其独特的方式改变着我们的世界。作为一名计算机专业的大学老师,我近期有幸阅读了《AI帮你赢:人人都能用的AI方法论》一书,深感这本书不仅为专业人士提供了宝贵的AI使用技巧,更为广大学生打开了一扇通往AI世界的大门。 《AI帮你赢》一书于2024年12月正式出版,也是紧跟时代发展的一本书,最新的日期。这本书以通俗易懂的语言,系统地阐述了人工智能的核心理念、应用场景及实践方法
    curton 2025-04-16 21:47 93浏览
  • 四、芯片封测技术及应用场景1、封装技术的发展历程 (1)DIP封装:早期分立元件封装,体积大、引脚少; (2)QFP封装:引脚密度提升,适用于早期集成电路。 (3)BGA封装:高密度互连,散热与信号传输优化; (4)3D封装:通过TSV(硅通孔)实现垂直堆叠,提升集成度(如HBM内存堆叠); (5)Chiplet封装:异质集成,将不同工艺节点的模块组合(如AMD的Zen3+架构)。 (6)SiP封装:集成多种功能芯片(如iPhone的A系列SoC整合CPU、GPU、射频模块)。2、芯片测试 (1
    碧海长空 2025-04-15 11:45 330浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦