自1977年以来,我一直在使用嵌入式固件,但我从未在我使用的任何编译器上启用优化。
我正在使用GCC ARM编译器来处理CM4 micro。
代码按预期运行,没有优化。
我在代码中使用了很多结构和指针。
当变量可以在中断例程中更改时,我使用volatile。
我最近需要加快代码的执行速度,所以我使用了优化级别-Og(第一次启用优化) - 这仍然可以提供良好的调试并提高性能。
我的问题/关注是代码表现得非常糟糕!!!
它表现良好 - 然后我做了一个小改动 - 它的行为错误 - 每次运行编译器时都会改变 - 几乎就像地址对齐或指令被完全删除一样。
我可以将一些变量更改为volatile,这也会改变行为,但我不明白为什么会影响全局变量(在中断例程中未修改)会如何对行为产生积极的变化。
我准备放弃全面优化并考虑使用功能特定的优化,因为我知道哪些功能会影响我尝试改进的性能。
任何人都可以解释编码风格如何受到优化的负面影响吗?
任何考虑到优化的编码风格的好文档?
GCC功能级优化是否运作良好?
感谢。
乔