当前位置: 首页 > news >正文

关于使用宏定义防止编译器编译优化的考虑

#define mb() __asm__ __volatile__ ("" : : : "memory")
这个是告诉编译器内存内容已经改变,需要重新去读取;

因为编译器只是编译出来二进制,但是这些二进制的执行逻辑仍然是编译器制定的
有时候编译器会进行优化,比如while(flag == 0)编译器在从内存中读取一次flag 后发现flag = 0,执行循环;
发现循环没有更改flag ,编译器就觉得可以不用从内存读取flag了,反正没有flag进行改变,于是不再从内存读取flag;
但是可能DMA等中断会修改flag的值;所以是不合理的;就可能陷入死循环;

但是如果代码为 while (flag == 0) mb();编译器就不得不去内存重复读取flag的值;
因为mb()表示内存中的内存已经被修改了;编译器在编译的时候不会省略从内存读取flag的指令;

http://www.jsqmd.com/news/54021/

相关文章:

  • 2025青岛出国留学机构排名榜单
  • 2025留学中介哪个机构好大家有推荐的吗
  • 2025广州知名留学中介有哪些地方
  • 2025北京美国留学机构哪家好
  • 2025 年 11 月市场营销公司权威推荐榜:品牌策划、数字营销、整合推广,专业团队助力企业高效增长与口碑提升
  • 2025年本土管理咨询公司权威推荐榜:十大战略智囊深度解析,专业赋能与实战经验并重的行业标杆精选
  • Web后端数据库
  • iOS搜索派对深度解析:FindMy网络追踪与加密数据库取证
  • 2025 年 11 月战略管理咨询公司权威推荐榜:赋能企业变革与增长,深度解析行业领先者的核心优势与实战价值
  • 2025年内六角螺栓工厂权威推荐榜单:不锈钢内六角螺栓‌/不锈钢螺栓‌/外六角螺栓源头工厂精选
  • 2025厦门的正规留学中介机构在哪里
  • 2025青岛出国留学中介机构有哪些
  • 2025留学中介去哪个
  • 2025广州知名留学中介有哪些公司
  • 2025 年 UV 甲油胶厂家最新推荐榜,技术实力与市场口碑深度解析,助力采购精准决策耐刮 UV 甲油胶/抗污 UV 甲油胶/哑光 UV 甲油胶/水性 UV 甲油胶/UV 甲油胶树脂公司推荐
  • 2025 年 UV 树脂定制厂家最新推荐榜,聚焦企业技术创新能力与市场服务口碑深度解析光固化/油性/3D 打印/甲油胶/三防漆/手感/真空电镀/准分子 UV 树脂公司推荐
  • 2025北京的留学机构有哪些
  • 2025年十大浴袍品牌厂家排行榜,浴袍推荐厂家精选测评
  • 2025 年 11 月企业转型升级服务机构权威推荐榜:战略咨询、数字化赋能与组织变革的卓越服务商深度解析
  • 什么时候用 DeepSeek-V3-0324,什么时候用 DeepSeek-R1?
  • Playwright MCP项目实战:基于提示的浏览器测试与代码生成
  • 零代码玩转AI测试:用字节Coze让测试效率翻倍的实战指南
  • 2025年十大靠谱IT人才外包企业推荐,选择服务好有名的IT
  • 2025 年 11 月全过程咨询公司权威推荐榜:涵盖项目策划、设计管理、造价咨询、工程监理的全周期专业服务优选
  • Hyper-V 自定义内部网络网段和IP地址
  • 2025 年 11 月运营管理咨询公司权威推荐榜:战略优化与效率提升的智慧伙伴,专业服务与实战口碑深度解析
  • 深入解析:Go语言设计模式:建造者模式详解
  • 2025年市面上有名的ISO认证公司哪家强,ISO27018认证/ISO27040认证/CS认证/CCRC认证申请选哪家
  • ReentrantReadWriteLock 和 ReentrantLock 的联系与区别
  • 2025 年 11 月企业咨询公司权威推荐榜:战略规划、组织优化与数字化转型顶尖服务商深度解析