keil优化级别不同,居然会差那么大?

2019-07-20 23:40发布

昨天搞了个程序,使用优化level 3,结果编译出来在主界面上正常,进入另一个函数界面后居然会出现意想不到的效果,本来正常的刷屏变成了闪烁的,有时直接死掉,因为程序是FM的界面,连FM也会卡卡声,开始还以为是硬件问题,FM输出音频带不动。后来放着,又搞了一个界面,这个界面也不正常了,出现了同样问题,然后fm那个界面又正常了,无语中。。。。。。然后重新选了下优化级别,结果都正常了,,,晕死,,有没有同样问题的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
ssssssssssss
2019-07-22 13:21
jermy_z 发表于 2018-7-12 09:59
不优化

我在网上找资料看到如下,平常的话我们默认应该是0,如果选择1的话消除死码的话,应该不会出问题吧?


0级优化:
1、 常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算。
2、 简单访问优化:对8051系统的内部数据和位地址进行访问优化。
3、 跳转优化:编译器总是将跳转延至最终目标上,因此跳转到跳转之间的命令被删除。
1级优化:
1、 死码消除:无用的代码段被消除。
2、 跳转否决:根据一个测试回溯,条件跳转被仔细检查,以决定是否能够简化或删除。

一周热门 更多>