《嵌入式系统基础教程》第10讲 第5章ARM汇编语言程序指示符与语句格式 75页.ppt

《嵌入式系统基础教程》第10讲 第5章ARM汇编语言程序指示符与语句格式 75页.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《嵌入式系统基础教程》第10讲第5章ARM汇编语言程序指示符与语句格式75页整理ppt

2008年4月13日 南京大学计算机系 《嵌入式系统原理与开发》 第10讲 南京大学计算机系 俞建新主讲 第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 在代码段中使用数据。现已不再使用,仅用于保持向前兼容。 LTORG指示符 LTORG指示符要求汇编器立即安排一个数据缓冲池(文字池)。 语法: LTORG 使用说明:通常ARM汇编器把数据缓冲池放在代码段的最后面,即下一个代码段开始之前,或者END指示符之前。 当程序中使用LDMFD之类的指令时,数据缓冲池可能越界。这时可以使用LTORG指示符定义数据缓冲池。以防止越界发生。通常,大的代码段可以使用多个数据缓冲池。 LTORG指示符通常放在无条件跳转指令之后。或者子程序返回之后,这样处理器就不会错误地把数据缓冲池中的数据当作指令来执行。 LTORG指示符使用举例 AREA EXP_1, CODE, READONLY START BL FUNC1 FUNC1 ;CODE LDR R1,;产生形如LDR R1, [PC, #offset to Literal Pool]的指令 ;CODE MOV PC, LR ; 子程序结束 LTORG ; 定义数据缓冲池DATA SPACE 46 ; 从当前位置开始分配46字节 END ; 默认的数据缓冲池为空 使用MAP和FIELD描述数据结构 ADS编译器使用MAP和FIELD两个指示符描述数据结构。 MAP定义了数据结构的起始地址。 FIELD用来定义数据结构中的字段 MAP指示符 ^是MAP的同义词 MAP语法 MAP expr {, base-register} 其中:expr为数字表达式或者是程序中的标号。 当指令中没有base-register时,expr即为结构化内存表的首地址。此时内存表的位置计数器{VAR}设置成该地址值。 当expr 为程序中的标号,该标

文档评论(0)

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

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

1亿VIP精品文档

相关文档