- 1、本文档共99页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM指令集和汇编语言程序.ppt
2008年10月23日 南京大学计算机系 《嵌入式系统原理与开发》 第10讲 南京大学计算机系 俞建新主讲 第5章 ARM指令集和汇编语言程序 本章主要介绍以下内容: ARM指令集的基本特点 与Thumb指令集的区别 与x86处理器的区别 ARM指令格式 ARM寻址方式 ARM指令集分类详解 ARM汇编语句格式和程序格式 ARM汇编语言的指示符 ARM汇编程序标准与规范 典型ARM汇编语言程序举例 本讲主要参考文献 ARM公司英文资料: ADS_AssemblerGuide_B.pdf DDI0100E_ARM_ARM.pdf 中文图书 《ARM体系结构与编程》,清华大学出版社 《嵌入式系统基础教程》,机械工业出版社 嵌入式系统开发中汇编语言设计的意义 汇编语言程序设计更能充分发挥处理器的硬件特性 两个优势 操作系统移植需要编写几百行底层硬件的汇编语言程序,这是C语言不可取代的。 优化算法的时空效率,C语言的目标代码优化是编译器完成的,而汇编语言的目标代码优化是人工完成的。人是算法的创造者,也是编译器的设计者,人工优化比编译器质量高。 弱点 编程效率低,开发周期长,经济代价大。 5.4 ARM汇编语句格式和程序格式 两种ARM汇编语言格式 ARM汇编语言程序格式主要有两种: 基于ADS1.2集成开发环境的汇编器格式 包括SDT在内,统称为ADS 基于Linux的GNU汇编器格式 本讲前面部分介绍基于ARM公司ADS集成开发环境汇编器格式的汇编语言程序设计。 本讲后面将介绍基于GNU汇编器的ARM汇编语言程序编写方法。 预定义寄存器名及内部变量名 ARM汇编器中将几十个寄存器名称作为保留字预先给与了定义,这些预定义寄存器名都是大小写敏感的,它们都与具体的寄存器一一对应。参看下面的表格。 ARM公司ADS预定义的寄存器名一览表 ARM公司ADS预定义的寄存器名一览表(续) ARM汇编语言程序的部分内部变量名清单 44BINIT.S中使用的汇编语言部分内部变量名使用范例 GBLL THUMBCODE ; 设置一个全局逻辑变量 [ {CONFIG} = 16 ; if config==16 这里表示处于16位编译方式 THUMBCODE SETL {TRUE} ; 设置THUMBCODE 为 true CODE32 ; 转入32位编译模式 | ; else THUMBCODE SETL {FALSE} ; 设置THUMBCODE 为 false ] [ THUMBCODE ;if THUMBCODE==TRUE CODE32 ;for start-up code for Thumb mode ;转入32位编译方式 ] 5.4.1 ARM汇编语言程序的语句格式 ARM汇编语言程序的语句格式格式如下: { symbol } { instruction | directive | pseudo-instruction } { ;comment } 对应的中文语句格式描述是: { 符号 } { 指令 | 指示符 | 伪指令 } { ;注释 } 语句格式中,花括号括起来的部分表示可以省略;竖线分隔的字段表示可以替换。 ARM汇编语言程序中的符号 ARM汇编语句中的符号可以是指令地址或标号、变量、常量和局部标号,符号属性可以是程序相关的、寄存器相关的或者是绝对地址。 在符号中,有程序相关的指示符,例如:DCB、DCD等;有寄存器相关的指示符,例如:MAP、SPACE、DCDO等;还有绝对地址。绝对地址是范围在232-1的整数常数,直接用来表示地址。 符号命名和书写规则 ARM符号的命名和书写有以下规则: ①可以使用大小写字母,数字和下划线对符号实行命名。除本地行号外,名称不能以数字开头。符号是大小写字母敏感的。 ②如果符号使用了范围更大的字符集,则需要用单竖线将符号名括起来,以便编译器处理。 例如:|.text| 和 |Image$$ZI$$Limit| ③单竖线不属于符号。在两个单竖线之间不能使用单竖线,分号和新的文字行。 ④一个程序段中符号不能重名。 ⑤符号不能够与系统内部变量或者系统预定义的符号同名。例如:a1 or R0、sp、cpsr、{PC} or .、{VAR} or @、{CONFIG}、{CPU}等等。 符号命名和书写规则(续) ⑥符号在其作用范围内必须唯一。 ⑦当程序中的符号与指令助记符或者指示符同名时,用双竖线将符号括起来。如||buffe_a||,这时双竖线并不是符号的组成部分。 ⑧在ARM汇编语言程序中,所有符号必须在一行的最左边位置开始书写,即所谓的顶格书写,不允许包含空格或者制表符。 ⑨符号的字符序列中不能大小写字母相混杂。 数字常量
文档评论(0)