高效的C编程之:除法运算

时间:2013-09-30来源:网络

14.2.3求余运算

为了避免在程序中使用除法运算,可以将一些典型的求余运算进行转换。下面的例子提供一种转换方法。

uintcounter1(uintcount)

{return(++count%60);

}

转换成,

uintcounter2(uintcount)

{if(++count>=60)

count=0;

return(count);

}

下面是两个功能函数编译后的汇编代码。

counter1

STMDBsp!,{lr}

ADDa2,a1,#1

MOVa1,#3c

BL__rt_udiv

MOVa1,a2

LDMIAsp!,{pc}

counter2

ADDa1,a1,#1

CMPa1,#3c

MOVCSa1,#0

MOVpc,lr

上面的例子清晰的显示了使用if语句代替除法运算后,代码的执行效率有很大提高。

14.2.4除数是常数的除法

因为除法和模运算执行起来比较慢,所以应该尽可能地避免使用。但是除数是常数的除法运算和用同一个除数的重复除法,执行效率会比较高。在ARM的除法库中,存在除数为10的除法运算库,其中包括有符号除法和无符号除法。如果除数是10以外的其他常数,用户可以编写自己的功能函数。ARM的开发工具集中,提供了关于除数是常数的示例程序和算法分析,以供用户编写自己的代码时参考。

1 2

关键词: C编程 除法运算 ARM _rt_sdiv 合并除法 求余运算

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版