欢迎来到天天文库
浏览记录
ID:51643168
大小:368.50 KB
页数:52页
时间:2020-03-27
《ARM汇编语言与嵌入式C混合编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章ARM汇编语言与嵌入式C混合编程本章首先简要的介绍了嵌入式C语言的编程规范,嵌入式开发中常用的位运算与控制位域及在嵌入式C程序设计中要注意的问题,为读者进行嵌入式C程序设计打基础。然后介绍在ARM汇编语言与嵌入式C语言进行相互调用的标准(AAPCS),并以大量的实例说明了相互调用应注意的问题。内容提要8.1嵌入式C编程规范8.2嵌入式C程序设计中的位运算8.3嵌入式C程序设计中的几点说明8.4嵌入式C程序设计格式8.5过程调用标准ATPCS与AAPCS8.6ARM汇编语言与嵌入式C混合编程8.1嵌入式C编程规范在当前的嵌入式开发中
2、,嵌入式C语言是最为常见的程序设计语言,对于程序员来说,能够完成相应功能的代码并不一定是优秀的代码。优秀的代码还要具备易读性、易维护性、具有可移植和高可靠性。8.1.1嵌入式C程序书写规范排版规则如下:(1)程序块要采用缩进风格编写(2)较长的语句(例如超过80个字符)要分成多行书写(3)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分(4)若函数或过程中参数较长,也要进行适当的划分。(5)一般不要把多个短语句写在一行中(6)程序块的分界符语句的大括号“{”与“}”一般独占一行并且在同一列书写规范示例:8.1.2命名规则(1
3、)标识符的名称要简明,能够表达出确切的含义,可以使用完整的单词或通常可以理解的缩写。(2)如果在命名中使用特殊约定或缩写,则要进行注释说明。(3)对于变量命名,一般不取单个字符,例如i、j、k...(4)函数名一般以大写字母开头;所有常量名字母统一用大写。8.1.3注释说明注释有助于程序员理解程序的整体结构,也便于以后程序代码的维护与升级。常用的规则如下:(1)注释语言必须准确、简洁且容易理解;(2)程序代码源文件头部应进行注释说明;(3)函数头部应进行注释;(4)程序中所用到的特定含义的常量、变量,在声明时都要加以注释;(5)对于宏定
4、义、数据结构声明,如果其命名不是充分自注释的,也要加以注释。(6)如果注释单独占用一行,与其被注释的内容进行相同的缩进方式,一般将注释与其上面的代码用空行隔开(7)程序代码修改时,其注释也要及时修改,一定要保证代码与注释保持一致。命名规则示例:8.2嵌入式C程序设计中的位运算在嵌入式程序设计中,位操作是最常用的运算之一,因为在很多情况下要对寄存器中的某位或某个管脚进行操作,这些都需要用位操作来完成。8.2.1按位与操作按位与运算符“&”是把参与运算的两个操作数所对应的各个二进制位进行按位相与。只有当对应的两个二进制位全为1时,结果才为1
5、,否则为0。参与运算的两个操作数以补码形式出现。例如7&3,补码分别为00000111与00000011按位与运算后结果为00000011等于十进制的3。按位与操作可以实现将特定的位清零,也可以用于提取出某数的指定位。8.2.2按位或操作按位或操作运算符“
6、”是把参与运算的两个操作数对应的各个二进制位进行按位相或。对应的两个二进制位中只要有一个为1,结果就为1,当两个对应的二进制位都为0时,结果位为0。参与运算的两个操作数均以补码形式出现。例如7
7、3,7的补码为00000111,3的补码为00000011,结果为00000111。按位与
8、操作可以实现将特定位的置位操作,也可以用于提取出某数的指定位。8.2.3按位异或操作按位异或运算符“^”是将参与运算的两个操作数对应的各个二进制位进行相异或,当对应的两个二进制位相异时,结果位为1,相同时为0。参与运算的两个操作数均以补码形式出现。例如7
9、3,7的补码为00000111,3的补码为00000011,结果为00000100。应用举例:通过3次异或操作将寄存器rPDATAE中的内容与变量tmp的值进行交换。rPDATAE=rPDATAE^tmptmp=tmp^rPDATAErPDATAE=rPDATAE^tmp8.2.4取反
10、操作取反运算符“~”实现对参与运算的操作数对应的各个二进制位按位求反。取反运算符“~”具有右结合性。所有1变为0,0变为1。例如~(01011001)=10100110。在程序中主要用于将操作数的某位或某些位取反,为其他操作提供数据准备。8.2.5移位操作移位操作分为左移操作与右移操作。左移运算符“<<”实现将“<<”左边的操作数的各个二进制位向左移动“<<”右边操作数所指定的位数,高位丢弃,低位补0。其值相当于乘以:2“左移位数”次方。右移运算符“>>”实现将“>>”左边的操作数的各个二进制位向右移动“<<”右边操作数所指定的位数。对
11、于空位的补齐方式,无符号数与有符号数是有区别的。对无符号数进行右移时,低位丢弃,高位用0补齐,其值相当于除以:2“右移位数”次方8.3嵌入式C程序设计中的几点说明8.3.1volatile限制符8.3.2地
此文档下载收益归作者所有