ARM上的C编程
来源:互联网 发布:算法竞赛入门经典 编辑:程序博客网 时间:2024/05/16 07:22
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条指令
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条指令
- ARM上的C编程
- 关于ARM上编程的
- 在ARM平台上的C使用#pragma arm section
- 基于ARM的高效C语言编程
- 基于ARM的高效C语言编程
- ARM C编程
- 学习 ARM 系列 -- FS2410 开发板上的中断编程
- 写出优化的ARM架构上的C代码
- 基于ARM的C语言与汇编语言混合编程
- ARM C嵌入式编程中一些常见的标识符
- arm 下C编程的非对齐访问
- ARM汇编语言与C/C++的混合编程
- ARM Bootloader 的实现-------C 和ASM 混合编程
- arm上的current
- ARM下高效C编程
- arm C、汇编混合编程
- ARM下高效C编程
- ARM与C混合编程
- ASP2.0-轻松实现数据库应用开发
- ant使用笔记(1):安装
- Robocopy和XXCOPY两大超强备份工具使用详解
- jsp中文显示乱码解决方案
- ARM上的汇编优化小方法
- ARM上的C编程
- ARM汇编优化
- deblock 未曾想到的痛苦
- 如何保证睡眠质量
- C#的6种常用集合类大比拼
- GTK+的线程安全问题
- GCT考试英语试题结构介绍
- GCT英语阅读理解常见问题分析
- J2EE概况与简介