现代C编译器的优化能力非常出色,但是有些硬件相关的操作并不希望被优化,volatile可以解决部分问题,但是,它不能防止编译器调整代码执行顺序,有什么办法可以让编译器不优化硬件相关的函数,而其他函数被优化?
共3条
1/1 1 跳转至页

通常对于驱动类的程序,考虑在编译规则这一层就禁用其优化.对于延时函数,频繁使用的硬件操作系统调用,通常讲其硬件访问的程序部分独立开来,单独实现,且推荐用汇编语言函数实现(例如x86的IO操作函数),因为它精确,精简.可以看看Linux\VxWorks等操作系统的源码的编译规则文件,驱动部分的优化级别\警告级别等参数与普通应用程序是不同的.
在一个源文件里面使用多种优化规则的情况不为多见,有些编码规则也不推荐这样用.
如果实在要用,可以在源码中用 #progma等编译控制选项来指定,但这样做是与编译器紧密相关的,不利于可移值性.
仅供参考啊
共3条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
C语言函数宏的三种封装方式被打赏50分 | |
【STM32F769】记一次由于开启D-Cache之后DMA数据传输出错的问题查找与解决被打赏35分 | |
嵌入式LinuxC语言程序调试和宏使用技巧被打赏50分 | |
让代码中包含最新的编译时间信息被打赏50分 | |
【分享开发笔记,赚取电动螺丝刀】STM32F769LVGL优化显示被打赏26分 | |
rtthread硬件加密--2crc加密分析被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】STM32F769驱动ST7789以及显示优化被打赏36分 | |
【分享开发笔记,赚取电动螺丝刀】S32K146 PAL模拟I2C驱动适配被打赏23分 | |
我想要一部加热台+电源硬件设计规范被打赏16分 | |
我想要一部加热台+LED背光驱动芯片RT9293知识被打赏18分 |