基于ARM的嵌入式程序设计

基于ARM的嵌入式程序设计

ID:45993620

大小:3.54 MB

页数:120页

时间:2019-11-20

基于ARM的嵌入式程序设计_第1页
基于ARM的嵌入式程序设计_第2页
基于ARM的嵌入式程序设计_第3页
基于ARM的嵌入式程序设计_第4页
基于ARM的嵌入式程序设计_第5页
资源描述:

《基于ARM的嵌入式程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第五章 基于ARM的嵌入式程序设计5.1ARM汇编语言的伪操作、宏指令与伪指令5.1.1两种常见的ARM编译开发环境5.1.2ADS编译环境下的伪操作和宏指令5.1.3GNU编译环境下的伪操作和宏指令5.1.4ARM汇编语言的伪指令ARM汇编语言的伪操作、宏指令与伪指令伪操作——为汇编程序所用,在源程序进行汇编时由汇编程序处理,只在汇编过程起作用,不参与程序运行。宏指令——通过伪操作定义的一段独立的代码。在调用它时将宏体插入到源程序中。伪指令——是汇编语言程序里的特殊指令助记符,在汇编时被合适的机器指令替代。5.1.1两种常见的ARM编译开发环境ADS/SDTID

2、E开发环境:它由ARM公司开发,使用了CodeWarrior公司的编译器;EmbestIDE开发环境:集成了GNU开发工具的IDE开发环境,由GNU的汇编器as、交叉编译器gcc、和链接器ld等组成。这两种开发环境的编译器都完全支持ARM指令集,但伪操作不同,代码风格不同。5.1.2ADS编译环境下的伪操作和宏指令ADS编译环境下的伪操作可分为以下几类:符号定义(SymbolDefinition)伪操作数据定义(DataDefinition)伪操作汇编控制(AssemblyControl)伪操作信息报告(Reporting)伪操作其他(Miscellaneous)伪

3、操作符号定义伪操作GBLA,GBLL,GBLS:声明全局变量。LCLA,LCLL,LCLS:声明局部变量。SETA,SETL,SETS:给变量赋值。RLIST:为通用寄存器列表定义名称。1、GBLA,GBLL,GBLS用于声明一个ARM程序中的全局变量,并将其初始化。GBLA:声明一个全局算术变量,并初始化成0。GBLL:声明一个全局逻辑变量,并初始化成{FALSE}。GBLS:声明一个全局串变量,并初始化成空串“”。语法格式:variable全局变量的作用范围为:包含该变量的源程序,全局变量名称在作用范围内必须唯一。2、LCLA,LCLL,LCLS用于

4、声明一个ARM程序中的局部变量,并将其初始化。LCLA:声明一个局部算术变量,并初始化成0。LCLL:声明一个局部逻辑变量,并初始化成{FALSE}。LCLS:声明一个局部串变量,并初始化成空串“”。语法格式:variable局部变量的作用范围为:包含该局部变量的宏代码的一个实例3、SETA,SETL,SETS用于给ARM程序中的变量赋值。SETA:给一个算术变量赋值。SETL:给一个逻辑变量赋值。SETS:给一个串变量赋值。语法格式:variableexpressionexpression:赋给变量的值。在向变量赋值前,必须先声明该变量。例

5、:GBLSS1GBLSS2LCLSS3S1SETS“strings1”S2SETS“strings2”S3SETSS1:CC:S2GBLLlogiclogicSETL{TRUE}LCLAarithmeticarithmeticSETA0xff;声明一个全局串变量s1;声明一个全局串变量s2;声明一个局部串变量s3;串变量s1赋值为“strings1”;串变量s2赋值为”strings2”;串变量s3赋值;声明一个全局逻辑变量logic;声明一个局部算术变量;变量logic赋初值为{TRUE};变量arithmetic赋初值为oxff4、RLIST为一个通用寄存器列表

6、定义名称。定义的名称可以在LDM/STM指令中使用。语法格式:nameRLIST{list-of-registers}name:寄存器列表名称。{list-of-registers}:通用寄存器列表。例:contextRLIST{R0-R6};将寄存器列表名称定义为contextLDMDFSP!,context;加载寄存器列表数据定义伪操作LTORG:声明一个数据缓冲池的开始。SPACE:分配一块内存单元,并用0初始化。MAP:定义一个结构化的内存表的首地址。FIELD:定义结构化内存表中的一个数据域。DCB:分配一段字节内存单元,并初始化。DCD、DCDU:分配一

7、段字内存单元,并初始化。1、LTORG用于声明一个数据缓冲池(文字池)的开始。语法格式:LTORG例:startBLfunc……funcLDRR1,=0x55555555;子程序……MOVPC,LR;子程序返回LTORG;定义数据缓冲池存放0x55555555DataSPACE4200;从当前位置开始分配4200字节的内存单元,并初始化为0。END默认数据缓冲池为空注意:LTORG伪操作通常放在无条件跳转指令之后,或者子程序返回指令之后,这样处理器不会错误地将数据缓冲池中的数据当作指令来执行。通常ARM汇编编译器把数据缓冲池放在代码段的最后面,即下一个代码段开始

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。