版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.1ARM系列处理器指令集概述4.1.1 ARM/Thumb/Thumb-2指令集演进4.1.2 ARM/Thumb/Thumb-2指令特性4.1.3 ARM汇编器基本语法4.1.1ARM/Thumb/Thumb-2指令集演进1)计算机指令集分类:(1)复杂指令集(CISC),特点:每条指令的编码长度不固定,可以是8位、16位、32位甚至更长。CISC(complex instruction set computer)Intel 80x86系列微处理器是典型的CISC计算机,因为指令编码长短不一,导致指令译码器结构复杂, 译码电路需要更多的基本逻辑单元来实现。(2)精简指令集计算机RISC,
2、特点:每条指令长度固定16位或32位。RISC(reduced instruction set computer)为了简化指令译码器结构,降低译码电路复杂度,从而降低处理器功耗, 提升计算机整体性能,RISC微处理器得于提出并得到快速发展,ARM系列处理器是典型的RISC指令集处理器。2)ARM7-ARM11指令集历史原因,从ARM7TDMI开始,形式上相对独立的指令集:ARM处理器一直支持两种ARM指令集(32位),处理器执行这类指令应处于ARM状态;优点:指令功能强大,效率高,一条指令可完成功能多Thumb指令集(16位),处理器执行这类指令应处于Thumb状态。优点:代码密度高,但性能比
3、ARM指令稍低一些ARM7TDMI的苦恼:为了兼顾性能和代码密度需要在2套指令集间频繁切换。ARM指令Thumb指令两者之间的切换还是比较相当的麻烦。鱼与熊掌不可兼得?于是ARM公司在ARMv7-M架构上,开发了一套指令集称为THUMB-2指令集的指令集。执行效率低代码密度低代码密度高执行效率高3)ARM架构与指令集演进关系ARMv7-M支持ARM、THUMB、THUMB-2指令集M3支持Thumb-2 的一个子集,包含:所有基本的16位和32位Thumb-2指令 。16位/32位Thumb2指令集,既有32位指令集高效处理能力,又具有16位指令的代码空间压缩能力,而且还无需在32位ARM状态
4、与16Thumb状态间来回切换,所有Thumb2指令只能在Thumb状态下执行。4)Thumb-2指令集与Thumb指令集的关系Thumb-2真不愧是一个突破性的指令集。它强大,它易用,它轻佻,它高效。 Thumb-2是16位Thumb指令集的一个超集,在Thumb-2中, 16位指令首次与32位指令并存,结果在Thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。Cortex-M3/4支持的Thumb-2指令“子集”包括下列三部分 :(1) 32位宽指令 :即与32位ARM指令功能相当;(2) 16位窄指令:即16位Thumb指令;(3) 扩展的32位Thumb-
5、2指令。16b/32b Thumb-2指令集Cortex-M3/4/7Thumb2子集16b Thumb指令集图4-1-2 Thumb-2指令集与Thumb指令集的关系4.1.2ARM/Thumb/Thumb-2指令特性32位ARM指令(简称“ARM指令”)是指在经典ARM系列处理器(ARM7、ARM9、ARM10、ARM11)在ARM状态下执行的指令。Thumb-2指令集中的32位宽指令(简称“宽指令”)是指在Cortex M3/M4处理器在Thumb状态下的32位宽指令Cortex M3/M4处理器没有32位ARM状态,16/32位指令只能在Thumb状态下执行。ARM指令和宽指令虽然属于
6、不同处理器,且处理器所处状态也不同,但它们有大致相同指令格式和语法规则当然也有细微差别,比如所有ARM指令,在任何地方都可加条件后缀码, 而大多数情况下,THUMB-2指令只有在“IT指令块”中的宽指令可带条件后缀码。16位Thumb指令集与32位宽指令集的区别含3大点:(1)THUMB指令的第二操作数受到更多限制;(2)除了分支指令B有条件执行功能外,其它THUMB指令均为无条件执行;(3)大多数Thumb数据处理指令采用2操作数格式;更为详细的Thumb指令集与32位宽指令的区别见指令介绍。4.1.3ARM汇编器基本语法(1)汇编语句格式ARM/Thumb/Thumb-2汇编语言的语句格式
7、为:汇编指令的最典型书写模式如下所示:标号是可选的,如果有,它必须顶格写。标号的作用是让汇编器来计算程序转移的地址。操作码是指令的助记符,它的前面必须有至少一个空白符,通常使用一个“Tab”键来产生。操作码后面往往跟随若干个操作数,而第1 个操作数,通常都给出本指令执行结果的存储地。不同指令需要不同数目的操作数,并且对操作数的语法要求也可以不同。举例来说,立即数必须以“#”开头。标号S ,;注解简单但完整的ARM汇编语代码程序段还可以使用EQU 指示字来定义符号常量(仅在编译阶段有用,没有分配存储单元)NVIC_IRQ_SETEN0EQU0xE000E100NVIC_IRQ0_ENABLEEQ
8、U0x1LDR R0, =NVIC_IRQ_SETEN0;在这里的LDR 是个伪指令,;它会被汇编器转换成 ;一条“相对PC 的加载指令”MOV R1, #NVIC_IRQ0_ENABLE; 把立即数传送到指令中STR R1, R0; *R0=R1,执行完此指令后;IRQ #0 被使能。VARDCD NVIC_IRQ_SETEN0注意:常数定义必须顶格写如果汇编器不能识别某些特殊指令的助记符,你就要“手工汇编”查出该指令的确切二进制机器码,然后使用DCI 编译器指示字。例如,BKPT 指令的机器码是0xBE00,即可以按如下格式书写:DCI0xBE00; 断点(BKPT),这是一条16 位指令
9、类似地,你还可以使用DCB 来定义存储在RAM/ROM中的一串字节常数允许以字符串的形式表达,还可以使用DCD 来定义一串32 位整数。它们最常被用来在代码中书写表格。例如:LDR R3, =MY_NUMBER; R3= MY_NUMBERLDR R4, R3; R4= *R3LDR R0, =HELLO_TEXT; R0= HELLO_TEXTBLPrintText; 呼叫PrintText 以显示字符串;R0 传递参数MY_NUMBERDCD0x12345678HELLO_TEXTDCB”Hellon”,0请注意:不同汇编器的指示字和语法都可以不同。上述示例代码都 是按 ARM 汇编器的语
10、法格式写的。如果使用其它汇编器,最好看一看它附带的示例代码。(2)汇编语言:统一的汇编语言为了最有力地支持Thumb-2,引用了一个“统一汇编语言(UAL)”语法机制:对于16 位指令和32 位指令均能实现的一些操作(常见于数据处理操作),有时虽然指令的实际操作数不同,或者对立即数的长度有不同的限制,但是汇编器允许开发者以相同的语法格式书写,并且由汇编器来决定是使用16 位指令,还是使用32 位指令。Thumb 的语法和ARM的语法虽不同,但在有了UAL 之后,两者的书写格式就统一了。ADD R0, R1 ;使用传统的Thumb 语法 ADD R0, R0, R1 ;UAL 语法允许的等值写法
11、(R0=R0+R1)虽然引入了UAL,但是仍然允许使用传统的Thumb语法。必须注意:如果使用传统的Thumb 语法,有些指令会默认地更新APSR/CPSR,即使你没有加上S 后缀。如果使用UAL 语法,则必须指定S 后缀才会更新。例如:ANDR0,R1;传统的Thumb语法ANDS R0, R0, R1 ;等值的UAL 语法(必须有S 后缀)在Thumb-2 指令集中,有些操作既可以由16 位指令完成,也可以由位指令完成。例如:ADDS R0, #1 ;汇编器将为了节省空间而使用16 位指令ADDS.N R0, #1 ;指定使用16 位指令(NNarrow) ADDS.W R0, #1 ;指
12、定使用32 位指令(W=Wide).W(Wide)后缀指定32 位指令。如果没有给出后缀,汇编器会先试着32用16 位指令以缩小代码体积,如果不行再使用32 位指令。因此,使用“.N”其实是多此一举,不过汇编器可能仍然允许这样 的语法。统一的汇编语言(UAL)实例“等价”UAL语法绝大多数16位指令只能访问R0R7;32位Thumb2 指令则无任何限制。再次重申,这是ARM公司汇编器的语法,其它汇编器的可能略有区别,但如果没有给出后缀,汇编器就总是会尽量选择更短的指令。其实在绝大多数情况下,程序是用C 写的,C 编译器也会尽可能地使用短指令。当立即数超出一定范围时,或者32 位指令能更好地适合某个操作,将使用32 位指令。32位Thumb2指令也可以按半字对齐。(以前ARM32位指令都必须按字对齐),因此下例是允许的。例:0x1000:LDR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民盟内部监督制度
- 洁牙内部转诊制度
- 海信企业内部制度
- 海底捞内部薪酬制度
- 火锅店内部员工规章制度
- 煤矿内部医保移交制度
- 煤矿机电内部市场化制度
- 环保局内部管理制度
- 理发店股东内部管理制度
- 监理内部考核制度模板
- 以梦为马 不负韶华2026新年高中开学第一课
- 2025北京市东城区卫生健康委所属事业单位第一次公开招聘396人笔试历年典型考题及考点剖析附带答案详解试卷2套
- 2026年春季第二学期学校德育主题活动工作安排表
- 深度解析(2026)《JTT 761-2022航标灯通 用技术条件》
- 2026届新高考语文三轮冲刺复习:名句名篇默写汇编(课前每日五分钟一练)
- DB37T5336-2025 房屋市政工程安全文明工地建设标准 第1部分:房屋建筑工程
- 2025年R2移动式压力容器充装证考试题库及答案
- 2026年春教科版(新教材)小学科学二年级下册(全册)教学设计(附目录P91)
- 饲养动物应急预案(3篇)
- 大数据与人工智能导论 课件 李建 第1-6章 信息与社会 -数据库技术
- 2026年鄂尔多斯职业学院单招职业倾向性测试题库带答案详解
评论
0/150
提交评论