网站大量收购闲置独家精品文档,联系QQ:2885784924

嵌入式系统教学arm处理方法器编程分析.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式C语言程序设计基础 C语言“预处理伪指令”在嵌入式程序设计中的应用 嵌入式程序设计中的函数及函数库 嵌入式程序设计中常用的C语言语句 嵌入式程序设计中C语言的变量、数组、结构、联合 C语言“预处理伪指令”在嵌入式程序设计中的应用 “预处理命令”可以改进程序设计的环境,提高编程效率,一般以#号打头 ,可分为以下三种 : 文件包含 文件包含伪指令可将头文件包含到程序中,头文件中定义的内容包括符号常量、复合变量原型、用户定义的变量类型原型和函数的原型说明等。 编译器编译预处理时用文件包含的正文内容替换到实际程序中。 文件包含伪指令的格式: #include头文件名.h ;标准头文件 #include“头文件名.h” ;自定义头文件 #include 宏标识符 宏定义 宏定义伪指令分为:简单宏、参数宏、条件宏、预定义宏及宏释放。 条件编译 条件编译伪指令是写给编译器的,指示编译器在满足某一条件时仅编译源文件中与之相应的部分。其格式如右框中所示: 嵌入式C语言程序编写的简单构架 #include预编译指令 C语言代码,一般要用#include编译指令将所需要的头文件加到该程序中,这是很有必要的,尤其是对编写较大的程序代码时。随后是定义一些外部变量,并对程序中的函数进行声明。 主函数main()的编写; 在每一个C语言代码中,一定要有一个main()函数,在该函数中完成该程序文件所要完成的各个功能,一般是通过调用各个子函数来完成。也可以调用其他文件中的函数。 完成相应功能的各个功能函数的编写。 各个函数之间可以相互调用。 嵌入式C语言程序设计技巧 变量定义 参数传递 循环条件 变量定义 在变量声明的时候,最好把所有相同类型的变量放在一起定义,这样可以优化存储器布局。例: 对于局部变量类型的定义,使用short或char来定义变量并不是总能节省存储空间。有时使用32位int或unsinged int局部变量更有效率一些,如图所示: 变量定义中,为了精简程序,程序员总是竭力避免使用冗余变量。但有时使用冗余变量可以减少存储器访问的次数这可以提高系统性能。 参数传递 为了使单独编译的C语言程序和汇编程序能够互相调用,定义了统一的函数过程调用标准ATPCS。 ATPCS定义了寄存器组中的{R0~R3}作为参数传递和结果返回寄存器,如果参数数目超过四个,则使用堆栈进行传递。 内部寄存器的访问速度是远远大于存储器的,所以要尽量使参数传递在寄存器里面进行,即应尽量把函数的参数控制在四个以下。 循环条件 计数循环是程序中十分常用的流程控制结构,一般有以下两种形式: for (loop=1;loop=limit;loop++) for (loop=limit;loop!=0;loop--) 这两种循环形式在逻辑上并没有效率差异,但是映射到具体的体系结构中时,就产生了很大的不同,如下图所示: C与汇编语言混合编程 ATPCS介绍 内嵌汇编 C和ARM汇编程序间相互调用 ATPCS介绍 ATPCS(ARM-Thumb Procedure Call Standard)是ARM程序和Thumb程序中子程序调用的基本规则,目的是为了使单独编译的C语言程序和汇编程序之间能够相互调用。 这些基本规则包括子程序调用过程中寄存器的使用规则、数据栈的使用规则和参数的传递规则。 寄存器的使用规则 ATPCS规则——寄存器的使用规则 子程序之间通过寄存器r0~r3来传递参数,当参数个数多于4个时,使用堆栈来传递参数。此时r0~r3可记作A1~A4。 在子程序中,使用寄存器r4~r11保存局部变量。因此当进行子程序调用时要注意对这些寄存器的保存和恢复。此时r4~r11可记作V1~V8。 寄存器r12用于保存堆栈指针SP,当子程序返回时使用该寄存器出栈,记作IP。 寄存器r13用作堆栈指针,记作SP。寄存器r14称为链接寄存器,记作LR。该寄存器用于保存子程序的返回地址。 寄存器r15称为程序计数器,记作PC。 数据栈的使用规则 根据堆栈指针指向位置的不同 和增长方向的不同可以分为以下4种数据栈 : FD (Full Descending) 满递减 ED (Empty Descending)空递减 FA (Full Ascending) 满递增 EA (Empty Ascending) 空递增 ATPCS规定数据栈为FD(满递减)类型,并且对数据栈的操作是8字节对齐的。 参数的传递规则 参数个数固定的子程序参数传递规则: 第一个整数参数,通过寄存器R0~R

文档评论(0)

sandaolingcrh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档