已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第3章ARM体系结构,.,第3章ARM体系结构,3.1ARM微处理器基础3.2ARM的内核系列3.3ARM微处理器的指令系统,.,3.1ARM微处理器基础,ARM的运行模式ARM的工作状态ARM的寄存器组织ARM的异常ARM的存储器格式ARM的特点和优势,.,ARM的运行模式,ARM微处理器支持7种运行模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态快速中断模式(fiq):用于高速数据传输或通道处理中断模式(irq):用于通用的中断处理管理模式(svc):操作系统使用的保护模式终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。系统模式(sys):运行具有特权的操作系统任务。未定义模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。,.,ARM的工作状态,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:ARM状态,此时处理器执行32位的字对齐的ARM指令Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令,.,ARM的寄存器组织,ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问。在某种时刻,通用寄存器R14R0、程序计数器PC、一个或两个状态寄存器都是可访问的。,.,ARM的寄存器组织,.,ARM的寄存器组织,.,ARM的寄存器组织,.,ARM的寄存器组织,.,ARM的寄存器组织,PSR寄存器的各个位:中断禁止位I、FThumb标志位运行模式位M4:0,.,ARM的寄存器组织,状态寄存器模式位的含义,.,ARM的异常,.,ARM的异常,.,ARM的异常,1(最高)复位2数据终止3FIQ4IRQ5预取指令终止6(最低)未定义指令、SWI,ARM异常的优先级,.,ARM的存储器格式,ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从第0字节到第3字节放置第一个存储的字数据,从第4个字节到第7个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(32位)。ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。,.,ARM的存储器格式,大端格式,.,ARM的存储器格式,小端格式。,.,ARM的特点和优势,1内核编程体系多种模式的切换众多的通用寄存器32位地址/数据操作指令集中的特殊功能高效的C和C+编译器硬件乘法器Thumb指令集E增强DSP指令Jazzle技术2协处理器MMUMPUVFP3AMBA(先进控制器总线体系)4.嵌入式ICE、低功耗、小体积,.,3.2ARM的内核系列,ARM内核分类与系列ARM体系结构版本,.,ARM内核分类与系列,ARM内核系列ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列StrongARM/XscaleARM11系列Cortex,.,ARM内核分类与系列,1994-2004年发布的ARM内核,.,ARM内核分类与系列,处理器内核内核分类ARM7ARM7DMI(-S)ARM720TARM7EJ-SARM9ARM920TARM922TARM9EARM926EJ-SARM946E-SARM966E-SARM968E-SARM10EARM1020EARM1022EARM1026EJ-S,处理器内核内核分类ARM11ARM1136J(F)-SARM1156T2(F)-SARM1176JZ(F)-SSecurCoreSC100SC110SC200SC210StrongARMXscale,.,ARM7内核,ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ-S,.,ARM9内核,ARM920T,ARM922T,.,ARM9E内核,ARM926EJ-S,ARM946E-S,ARM966E-S,ARM968E-S,.,ARM10E内核,ARM1020E,ARM1026EJ-S,.,ARM11内核,ARM1136J(F)-S,ARM1156T2(F)-S,ARM1176JZ(F)-S,.,SecurCore内核,SC100/SC110,SC200/SC210,.,其他ARM内核,StrongARMIntelXScaleCortexARMCortexA(应用内核)ARMCortexR(实时内核)ARMCortexM(微控制器),.,ARM体系结构版本,ARMV1体系是最初的版本,只有26位的寻址空间,没有乘法指令,最终也没有商业化。ARMV2体系与V1体系同为26位寻址空间具有乘法和乘加指令,支持协处理器。ARMV3体系的寻址范围扩展到32位,具有乘法和乘加指令,支持协处理器。ARMV3体系增加了半字存储操作,对调试的支持以及支持嵌入的ICE。ARMV3体系增加了DSP指令支持和对Java指令的支持。ARMV6体系增加了媒体指令,ARMv6指令集合中加入了超过60条SIMD单指令多数据指令。ARMV7体系定义了三种独立的内核型A(应用领域),R(实时领域),M(控制领域)。,.,3.2ARM微处理器的指令系统,ARM指令系统的概述ARM的寻址模式ARM的指令集Thumb的指令集,.,ARM指令系统的概述,.,ARM指令系统的概述,.,ARM的寻址模式,1.立即寻址立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:ADDR0,R0,1;R0R01ADDR0,R0,0 x3f;R0R00 x3f在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在“”后加上“0 x”或“&”。,.,ARM的寻址模式,2寄存器寻址寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令:ADDR0,R1,R2;R0R1R2该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。,.,ARM的寻址模式,3.寄存器间接寻址寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:LDRR0,R1;R0R1STRR0,R1;R1R0第一条指令将以R1的值为地址的存储器中的数据传送到R0中。第二条指令将R0的值传送到以R1的值为地址的存储器中。,.,ARM的寻址模式,4基址变址寻址基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:LDRR0,R1,4;R0R14LDRR0,R1,4!;R0R14、R1R14LDRR0,R1,4;R0R1、R1R14LDRR0,R1,R2;R0R1R2在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中。在第二条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。,.,ARM的寻址模式,5.多寄存器寻址采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令:LDMIAR0,R1,R2,R3,R4;R1R0;R2R04;R3R08;R4R012该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1R4。,.,ARM的寻址模式,6.多寄存器寻址采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令:LDMIAR0,R1,R2,R3,R4;R1R0;R2R04;R3R08;R4R012该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1R4。,.,ARM的寻址模式,7.堆栈寻址堆栈是一种数据结构,按先进后出(FirstInLastOut,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(FullStack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(EmptyStack)。同时,根据堆栈的生成方式,又可以分为递增堆栈(AscendingStack)和递减堆栈(DecendingStack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。,.,ARM指令集,.,ARM指令集:跳转指令,ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令:B跳转指令BL带返回的跳转指令BLX带返回和状态切换的跳转指令BX带状态切换的跳转指令,.,ARM指令集:数据处理指令,传送指令:MOV数据传送指令MVN数据取反传送指令比较指令:CMP比较指令CMN反值比较指令TST位测试指令TEQ相等测试指令,算术指令:ADD加法指令ADC带进位加法指令SUB减法指令SBC带借位减法指令RSB逆向减法指令RSC带借位的逆向减法指令AND逻辑与指令ORR逻辑或指令EOR逻辑异或指令BIC位清除指令,.,ARM指令集:乘法指令,乘法指令与乘加指令:MUL32位乘法指令MLA32位乘加指令SMULL64位有符号数乘法指令SMLAL64位有符号数乘加指令UMULL64位无符号数乘法指令UMLAL64位无符号数乘加指令,.,ARM指令集:加载/存储指令,单寄存器加载存储指令:LDR字数据加载指令LDRB字节数据加载指令LDRH半字数据加载指令STR字数据存储指令STRB字节数据存储指令STRH半字数据存储指令LDRSB有符号的字节加载LDRSH有符号的半字加载,多寄存器加载存储指令:LDM多字节加载指令STM多字节存储指令IA:每次传送后地址+4IB:每次传送前地址+4DA:每次传送后地址-4DB:每次传送前地址-4FD:满递减堆栈ED:空递减堆栈FA:满递增堆栈EA:空递增堆栈,.,ARM指令集:程序状态寄存器指令,ARM微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据,程序状态寄存器访问指令包括以下两条:MRS程序状态寄存器到通用寄存器的数据传送指令MSR通用寄存器到程序状态寄存器的数据传送指令,.,ARM指令集:协处理器指令,ARM的协处理器指令主要用于ARM处理器初始化ARM协处理器的数据处理操作,以及在ARM处理器的寄存器和协处理器的寄存器之间传送数据,和在ARM协处理器的寄存器和存储器之间传送数据。ARM协处理器指令包括以下5条:CDP协处理器数操作指令LDC协处理器数据加载指令STC协处理器数据存储指令MCRARM处理器寄存器到协处理器寄存器的数据传送指令MRC协处理器寄存器到ARM处理器寄存器的数据传送指令,.,Thumb指令集,为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集。Thumb指令集是ARM指令集的一个子集,允许指令编码为16位的长度。与等价的32位代码相比较,Thumb指令集在保留32代码优势的同时,大大的节省了系统的存储空间。所有的Thumb指令都有对应的ARM指令,而且Thumb的编程模型也对应于ARM的编程模型,Thumb代码所需的存储空间约为ARM代码的6070Thumb代码使用的指令数比ARM代码多约3040若使用32位的存储器,ARM代码比Thumb代码快约40若使用16位的存储器,Thumb代码比ARM代码快约4050与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30,.,Thumb指令集,1、分支指令程序相对转移,特别是条件转移与ARM代码下的转移相比,在范围上受更多的限制,转向子程序是无条件的转移。2、数据处理指令数据处理指令是对通用寄存器进行操作。在大多数情况下,操作的结果须放入其中一个操作数寄存器中,而不是第三个寄存器中。数据处理操作比ARM状态的更少。访问寄存器R8-R15外,收到一定的限制。除MOV和ADD指令访问器R8-R15外,其他数据处理指令总是更新CPSR中的ALU状态标志。访问寄存器R8-R15的THUMB数据处理指令不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东辅警笔试题库及答案
- 服装运输司机合同范本
- 驾校解除挂靠合同范本
- 施工签三方合同范本
- 水库股权转让合同范本
- 2026-2031荞麦面行业深度调查及发展前景研究报告
- 2026-2031年中国无人船行业市场分析研究报告
- 山东省烟台市栖霞市2025-2026学年八年级(上)期中物理试卷(五四学制)(含答案)
- 2025年25中级《会计》分章节真题+答案解析
- 2025年鼓楼医院护理笔试题目及答案
- 疫苗管理冷链课件
- 办公室信息安全课件
- 2025年福建司炉证考试题库
- 管理层财务基础知识培训
- 小学生电力科普小讲座
- 医院感染进修总结汇报
- 口腔病历汇报展示
- 2025至2031年中国冷冻梨行业投资前景及策略咨询研究报告
- 决定论视域下道德责任相容论的深度剖析与辩护
- 工贸作业票管理办法
- 幼儿园儿童行为观察计划
评论
0/150
提交评论