Keil优化及如何设置某段代码不优化

Keil优化及如何设置某段代码不优化,第1张

Keil默认会对代码进行优化的

一般情况缺省编译优化设置被设定为8级优化,实际最高可设定为9级优化。

1、Dead code elimination

2、Data overlaying

3、Peephole optimization

4、Register variables

5、Common subexpression elimination

6、Loop rotation

7、Extended Index Access Optimizing

8、Reuse Common Entry Code

9、Common Block Subroutines

如何设定不优化或改变某个文件的优化设置

1、针对某个文件

(1) 右键->Option for File XXXX

(2) 切换到【C51】选项卡

default表示与工程设置一致

2、针对某段迅帆代码(局部优化)

#pragma OPTIMIZE(x) x就是你希望的优化级别

举例如下:

#pragma OPTIMIZE(6)

void FunA()

{

}

......

......

#pragma OPTIMIZE(9)

void FunB()

{

}

上面的老昌念意思就是说,在void FunA()到void FunB()之前的所有函数,包括FunA在内,都采用6级的优化,而从侍困FunB开始直到之后,只要没碰上#pragma OPTIMIZE,都采用9级优化了。

OPTIMIZE还可以多一个参数,就是speed和size,

用法: #pragma OPTIMIZE(9,speed)或#pragma OPTIMIZE(5,size)

对应的就是9级优化,以速度为主,或5级优化,以空间最小为主。

有可能。优化级别越高,出问题的可能性越大。

Keil并不完美,有些优化方式存在bug;另外有些优化也并不是编程者所饥并梁需的目的,蔽碰会导致程序流程与编程预期不符。

一烂运般7级左右就够了。

一般用优化等级8,其它的别用,容易液渗早出事。

编译完之后多留意data,xdata,看有没超出芯片的最大值,

特别是data,不能超过128,甚闹雀至太接近128有时喊瞎也会出问题。

如果data 需要使用到256,则另外的128用idata定义


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12383397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存