嵌入式编程中经常用到 volatile这个关键字,在网上查了下他的用法可以归结为以下两点:
一:告诉compiler不能做任何优化
比如要往某一地址送两指令:
int *ip =...; //设备地址
*ip = 1; //第一个指令
*ip = 2; //第二个指令
以上程序compiler可能做优化而成:
int *ip = ...;
*ip = 2;
结果第一个指令丢失。如果用volatile, compiler就不允许做任何的优化,从而保证程序的原意:
volatile int *ip = ...;
*ip = 1;
*ip = 2;
即使你要compiler做优化,它也不会把两次付值语句间化为一。它只能做其它的优化。这对device driver程序员很有用。
二:表示用volatile定义的变量会在程序外被改变,每次都必须从内存中读取,而不能把他放在cache或寄存器中重复使用。
如 volatile char a;
a=0;
while(!a){
//do some things;
}
doother();
如果没有 volatile doother()不会被执行
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
英伟达介绍了支持AI GPU位置追踪的新软件——远程数据中心GPU集群管理包括功耗和热监测
特朗普批准中国的H200销售;据报道,美国路由引发25%收入分成争议
嵌入式相关文章(ebook格式)
[求助]RTL8100网卡问题
555电饭煲自动控制器电路
嵌入式Linux方案概览 上
专业PCBA制作(包括BGA装卸)
555声控照明电子挂钟电路
555男、女声音电子迎客器电路
驱动程序超级宝典
急寻PCB制造商
嵌入式实时操作系统教程
据报道,美光退出为华为瞄准韩国消费级SSD市场打开了大门
嵌入式Linux方案概览 中
【菜鸟求助】Vxworks下如何使用tftpLib.h,tftpdLib.h?
555挥手停闹的电子钟电路
温度对MLCC的影响有哪些?
模拟电路基础教程(书)
台积电2H26扩大释出CoW订单 封测厂「类CoWoS」技术崛起
电机控制变得简单
中国GPU首次公开募股浪潮加剧:MetaX超越摩尔线索,吸引散户投资者兴趣
嵌入式Linux方案概览 下
除了英伟达和台积电,其他人都必须靠人工智能来弥补数量
人月神话中文版
嵌入式Linux在消费电子领域的发展与应用 上
三星CEO据报道将就紧张的移动DRAM供应问题,罕见的参加CES会议
嵌入式Linux在消费电子领域的发展与应用 下
53年后,惠普于1972年推出的总线标准获得了稳定的Linux驱动——通用接口总线拥有惊人的8 MB/s带宽
555婴儿摇床自动晃动电路
ARM上软件开发需要了解哪些知识?