徐春雷ARM体系结构域编程第4章.ppt_第1页
徐春雷ARM体系结构域编程第4章.ppt_第2页
徐春雷ARM体系结构域编程第4章.ppt_第3页
徐春雷ARM体系结构域编程第4章.ppt_第4页
徐春雷ARM体系结构域编程第4章.ppt_第5页
免费预览已结束,剩余19页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2,第4章 ARM汇编语言程序设计,本章介绍如何编写ARM和Thumb汇编语言程序。同时介绍ARM汇编编译器armasm的使用方法。,3,4.1 伪 操 作,ARM汇编语言源程序中语句由指令、伪操作和宏指令组成。在ARM中伪操作称为derective,这里为保持和国内在IBM PC汇编语言中对名词翻译的一致性derective称为伪操作;同样在ARM中宏指令被称为pseudo-instruction,这里将其称为宏指令,宏指令也是通过伪操作定义的。 本节介绍以下类型的ARM伪操作和宏指令。 符号定义(Symbol definition)伪操作。 数据定义(Data definition)伪操作

2、。 汇编控制(Assembly control)伪操作。 框架描述(Frame description)伪操作。 信息报告(Reporting)伪操作。 其他(Miscellaneous)伪操作。,4,4.1.1 符号定义伪操作,符号定义(Symbol definition)伪操作用于定义ARM汇编程序中的变量,对变量进行赋值以及定义寄存器名称。包括以下伪操作。 GBLA, GBLL 及 GBLS 声明全局变量。 LCLA, LCLL 及 LCLS 声明局部变量。 SETA, SETL 及 SETS 给变量赋值。 RLIST 为通用寄存器列表定义名称。 CN 为协处理器的寄存器定义名称。 CP

3、 为协处理器定义名称。 DN及SN 为VFP的寄存器定义名称。 FN 为FPA的浮点寄存器定义名称。,5,4.1.2 数据定义伪操作,数据定义(Data definition)伪操作包括以下的伪操作。 LTORG 声明一个数据缓冲池(literal pool)的开始。 MAP 定义一个结构化的内存表(storage map)的首地址。 FIELD 定义结构化的内存表中的一个数据域(field)。 SPACE 分配一块内存单元,并用0初始化。 DCB 分配一段字节的内存单元,并用指定的数据初始化。 DCD及DCDU 分配一段字的内存单元,并用指定的数据初始化。 DCDO 分配一段字的内存单元,并

4、将个单元的内容初始化成该单元相对于静态基值寄存器的偏移量。,6,4.1.2 数据定义伪操作,DCFD及DCFDU 分配一段双字的内存单元,并用双精度的浮点数据初始化。 DCFS及DCFSU 分配一段字的内存单元,并用单精度的浮点数据初始化。 DCI 分配一段字节的内存单元,用指定的数据初始化,指定内存单元中存放的是代码,而不是数据。 DCQ 及DCQU 分配一段双字的内存单元,并用64位的整数数据初始化。 DCW 及DCWU 分配一段半字的内存单元,并用指定的数据初始化。 DATA 在代码段中使用数据。现已不再使用,仅用于保持向前兼容。,7,4.1.3 汇编控制伪操作,汇编控制(Assembl

5、y control)伪操作包括下面的伪操作。 IF,ELSE 及ENDIF WHILE及WEND MACRO及MEND MEXIT,8,4.1.4 栈中数据帧描述伪操作,栈中数据帧描述伪操作主要用于调试,这里不介绍这部分内容。感兴趣的读者可以参考ARM的相关资料。,9,4.1.5 信息报告伪操作,信息报告(Reporting)伪操作包括伪操作。 ASSERT INFO OPT TTL及SUBT,10,4.1.6 其他的伪操作,这些杂类的伪操作包括: ALIGN AREA CODE16及CODE32 END ENTRY EQU EXPORT或GLOBAL EXTERN,11,4.1.6 其他的伪

6、操作,GET或INCLUDE IMPORT INCBIN KEEP NOFP REQUIRE REQUIRE8及PRESERVE8 RN ROUT,12,4.2 ARM汇编语言伪指令,ARM中伪指令不是真正的ARM指令或者Thumb指令,这些伪指令在汇编编译器对源程序进行汇编处理时被替换成对应的ARM或者Thumb指令(序列)。 1. ADR (小范围的地址读取伪指令) 2. ADRL(中等范围的地址读取伪指令) 3. LDR大范围的地址读取伪指令 4. NOP 空操作伪指令,13,4.3 ARM汇编语言语句格式,ARM汇编语言语句格式如下所示: symbol instruction|dire

7、ctive|pseudo-instruction ; comment 在ARM汇编语言中,各个指令、伪指令及伪操作的助记符必须全部用大写字母,或者全部用小写字母,不能在一个伪操作助记符中既有大写字母又有小写字母。 源程序中,语句之间可以插入空行,以源代码的可读性更好。 如果一条语句很长,为了提高可读性,可以将该长语句分成若干行来写。这时在一行的末尾用“”表示下一行将续在本行之后。,14,4.3.1 ARM汇编语言中的符号,在ARM汇编语言中,符号(symbols)可以代表地址(addresses)、变量(variables)和数字常量(numeric constants)。 符号的命名规则如下

8、: 符号由大小写字母、数字以及下划线组成。 局部标号以数字开头,其他的符号都不能以数字开头。 符号是区分大小写的。 符号中的所有字符都是有意义的。 符号在其作用范围内必须惟一,即在其作用范围内不可有同名的符号。 程序中的符号不能与系统内部变量或者系统预定义的符号同名。 程序中的符号通常不要与指令助记符或者伪操作同名。,15,4.3.1 ARM汇编语言中的符号,1. 变量 2. 数字常量 3. 汇编时的变量替换 4. 标号 5. 局部标号,16,4.3.2 ARM汇编语言中的表达式,表达式是有符号、数值、单目或多目操作符以及括号组成的。在一个表达式各种元素的优先级如下所示: 括号内的表达式优先级

9、最高。 各种操作符有一定的优先级。 相邻的单目操作符的执行顺序为由右到左,单目操作符优先级高于其他操作符。 优先级相同的双目操作符执行顺序为由左到右。,17,4.3.2 ARM汇编语言中的表达式,1. 字符串表达式 2. 数字表达式 3. 基于寄存器和基于PC的表达式 4. 逻辑表达式 5. 其他的一些操作符,18,4.4 ARM汇编语言程序格式,本小节介绍ARM汇编语言程序的基本格式以及子程序间调用的格式。,19,4.4.1 汇编语言程序格式,ARM汇编语言以段(section)为单位组织源文件。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。 ARM汇编语言源程序经过汇编处理后

10、生成一个可执行的映像文件(类似于windows系统下的EXE文件)。该可执行的映像文件通常包括下面3部分: 一个或多个代码段。代码段通常是只读的。 零个或多个包含初始值的数据段。这些数据段通常是可读写的。 零个或多个不包含初始值的数据段。这些数据段被初始化为0,通常是可读写的。,20,4.4.2 汇编语言子程序调用,在ARM汇编语言中,子程序调用是通过BL指令完成的。BL指令的语法格式如下: BL subname 其中,subname是调用的子程序的名称。 BL指令完成两个操作:将子程序的返回地址放在LR寄存器中,同时将PC寄存器值设置成目标子程序的第一条指令地址。 在子程序返回时可以通过将L

11、R寄存器的值传送的PC寄存器中来实现。,21,4.5 ARM汇编编译器的使用,ARMASM的语法格式如下所示: armasm -16|-32 -apcs none|/qualifier/qualifier. -bigend|-littleend -checkreglist -cpu cpu -depend dependfile|-m|-md -errors errorfile -fpu name -g -help -i dir ,dir -keep -list listingfile options -maxcache n -memaccess attributes -nocache -noesc -noregs -nowarn -o filename -predefine directive -split_ldm -unsafe -via file inputfile,22,4.6 汇编程序设计举例,在本节中通过一些例子来说明ARM中伪操作以及指令的用法。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论