宁静以致远
zgf的blog
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿(15)

随笔分类

随笔档案

文章档案

友情链接

资料收藏

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-29 文章-8 评论-93 Trackbacks-0
1.arm c编译器默认char类型是8位无符号的,与其它编译器有点不同
2.局部变量最好用int型,因为寄存器是32位的,如果变量不是32位的就需要额外的指令限制范围.
  例如: 变量i,操作i++ ,如果int i, 则只需add r1,r1,#1  如果char i,则变成add r1,r1,#1 
and r1,r1, 0xff  .多了一条指令

3.循环最好用do{}while()型的,相比for(;;)型循环每次循环可以节省3条指令

4.函数参数也最好用int 型的,例如 short add(short x,short y)
      编译器为了保证输入参数的是short型的会添加额外的指令,比如确保x是short型的,需要
      mov r0,r0,lsr #16    mov r0,r0,asr #16

5.函数参数最好不要超过4个,因为前4个参数是通过寄存器r0-r3传递的,超过4个后的参数使用堆栈传递,速度慢多了.

6.适当的展开循环.循环有一定的开销,在一个循环中多做几遍操作,减少循环的次数可以减少循环的开销.
 例如:  i = 0;         int i;
               do                                        do{
              {                                             i++;
                 i++;                                     i++;
              }while(i<64)   改为             i++;}while(i<64)
    当然,这样做也增加了代码长度.

7.使用减计数到0的循环结构,这样就不用用寄存器保存终止值.

8.使用无符号的循环计数值,循环条件是i!=0,而不是i>0, 这样循环的开销只有2条指令
posted on 2006-12-27 00:27 zgf的blog 阅读(3187) 评论(4)  编辑 收藏
Comments
  • # re: ARM上的C编程
    玻璃小屋
    Posted @ 2006-12-27 09:15

    问题!!! ARM系统上的系统是存在什么地方的???可以自己修改后,然后再更新不????
  • # re: ARM上的C编程
    周星星
    Posted @ 2006-12-27 09:17
    up,除了3取决于编译器的优化外,其他条款适合所有编译器,而不仅仅是arm c
  • # re: 玻璃小屋
    zgf
    Posted @ 2006-12-29 09:20
    arm cpu和普通cpu差不多,有mmu的可以装WinCE和linux系统,wince系统源码大部分公开,可以自己修改。我的摩托E2手机就是用的Intel 的arm cpu, 跑的是linux系统,还可以在PC上用telnet登陆到手机呢 :)
  • # re: ARM上的C编程
    疯猫
    Posted @ 2006-12-29 19:46
    精辟!
    以上条款  ARM C++ 编程也适用的
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]