Chinaunix首页 | 论坛 | 博客
  • 博客访问: 396635
  • 博文数量: 380
  • 博客积分: 75
  • 博客等级: 民兵
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-05 15:35
文章分类

全部博文(380)

文章存档

2014年(1)

2013年(2)

2012年(19)

2011年(358)

我的朋友

分类:

2011-09-05 18:27:30

原文地址:ARM编程技巧之--循环 作者:chenxibing008

ARM编程技巧之--循环

看3个程序:
int func1(int loop)
{
int i=0;
for(i=0; i
}

int func2(int loop)
{
int i=0;
for(i=loop; i!=0; i--);
}

int func3(int loop)
{
int i=0;
for(i=loop; i>0; i--);
}

再看程序的反汇编:
    func1
        0x00000068:    e3a01000    ....    MOV      r1,#0
        0x0000006c:    e1510000    ..Q.    CMP      r1,r0
        0x00000070:    aa000001    ....    BGE      {pc} + 0xc  ; 0x7c
        0x00000074:    e2811001    ....    ADD      r1,r1,#1
        0x00000078:    eafffffb    ....    B        {pc} - 0xc  ; 0x6c
        0x0000007c:    e1a0f00e    ....    MOV      pc,r14
    func2
        0x00000080:    e3500000    ..P.    CMP      r0,#0
        0x00000084:    0a000001    ....    BEQ      {pc} + 0xc  ; 0x90
        0x00000088:    e2400001    ..@.    SUB      r0,r0,#1
        0x0000008c:    eafffffb    ....    B        {pc} - 0xc  ; 0x80
        0x00000090:    e1a0f00e    ....    MOV      pc,r14
    func3
        0x00000094:    e3500000    ..P.    CMP      r0,#0
        0x00000098:    da000001    ....    BLE      {pc} + 0xc  ; 0xa4
        0x0000009c:    e2400001    ..@.    SUB      r0,r0,#1
        0x000000a0:    eafffffb    ....    B        {pc} - 0xc  ; 0x94
        0x000000a4:    e1a0f00e    ....    MOV      pc,r14

用加法的代码比用减法的多了一条指令,自然也就多了一条指令的执行时间,特别是在循环内的循环,消耗的时间也是很可观的。

因此在大量循环内部的循环,尽量采用减法方式操作,提高代码效率。






阅读(271) | 评论(0) | 转发(0) |
0

上一篇:sysstat和sar

下一篇:SmartARM3250 CF卡使用说明

给主人留下些什么吧!~~