`

ARM嵌入式C语言设计小技巧

 
阅读更多
1 变量定义
先来看下边的两处变量定义

char a;
short b;
char c;
int d;

char a;
char c;
short b;
int d;
显然两处定义的变量是相同的,不同之处在于定义的顺序。看一下他们分别在数据区的布局
(pad为无意义的填充空间)

a pad b
c pad
d

a c b
d
由上可得出一般意义上的准则:
最好把所有相同类型变量放在一起定义,以便优化存储器布局。
下面说一个例外的情况:
当函数局部变量数目有限时候,编译器会把局部变量分配给内部寄存器,每变量占用一个寄存器。此时使用32位int 或 unsigned int 局部变量最有效率。因为8或15位变量完成加法后还要在32位寄存器里面完成符号扩展。
还有就是冗余变量的使用,一般我们总是避免类似情况的使用。但是也有例外:
int f(void);
int g(void);
int errs;

void test1(void)
{
errs += f();
errs +=g();
}

void test2(void)
{
int localerrs = errs;
localerrs += f();
localerrs += g();
errs = lpcalerrsl
}
在test1中,每次访问全局变量errs,都需从相应存储器load到寄存器中,经函数调用后在store回原来存储区。共有两次load/store操作。在test2中显然只有一次load/store操作。
2参数传递
一般参数数目超过四个,则使用堆栈传递,因此尽量将参数控制在四个以下。
3循环条件
计数循环
for(loop=1; loop <= limit;loop++)是常用的循环形式。递减计数则很少使用。在逻辑上两种方式并没有差异,但映射到具体体系结构,就有了很大的不同。
本质原因:当进行非零常数比较时候,必须利用专门的CMP指令来执行。但是一个变量与0比较时候,可以直接利用条件执行的NE来判别。因此ARM体系下,建议递减至0的方式设置循环条件。
分享到:
评论

相关推荐

    c语言编写单片机技巧

    在应用中,一般是将微处理器装配在专门设计的电路板上,在母板上只保留和嵌入式相关的功能即可,这样可以满足嵌入式系统体积小和功耗低的要求。目前的嵌入式处理器主要包括:PowerPC、Motorola 68000、ARM系列...

    嵌入式系统复习题资料整理

    计算机图形学实验报告完整资料整理(25道嵌入式习题的经典解答) 什么是嵌入式系统?其特点有些什么? ...在嵌入式C语言程序设计中为提高程序效率的相关设计技巧。 S3C44B0X的内部各功能模块的用途

    嵌入式实习报告.doc

    电子工艺 实 习 报 告 班 级 学 号 姓 名 同 组 人 指导教师 2010年 1 月 13 日 一、嵌入式的概述: 随着信息化技术的发展和... 第二阶段 嵌入式C语言编程基础 主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中

    嵌入式实习报告(2).doc

    电子工艺 实 习 报 告 班 级 学 号 姓 名 同 组 人 指导教师 2010年 1 月 13 日 一、嵌入式的概述: 随着信息化技术的发展和... 第二阶段 嵌入式C语言编程基础 主要介绍在嵌入式开发编程中C语言的重要概念和编程技巧中

    C程序设计语言(第2版·新版中文)

    《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。《C程序设计语言》...

    Visual C++音频视频处理技术及工程实践(含源码2/2)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 ...

    Visual C++音频视频处理技术及工程实践(分卷0)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 ...

    Visual C++音频/视频处理技术及工程实践 (分卷1)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 ...

    Visual C++ 音频/视频 处理技术及工程实践(分卷3)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 ...

    Visual C++音频视频处理技术及工程实践(分卷9)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 ...

    Visual C++音频/视频处理技术及工程实践(分卷2)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 ...

    Visual C++音频视频处理技术及工程实践(分卷7)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 ...

    Visual C++音频视频处理技术及工程实践(分卷6)

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 1.5.2 ...

    Visual C++音频视频处理技术及工程实践地址

    1.3.2 嵌入式处理器ARM 16 1.3.3 数字媒体处理器DSP 16 1.4 音视频开发的典型应用 16 1.4.1 个人消费类电子产品 16 1.4.2 公共领域的音视频应用 18 1.5 常用音视频开发工具 21 1.5.1 DirectSound音频开发 21 ...

Global site tag (gtag.js) - Google Analytics