- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]8ARM汇编语言程序指示符与语句格式
2008年4月13日 南京大学计算机系 第5章 ARM指令集和汇编语言程序 本章主要介绍以下内容: ARM指令集的基本特点 与Thumb指令集的区别 与x86处理器的区别 ARM指令格式 ARM寻址方式 ARM指令集分类详解 ARM汇编语言的指示符 ARM汇编语言语句格式 ARM汇编语言程序格式 ARM汇编语句格式和程序格式进阶 ARM汇编语言程序举例 本讲主要参考文献 ARM公司英文资料: ADS_AssemblerGuide_B.pdf DDI0100E_ARM_ARM.pdf 中文图书 《ARM体系结构与编程》,清华大学出版社 《嵌入式系统基础教程》,机械工业出版社 5.4 ARM汇编语言程序的指示符 ARM汇编语言源程序中语句由指令、指示符和宏指令组成。 在ARM中将directive称做指示符 ARM的指示符指令相当于x86的伪指令 在ARM中pseudo-instruction被称为伪指令 ARM指令集中只有4条伪指令 而宏指令则是通过指示符定义的。 使用MACRO和 MEND指示符 5.4.1 符号定义指示符 符号定义(Symbol definition)指示符用于定义ARM汇编程序中的变量,对变量进行赋值以及定义寄存器名称。包括以下指示符: GBLA,GBLL及GBLS 声明全局变量; LCLA,LCLL及LCLS 声明局部变量; SETA,SETL及SETS 给变量赋值; RLIST 为通用寄存器列表定义名称; CN 为协处理器的寄存器定义名称; CP 为协处理器定义名称; DN及SN 为VFP的寄存器定义名称; FN 为FPA的浮点寄存器定义名称。 5.4.2 数据定义指示符 数据定义(Data definition)指示符包括以下的指示符: LTORG 声明一个数据缓冲池(literal pool)的开始; MAP 定义一个结构化的内存表(storage map)的首地址; FIELD 定义结构化的内存表中的一个数据域(field); SPACE 分配一块内存单元,并用0初始化; DCB 分配一段字节的内存单元,并用指定的数据初始化; DCD及DCDU 分配一段字的内存单元,并用指定的数据初始化; DCDO 分配一段字的内存单元,并将单元的内容初始化成该单元相对于静态基值寄存器的偏移量。 数据定义指示符(续) DCFD及DCFDU 分配一段双字的内存单元,并用双精度的浮点数据初始化。 DCFS及DCFSU 分配一段字的内存单元,并用单精度的浮点数据初始化。 DCI 分配一段字节的内存单元,用指定的数据初始化,指定内存单元中存放的是代码,而不是数据。 DCQ及DCQU 分配一段双字的内存单元,并用64位的整数数据初始化。 DCW及DCWU 分配一段半字的内存单元,并用指定的数据初始化。 DATA 在代码段中使用数据。现已不再使用,仅用于保持向前兼容。 5.4.3 汇编控制指示符 汇编控制(Assembly control)指示符包括下面的指示符: IF,ELSE及ENDIF 汇编或者不汇编一段源代码 WHILE及WEND 条件重复汇编相同的一段源代码 MACRO及MEND 标识宏定义开始与结束 MEXIT 用于从宏跳转出去 5.4.4 信息报告指示符 信息报告(Reporting)指示符包括下列指示符: ASSERT 在汇编编译器对汇编程序的第二趟扫描中,如果其中的ASSERTION中条件不成立,ASSERT伪操作将报告该错误信息。 INFO 支持第一二趟汇编扫描时报告诊断信息。 OPT TTL及SUBT 5.4.5 其他指示符 这些杂类的指示符包括: ALIGN AREA CODE16及CODE32 END ENTRY EQU EXPORT或GLOBAL 其他的指示符(续) EXTERN GET或INCLUDE IMPORT INCBIN KEEP NOFP REQUIRE REQUIRE8及PRESERVE8 RN ROUT 5.4.5.1 AREA AREA指示符用于定义一个代码段或者数据段。 语法格式 AREA sectionname{,attr}{,attr}.... 其中: sectionname为所定义的代码段或者数据段的名称。如果该名称是以数字开头的,则该名称必须用“|”括起来,如|1_datasec|。还有一些代码段具有约定的名称,如|.text|表示C语言编译器产生的代码段或者是与C语言库相关的代码段。 Attr是该代码段(或者程序段)的属性。 在AREA指示符中,各属性间用逗号隔开。 AREA的属性 下面列举主要的属性: ALIGN=expression。默认的情况下,ELF的代码段和数据段是4字节对齐的。 Expression可以
文档评论(0)