`

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的方式设置循环条件。
分享到:
评论

相关推荐

    嵌入式ARM裸奔编程GUI编程必备C语言嵌入式系统编程修炼PDF及Word

    本文将深入探讨嵌入式ARM裸奔编程以及GUI编程,结合C语言在嵌入式系统中的应用进行详细解析。 首先,我们关注"嵌入式ARM裸奔编程"。嵌入式系统通常指的是集成在硬件设备中的小型计算机系统,它们执行特定的任务。...

    ARM嵌入式系统C语言编程分析.pdf

    在进行ARM嵌入式系统C语言编程时,开发者不仅要掌握C语言的编程技巧,还要理解ARM架构处理器的工作原理、指令集以及如何与硬件紧密结合。此外,与传统PC平台上的C语言编程不同,嵌入式系统编程还涉及到硬件抽象层...

    嵌入式C语言进阶之道

    嵌入式C语言作为一门专门针对嵌入式系统编程的编程语言,它是C语言的一个子集,专门为嵌入式系统开发设计,具有高效率和小巧灵活的特点。随着物联网和智能设备的快速发展,嵌入式系统应用越来越广泛,对嵌入式C语言...

    嵌入式C语言编程的相关资料

    嵌入式C语言编程是开发基于微处理器或微控制器系统的软件技术,主要应用于硬件与软件紧密结合的领域。ARM架构作为全球最广泛使用的嵌入式处理器架构之一,其编程技术是许多工程师和开发者必备的技能。这份名为“ARM...

    arm和c语言编程的例子源码

    本压缩包包含的“arm原理与c程序设计-代码”很可能是针对ARM处理器进行C语言编程的一些实例源码,旨在帮助开发者深入理解ARM架构以及如何用C语言编写高效、优化的代码。 首先,ARM架构的基础知识点包括: 1. **指令...

    周立功ARM嵌入式基础教程

    《周立功ARM嵌入式基础教程》是一本专为初学者设计的ARM7处理器学习指南,基于周立功公司研发的LPC2000系列开发板进行讲解。本书全面覆盖了ARM7架构的基本原理、硬件接口、软件开发流程以及实际应用案例,旨在帮助...

    高质量c语言嵌入式系统编程

    例如,了解ARM架构下的汇编语言,以及如何使用GCC编译器和GDB调试器,能够更好地利用C语言进行嵌入式开发。 总结起来,“高质量C语言嵌入式系统编程”涵盖了从基本的C语言概念到嵌入式系统特性的全面知识。通过深入...

    C语言进阶——嵌入式系统高级C语言编程(

    3. **效率**:C语言的执行效率高,编译后的代码体积小,适合资源有限的嵌入式环境。 在“C语言进阶——嵌入式系统高级C语言编程”这个主题中,我们可以预期涵盖以下几个关键知识点: 1. **指针与内存管理**:在...

    ARM 嵌入式开发教学

    在ARM嵌入式开发中,开发者需要掌握交叉编译技术,即在非目标平台(如个人电脑)上生成可以在目标平台(如ARM设备)上运行的代码。常用的交叉编译工具链包括GCC(GNU Compiler Collection)和GDB(GNU Debugger)...

    关于ARM嵌入式系统的学习步骤

    ARM嵌入式系统学习是一个系统化的过程,它涉及硬件与软件知识的结合,对于新手而言,需要按照一定的顺序逐步进行学习,以确保能够顺利入门并能够深入地掌握相关的知识点。 首先,初学者应该从制作一个最小系统板...

    嵌入式linux C语言应用程序设计

    在嵌入式Linux系统中,C语言是进行应用程序设计的主要工具,因其高效、灵活和广泛的硬件支持而备受青睐。本文将深入探讨嵌入式Linux环境下C语言应用开发的关键知识点。 一、嵌入式Linux系统基础 嵌入式Linux是Linux...

    基于C语言贪吃蛇游戏源代码 arm处理器

    通过这份源代码,开发者不仅可以学习到C语言编程的基本技巧,还能了解到如何在ARM架构上进行程序设计。 首先,C语言是计算机科学的基础,它的语法简洁、高效,适合编写底层系统级程序。贪吃蛇游戏的实现主要涉及...

    浅析ARM汇编 C语言 C++ 相互调用的方法

    在嵌入式开发领域,ARM架构因其低功耗、高性能的特点被广泛应用。随着软件开发需求的多样化,不同编程语言间的交互成为了一个重要的技术问题。其中,ARM汇编、C语言与C++三种语言的相互调用是常见的需求之一。本文将...

    C语言嵌入式.zip

    《C语言嵌入式.pdf》可能包含了一些示例代码,通过阅读和分析这些源码,读者可以深入理解C语言在嵌入式环境中的具体应用,包括错误处理、优化技巧以及如何适应不同硬件平台。 六、学习资源与实践 学习C语言嵌入式...

    nanopb 基于嵌入式protobuf的移植例程

    这时,`nanopb`应运而生,它是protobuf的一个轻量级实现,专为嵌入式系统设计。 `nanopb`的核心特点在于其小体积、低内存占用以及无需运行时库,这使得它成为STM32、ARM等微控制器平台的理想选择。在基于嵌入式...

    ARM系统中高效C语言程序设计探析.pdf

    在深入讨论ARM系统中高效C语言程序设计时,我们首先需要了解嵌入式系统的基本概念,以及ARM架构在嵌入式领域的地位。嵌入式系统是指为特定应用设计的专用计算机系统,它被嵌入到设备内部,执行特定的控制和监测功能...

    嵌入式ARM从入门到详解再到应用大全

    `ARM嵌入式系统C语言编程.pdf`着重讲解了如何在ARM平台上使用C语言进行编程。C语言是嵌入式开发的首选语言,因为它提供了对硬件的直接访问,并且具有高效的性能。学习者将了解如何编写内核级驱动、内存管理以及如何...

    电子-嵌入式系统高级C语言编程.rar

    嵌入式系统是现代电子设备中的核心组成部分,广泛应用于各种领域,如消费电子产品、工业...通过学习这个资源,你可以更好地理解和掌握如何利用C语言实现高效的嵌入式系统设计,从而在单片机和嵌入式开发中取得成功。

Global site tag (gtag.js) - Google Analytics