喵喵小星人 发表于 2017-6-25 19:04

ChipON-IDE编译器效率实现说明

一、位取反:

Flagbit0 = ~Flagbit0 ;//效率低
Flagbit0 = ! Flagbit0 ;//效率高
if(Flagbit0 ==0) //效率最高
{ Flagbit0 = 1;}
else
{ Flagbit0 = 0;}

喵喵小星人 发表于 2017-6-25 19:05

二、位判断:
if(DCIN!=1) //效率低
if(DCIN==0) //效率高

喵喵小星人 发表于 2017-6-25 19:06

三、定义
在RAM空间够的情况下,用结构体定义的位变量没有定义成字节型效率高,采用指针表达效率较低,尽量少用

喵喵小星人 发表于 2017-6-25 19:06

四、表达式
if(vot_value<(vot_temp-1)) //效率低
vot_temp=vot_temp-1;
if(vot_value<vot_temp) //效率高
公共表达式 提前获取结果到中间变量中。

喵喵小星人 发表于 2017-6-25 19:07

五、逻辑运算
函数带返回值
dc_value=adc(2)/2; //效率低
dc_value=adc(2);
dc_value=dc_value/2; //效率高

喵喵小星人 发表于 2017-6-25 19:07

六、简单结构体、结构联合体
1、结构体定义不应太复杂,建议简单数据集合,不包含大数组、结构体。
2、位结构体实现程序标记,实现置1、清零操作。
3、结构联合体,整数和字节组合实现AD值的获取。

喵喵小星人 发表于 2017-6-25 19:08

七、嵌汇编实现
__asm
BANKSEL Var_1
MOV R0,#0x32
MOV Var_1,R0
CLR PSW,0
RLRC Var_1 ;;// 偏移量
ADD R0, #(_Arr_Var+0) ;;//操作地址
BANKSEL _Arr_Var
LD R1,
PAGESEL _Fun_A
CALL _Fun_A
PAGESEL $ ;//函数调用
__endasm;

yyj8902 发表于 2017-6-29 16:57

学习了,有时候碰到运到算法的时候,这些细节就管用了。

单片机菜菜 发表于 2017-6-29 18:44

总的来说,总结成一句话就是,不支持堆叠的操作,最好每次尽量少的寄存器参与,减少堆栈的次数吧。
页: [1]
查看完整版本: ChipON-IDE编译器效率实现说明