在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1633|回复: 2

[资料] 嵌入式C语言程序设计技巧-------循环条件

[复制链接]
发表于 2016-3-3 15:06:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

计数循环是程序中十分常用的流程控制结构。在C与验证宏,常用下面累加计数的循环形式:

for(loop=1,loop<=limit;loop++)

而这种累加计数的方法符合一般的自然思维习惯,所以下面这种递减方法很少使用:

for(loop=limit;loop!=0;loop--)

这两种循环形式在逻辑上并没有效率差异,但是映射到具体的体系结构中时,就产生了大大是不同,如图所示。

int fact1 (int limit)                             int fact1 (intlimit)  

{                                                                           {

...                                                                          …

for (i=1;i<=limit;i++)                                              for(i=limit;i!=0;i--)

(                                                                            {

       fact=fact*i;                                                             fact=fact*i;

)                                                                                   }

...                                                                                 …

}                                                                           }


Fact1                                                                     Fact2

... ...                                                                             ……

0x000010: MUL R2,R1,R2                                       0x000010:MUL R0,R1,R0

0x000014: ADD R1,R1,#1                                       0x000014:SUBS R1,R1,#1

0x000018: CMP R2,R0                                            0x00001C: BNE 0x10

0x00001C:BLE 0x10                                              ……

... ...

0x000024: MOV PC,LR

从图中可以发现,累加法比递减法多用了1条指令,当循环次数比较大时,这2段代码就会在性能上产生明显的差异。其本质原因是:当进行一个非0常数比较时,必须用专门的CMP指令进行判别。因此,在ARM的体系结构下编程,建议采用递减至0的方法来设置循环条件。

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

发表于 2016-4-5 16:21:07 | 显示全部楼层
学习一下,谢谢分享!!
发表于 2016-4-6 21:39:20 | 显示全部楼层
回复 1# 凌阳教育


   谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 01:50 , Processed in 0.015481 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表