毕业设计21ARM体系结构与编程技术研究.doc

毕业设计21ARM体系结构与编程技术研究

收藏

压缩包内文档预览:(预览前20页/共54页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:546318    类型:共享资源    大小:226.11KB    格式:ZIP    上传时间:2015-12-01 上传人:QQ2****711 IP属地:辽宁
6
积分
关 键 词:
电气电子毕业设计论文
资源描述:
毕业设计21ARM体系结构与编程技术研究,电气电子毕业设计论文
内容简介:
ARM体系结构与编程技术研究 1 目录 摘要 . 3 第 1 章 绪 论 . 5 1.1课题背景 . 5 1.1.1嵌入式系统的背景 . 5 1.1.2 ARM的背景 . 6 1.2 研究方向 . 7 1.3 本文的工作 . 7 第 2 章 ARM 体系结构与编程分析 . 8 .1 ARM概述及其基本编程模型 . 35 2.1.1 ARM芯片具有 RISC体系的一般特点 . 35 2.1.2 ARM体系结构的版本 . 35 2.1.3 ARM处理器系列 . 35 2.1.4 ARM处理器模式 . 36 2.2 ARM指令的寻址方式 . 8 2.2.1 立即寻址 . 8 2.2.2 寄存器寻址 . 8 2.2.3 寄存器间接寻址 . 9 2.2.4 基址变址寻址 . 9 2.2.5 多寄存器寻址 . 10 2.2.6 相对寻址 . 10 2.2.7 堆栈寻址 . 10 2.3 ARM指令集概述 . 11 2.3.1 跳转指令 . 11 2.3.2 数据处理指令 . 13 2.3.3 乘法指令与乘加指令 . 20 2.3.4 程序状态寄存器访问指令 . 23 2.3.5 加载 /存储指令 . 24 2.3.6 批量数据加载 /存储指令 . 27 2.3.7 数据交换指令 . 28 2.3.8 移位指令(操作) . 29 2.3.9 协处理器指令 . 31 2.3.10 异常产生指令 . 34 第 3 章 ARM 处理器的编程模型 . 34 3.1 ARM体系结构的存储器格式 . 36 3.2 指令长度及数据类型 . 3.3 处理器模式 . 3.4 寄存器组织 . 37 ntsARM体系结构与编程技术研究 2 3.4.1 ARM状态下的寄存器组织 . 38 3.4.2 程序状态寄存器 . 40 3.5异常 . 43 3.5.1 ARM体系结构所支持的异常类型 . 43 3.5.2 对异常的 响应 . 44 3.5.3 异常进入 /退出小节 . 45 3.5.4 应用程序中的异常处理 . 45 第 4 章 设计思想与方案论证 . 46 4.1 设计思想 . 46 4.2 论证分析 . 50 结 论 . 51 参考文献 . 53 致 谢 . 54 ntsARM体系结构与编程技术研究 3 摘要 随着电子技术和计算机技术的发展,微控制芯片功能越来越强大,而嵌入微控制芯片的设备和系统越来越多,从而使得这种技术越来越引人注目。 ARM 嵌入式处理器是一种高性能、低功耗的 RISC芯片。 本文 将给予 ARM 做出一个全面的概述。要了解 ARM技术及 ARM芯片,要从两方面下手:第一是 ARM的指令寻址分析;第二是 ARM 的硬件组成及体系结构分析。 该课题就 ARM的由来、发展、优势及 ARM 芯片的 体系结构、指令系统、编程方法以及开发工具 进行研究。 ARM 和单片机之间有很大的联系,这里可以运用学习 80C51 的方法去了解 ARM,但是他们之间又有很多的不同之处,这个也是 ARM 存在的理由。此内容将在最后进行行探讨,找出 ARM 处理器与 80C51 芯片之间、 ARM 处理器各版本之间的联系与区别。以达到 通过此次设计掌握开发基于 ARM的应用系统的各方面的知识的目的。 关键词: ARM、体系结构、编程、指令 ntsARM体系结构与编程技术研究 4 Abstract Along with electronic technology and computer technology development,micro control chip function more and more formidable, but inserts themicro control chip the equipment and the system more and more many,thus causes this kind of technology to be more and more noticeable.ARM inserts the type processor is one kind of high performance, thelow power loss RISC chip. This article will give ARM to make a comprehensive outline. Mustunderstand the ARM technology and the ARM chip, must start from twoaspects: First is the ARM instruction addressing analysis; Second isthe ARM hardware composition and the system structure analysis. This topic on the ARM origin, the development, the superiority and theARM chip system structure, the command system, the programming methodas well as the development kit conducts the research. Between ARM andthe monolithic integrated circuit has the very big relation, here mayutilize studies 80C51 the method to understand ARM, but between themalso has very many similarity, this also is the ARM existence reason.This content finally will be entering all the various professionsdiscussion, will discover between between the ARM processor and the80C51 chip, the ARM processor various editions relation and thedifference. Achieved grasps the development through this design basedon the ARM application system various aspects knowledge goal. ntsARM体系结构与编程技术研究 5 第 1章 绪 论 嵌入式系统是指以应用为中心,以计算机为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗要求的专用计算机系统。世界上几乎所有的主要 半倒替厂商都在生产基于 ARM 体系结构的通用芯片,或在其专用芯片中嵌入 ARM 相关技术。基于 ARM 内核的处理器年产量为 5 亿个,已经成为业界的龙头。本课题将对 ARM的体系结构和编程技术进行研究。 1.1 课题背景 1.1.1 嵌入式系统的背景 嵌入式系统被定义为 :以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统的最大特点是其所具有的目的性或针对性,即每一套嵌入式系统的开发设计都有其特殊的应用场合与特定功能。这也是嵌入式系统与通用的计算机 系统最主要的区别。嵌入式系统一般指非 PC 系统,它包括硬件和软件两部分。硬件包括处理器 2微处理器、存储器及外设器件和 UO 端口、图形控制器、以太网控制器等。软件部分包括操作系统和应用程序编程,有时设计人员把两种软件部分组合在一起。应用程序控制着系统的运行和行为 ;而操作系统控制着应用程序编程与硬件的交互作用。另外,嵌入式技术与实时性有着天然的联系 :由于嵌入式系统是为特定的目的而设计的,且常常受到空间、成本、存储、带宽等条件的限制,因此,它必须最大限度地在硬件上和软件上 “ 量身定做 ”以提高效率,这样的结果最终导致了 实时性的增强。嵌入式系统的应用场合非常广泛,从家用电器,不业控制到医疗设备。相对于传统计算机系统,嵌入式系统具有以下特征 :功能单一,在需求分析或系统设计的时候能够对处理器性能、存储器容量、 UO带宽等有明确的需求指标 ;对可靠性的要求与用户对被嵌入的应用系统的可靠性要求是一致的,ntsARM体系结构与编程技术研究 6 通常非常严格 :输入输出设备特殊,往往没有键盘和显示器等与人交互的设备,嵌入式系统与通用计算机系统相比更专门化,由于应用场合广泛,其软硬件设计直接从具体应用出发,所以各种嵌入式系统之间差异巨大。此外,嵌入式系统的资源以是否满足应用需求为设 计标准,并受到应用环境的限制,所以比传统计算机系统少许多。嵌入式系统的软硬件结合非常紧密,每一个嵌入式系统都是一个与众不同的计算机系统。随着 VLSI技术的发展,软硬件之间的边界变得模糊起来,许多逻辑功能既可以通过软件实现,也可以方便的通过硬件实现。软硬件功能的划分更多的取决于开发效率,成本控制和技术本身的扩展余地。虽然嵌入式系统各不相同,但是它们也有一些常见的共性。这就是嵌入式系统的三个主要特点二差异巨大 ;资源有限 ;软硬件协同。 1.1.2 ARM 的背景 ARM( Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的 RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费 /教育类多媒体、 DSP和移动式应 用等。 ARM 公司成立于 1990 年 11 月,全称是 “Advanced RISC Machines Ltd.” ,它是由英国 Acorn 公司提供技术和 12 名工程师、美国苹果电脑和 VLSI Technology(目前已被飞利浦收购)出资合手组建的美英混血公司。 ARM的第一个客户就是苹果电脑公司,为其新开发的 Newton掌上电脑提供高速度、低功耗的 RISC(精简指令集算法)处理器。由于 ARM只有技术,缺乏资金来购买昂贵的芯片制造、封装和测试设备,因此 ARM授权伙伴公司 VLSI Technology 生产,并提供必要的技术支持,这种合作方式的初步成功也为今后 ARM的发展模式奠定了基础。 在以后的几年中, ARM凭借高超的技术和相对低廉的授权方式,赢得了不少客户的青睐,这其中包括大名鼎鼎的夏普、 GEC Plessey、德州仪器和 Cirrus Logic 等厂商。由于 ARM的授权方式灵活多变,价格相对便宜,在技术上也独树一帜 ,因此加入 ARM联盟的厂商越来越多 ,目前全球有 112家厂商在使用 ARM公司的技术授权,而以微软和 SUN为首的一批知名公司也为 ARM处理器开发软件。 2000年,全球 ARM处理器的发货量达到ntsARM体系结构与编程技术研究 7 4亿;到 2001年, ARM 处理器就拥有超过 76.8%的 RISC处理器的市场份额; 2002年则几乎垄断了全球嵌入式 RISC处理器市场。据 Dataquest的最新报告显示, 2002年 ARM公司再次成为排名第一的 IP提供商,其市场份额高出排名第二 Rambus公司约一倍左右。在 ARM的客户名单中,全是业界耳熟能详的名字:英特尔、三星 、德州仪器、摩托罗拉和美国国家半导体等,几乎涵盖了所有芯片厂商。在半导体消费普遍衰退的今天, ARM能够逆市上扬,给人们留下太多的启示。 1.2 研究方向 研究 ARM 芯片的体系结构与编程技术主要包括如下几个方向: 1、了解 ARM 公司的情况以及 ARM 技术的嵌入式系统的应用情况,对比 ARM 体系 结构的版本 2、介绍 ARM 编程模型的基本知识 3、详细研究 ARM 体系的指令系统以及寻址方式 4、掌握 ARM 汇编语言程序设计的基本方法以及 ARM 汇编器 armasm 的使用方法 5、 介绍 ARM 体系的存储系统 6、介绍 ARM/Thumb 过程调用的标准 7、介绍 ARM 汇编程序以及 C/C+程序之间相互调用的技术 8、简要介绍 ARM 体系中异常中断技术 1.3 本文的工作 对 ARM处理器的体系结构、指令系统、编程方法以及开发工具作个比较全面的研究,并通过此次设计掌握开发基于 ARM的应用系统的各方面的知识。 ntsARM体系结构与编程技术研究 8 第 2 章 ARM 指令与编程分析 在本章中,我们将重点介绍到 ARM 芯片的指令分析。 ARM 指令的寻址方式、种类、作用将做为重点研究。以此明白如何编程。 2.1 ARM 指令的寻址方式 所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。目前ARM指令系统支持如下几种常见的寻址方式。 2.1.1 立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令: ADD R0, R0, 1 ; R0 R0 1 ADD R0, R0, 0x3f ; R0 R0 0x3f 在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六 进制表示的立即数,还要求在“”后加上“ 0x”或“ &”。 2.1.2 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令: ADD R0, R1, R2 ; R0 R1 R2 该指令的执行效果是将寄存器 R1和 R2的内容相加,其结果存放在寄存器 R0中。 ntsARM体系结构与编程技术研究 9 2.1.3 寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令: ADD R0, R1, R2 ; R0 R1 R2 LDR R0, R1 ; R0 R1 STR R0, R1 ; R1 R0 在第一条指令中,以寄存器 R2的值作为操作数的地址,在存储器中取得一个操作数后与 R1相加,结果存入寄存器 R0中。 第二条指令将以 R1的值为地址的存储器中的数据传送到 R0中。 第三条指令将 R0 的值传送到以 R1的值为地址的存储器中。 2.1.4 基址变址寻址 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方 式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示: LDR R0, R1, 4 ; R0 R1 4 LDR R0, R1, 4! ; R0 R1 4、 R1 R1 4 LDR R0, R1 , 4 ; R0 R1、 R1 R1 4 LDR R0, R1, R2 ; R0 R1 R2 在第一条指令中,将寄存器 R1的内容加上 4形成操作数的有效地址,从而取得操作数存入寄存器 R0 中。 在第二条指令中,将寄存器 R1的内容加上 4形成操作数的有效地址,从而取得操作数存入寄存器 R0 中,然后, R1的内容自增 4个字节。 在第三条指令中,以寄存器 R1的内容作为操作数的有效地址,从而取得操作数存入寄存器 R0中,然后, R1的内容自增 4个字节。 在第四条指令中,将寄存器 R1的内容加上寄存器 R2的内容形成操作数的有效地址,从而取得操作数存入寄存器 R0中。 ntsARM体系结构与编程技术研究 10 2.1.5 多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多 16个通用寄存器的值。以下 指令: LDMIA R0, R1, R2, R3, R4 ; R1 R0 ; R2 R0 4 ; R3 R0 8 ; R4 R0 12 该指令的后缀 IA表示在每次执行完加载 /存储操作后, R0按字长度增加,因此,指令可将连续存储单元的值传送到 R1 R4。 2.1.6 相对寻址 与基址变址寻址方式相类似,相对寻址以程序计数器 PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令 BL采用了相对寻址方式: BL NEXT ;跳转到子程序 NEXT处执行 NEXT MOV PC, LR ;从子程序返回 2.1.7 堆栈寻址 堆栈是一种数据结构,按先进后出( First In Last Out, FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 ntsARM体系结构与编程技术研究 11 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈( Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈( Empty Stack)。 同时,根据堆栈的生成方 式,又可以分为递增堆栈( Ascending Stack)和递减堆栈( Decending Stack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式, ARM微处理器支持这四种类型的堆栈工作方式,即: 满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。 满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。 空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。 空递减堆栈: 堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。 2.2 ARM 指令集概述 ARM 微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器( PSR)处理指令、加载 /存储指令、协处理器指令和异常产生指令六大类,具体的指令及功能下表所示(表中指令为基本 ARM 指令,不包括派生的 ARM 指令)。本节对 ARM指令集的六大类指令进行详细的描述。 2.2.1 跳转指令 跳转指令用于实现程序流程的跳转,在 ARM程序中有两种方法可以实现程序流程的跳转: 使用专门的跳转指令。 直接向程序计数器 PC 写入跳转地址值。 通过向程序计数器 PC 写入跳转地址值,可以实现在 4GB的地址空间中的任意跳转,在跳转之前结合使用 MOV LR, PC ntsARM体系结构与编程技术研究 12 等类似指令,可以保存将来的返回地址值,从而实现在 4GB连续的线性地址空间的子程序调用。 ARM指令集中的跳转指令可以完成从当前指令向前或向后的 32MB 的地址空间的跳转,包括以下 4条指令: B 跳转指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换 的跳转指令 1、 B指令 B指令的格式为: B条件 目标地址 B指令 是最简单的跳转指令。一旦遇到一个 B 指令, ARM 处理器将立即跳转到给定的目标地址,从那里继续执行。注意存储在跳转指令中的实际值是相对当前 PC值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。它是 24 位有符号数,左移两位后有符号扩展为 32 位,表示的有效偏移为 26 位 (前后 32MB的地址空间 )。以下指令: B Label ;程序无条件跳转到标号 Label处执行 CMP R1, 0 ;当 CPSR寄存器中的 Z条件码置位时,程序跳转到标号 Label 处执行 BEQ Label 2、 BL指令 BL指令的格式为: BL条件 目标地址 BL 是另一个跳转指令,但跳转之前,会在寄存器 R14中保存 PC的当前内容,因此,可以通过将 R14 的内容重新加载到 PC中,来返回到跳转指令之后的那个指令处执行。该指令是实现子程序调用的一个基本但常用的手段。以下指令: BL Label;当程序无条件跳转到标号 Label处 执行时,同时将当前的 PC 值保存到 R14中 ntsARM体系结构与编程技术研究 13 3、 BLX指令 BLX指令的格式为: BLX 目标地址 BLX指令从 ARM指令集跳转到指令中所指定的目标地址,并将处理器的工作状态有 ARM状态切换到 Thumb状态 ,该指令同时将 PC的当前内容保存到寄存器 R14中。因此,当子程序使用 Thumb指令集,而调用者使用 ARM指令集时,可以通过 BLX指令实现子程序的调用和处理器工作状态的切换。同时,子程序的返回可以通过将寄存器 R14值复制到 PC中来完成。 4、 BX指令 BX指令的格式为: BX条件 目标地址 BX指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是 ARM指令,也可以是 Thumb指令。 2.2.2 数据处理指令 数据处理指令可分为数据传送指令、算术逻辑运算指令和比较指令等。数据传送指令用于在寄存器和存储器之间进行数据的双向传输。算术逻辑运算指令完成常用的算术与逻辑的运算,该类指令不但将运算结果保存在目的寄存器中,同时更新 CPSR中的相应条件标志位。比较指令不保存运算结果,只更新 CPSR中相应的条件标志位。数据处理指令包括: MOV 数据传送指令 MVN 数据取反传送指令 CMP 比较指令 CMN 反值比较指令 TST 位测试指令 TEQ 相等测试指令 ADD 加法指令 ADC 带进位加法指令 SUB 减法指令 SBC 带借位减法指令 RSB 逆向减法指令 RSC 带借位的逆向减法指令 AND 逻辑与指令 ORR 逻辑或指令 EOR 逻辑异或指令 BIC 位清除指令 ntsARM体系结构与编程技术研究 14 1、 MOV指令 MOV指令的格式为: MOV条件 S 目的寄存器,源操作数 MOV指令可完成从另一个寄 存器、被移位的寄存器或将一个立即数加载到目的寄存器。其中 S 选项决定指令的操作是否影响 CPSR中条件标志位的值,当没有 S时指令不更新 CPSR 中条件标志位的值。指令示例: MOV R1, R0 ;将寄存器 R0的值传送到寄存器 R1 MOV PC, R1 ;将寄存器 R14的值传送到 PC,常用于子程序返回 MOV R1, R0, LSL 3;将寄存器 R0的值左移 3位后传送到 R1 2、 MVN指令 MVN指令的格式为: MVN条件 S 目的寄存器,源操作数 MVN指令可完成从另一个寄存器、被移位的寄存 器、或将一个立即数加载到目的寄存器。与 MOV 指令不同之处是在传送之前按位被取反了,即把一个被取反的值传送到目的寄存器中。其中 S决定指令的操作是否影响 CPSR中条件标志位的值,当没有 S时指令不更新 CPSR中条件标志位的值。指令示例: MVN R0, 0 ; 将立即数 0取反传送到寄存器 R0中,完成后 R0=-1 3、 CMP指令 CMP指令的格式为: CMP条件 操作数 1,操作数 2 CMP指令用于 把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新 CPSR中条件标志位的值。该指令进 行一次减法运算,但不存储结果,只更改条件标志位。标志位表示的是操作数 1与操作数 2的关系 (大、小、相等 ),例如,当操作数 1大于操作操作数 2,则此后的有 GT 后缀的指令将可以执行。 指令示例: ntsARM体系结构与编程技术研究 15 CMP R1, R0 ;将寄存器 R1的值与寄存器 R0的值相减,并根据结果设置 CPSR的标志位 CMP R1, 100 ;将寄存器 R1的值与立即数 100相减,并根据结果设置 CPSR的标志位 4、 CMN指令 CMN指令的格式为: CMN条件 操作数 1,操作数 2 CMN指令用于 把一个寄存器的内容和另一个寄存器的内容或立 即数取反后进行比较,同时更新 CPSR中条件标志位的值。该指令实际完成操作数 1和操作数 2相加,并根据结果更改条件标志位。 指令示例: CMN R1, R0 ;将寄存器 R1的值与寄存器 R0的值相加,并根据结果设置 CPSR的标志位 CMN R1, 100 ;将寄存器 R1的值与立即数 100相加,并根据结果设置 CPSR的标志位 5、 TST指令 TST指令的格式为: TST条件 操作数 1,操作数 2 TST指令用于 把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新 CPSR中条件标志 位的值。操作数 1是要测试的数据,而操作数 2是一个位掩码,该指令一般用来检测是否设置了特定的位。 指令示例: TST R1, 1 ;用于测试在寄存器 R1中是否设置了最低位(表示二进制数) TST R1, 0xffe ;将寄存器 R1的值与立即数 0xffe按位与,并根据结果设置 CPSR的标志位 6、 TEQ指令 TEQ指令的格式为: ntsARM体系结构与编程技术研究 16 TEQ条件 操作数 1,操作数 2 TEQ指令用于 把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新 CPSR中条件标志位的值 。该指令通常用于比较操作数 1和操作数 2是否相等。 指令示例: TEQ R1, R2 ;将寄存器 R1的值与寄存器 R2的值按位异或,并根据结果设置 CPSR 的标志位 7、 ADD指令 ADD指令的格式为: ADD条件 S 目的寄存器,操作数 1,操作数 2 ADD指令用于 把两个操作数相加,并将结果存放到目的寄存器中。操作数 1应是一个寄存器,操作数 2可以是一个寄存器,被移位的寄存器,或一个立即数。 指令示例: ADD R0, R1, R2 ; R0 = R1 + R2 ADD R0, R1, #256 ; R0 = R1 + 256 ADD R0, R2, R3, LSL#1 ; R0 = R2 + (R3 ,操作数 MSR指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。 用于设置程序状态寄存器中需要操作的位, 32位的程序状态寄存器可分为 4个域: 位 31: 24为条件标志位域,用 f表示; 位 23: 16为状态位域,用 s表示; ntsARM体系结构与编程技术研究 24 位 15: 8为扩展位域,用 x表示; 位 7: 0为控制位域,用 c表示; 该指令通常 用于恢复或改变程序状态寄存器的内容,在使用时,一般要在 MSR指令中指明将要操作的域。 指令示例: MSR CPSR, R0 ;传送 R0的内容到 CPSR MSR SPSR, R0 ;传送 R0的内容到 SPSR MSR CPSR_c, R0 ;传送 R0的内容到 SPSR,但仅仅修改 CPSR中的控制位域 2.2.5 加载 /存储指令 ARM微处理器支持加载 /存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。常用的加载存储指令如下: LDR 字数据加载 指令 LDRB 字节数据加载指令 LDRH 半字数据加载指令 STR 字数据存储指令 STRB 字节数据存储指令 STRH 半字数据存储指令 1、 LDR指令 LDR指令的格式为: LDR条件 目的寄存器, LDR指令用于从存储器中将一个 32 位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取 32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器 PC作为目的寄存器时,指令从存储器中读取的字数 据被当作目的地址,从而可以实现程序流程的跳转。该指令在程序设计中比较常用,且寻址方式灵活多样,请读者认真掌握。 ntsARM体系结构与编程技术研究 25 指令示例: LDR R0, R1 ;将存储器地址为 R1的字数据读入寄存器 R0。 LDR R0, R1, R2 ;将存储器地址为 R1+R2的字数据读入寄存器 R0。 LDR R0, R1, 8 ;将存储器地址为 R1+8的字数据读入寄存器 R0。 LDR R0, R1, R2 ! ;将存储器地址为 R1+R2的字数据读入寄存器 R0,并将新地址 R1 R2写入 R1。 LDR R0, R1, 8 ! ;将存储器地址为 R1+8的字数据读入寄存器 R0,并将新地址 R1 8写入 R1。 LDR R0, R1, R2 ;将存储器地址为 R1的字数据读入寄存器 R0,并将新地址 R1 R2写入 R1。 LDR R0, R1, R2, LSL 2! ;将存储器地址为 R1 R2 4的字数据读入寄存器 R0,并将新地址 R1 R2 4写入 R1。 LDR R0, R1, R2, LSL 2 ;将存储器地址为 R1的字数据读入寄存器 R0,并将新地址 R1 R2 4写入 R1。 2、 LDRB指令 LDRB指令的格式为: LDR条件 B 目的寄存器, LDRB指令用于从存储器中将一个 8位的字节数据传送到目的寄存器中,同时将寄存器的高 24位清零。该指令通常用于从存储器中读取 8位的字节数据到通用寄存器,然后对数据进行处理。当程序计数器 PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。 指令示例: LDRB R0, R1 ;将存储器地址为 R1的字节数据读入寄存器 R0,并将 R0的高 24位清零。 LDRB R0, R1, 8; 将存储器地址为 R1 8的字节数据读入寄存器 R0,并将 R0的高 24位清零。 3、 LDRH指令 LDRH指令的格式为: ntsARM体系结构与编程技术研究 26 LDR条件 H 目的寄存器, LDRH指令用于从存储器中将一个 16 位的半字数据传送到目的寄存器中,同时将寄存器的高 16 位清零。该指令通常用于从存储器中读取 16位的半字数据到通用寄存器,然后对数据进行处理。当程序计数器 PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。 指令示例: LDRH R0, R1 ;将存储器地址为 R1 的半字数 据读入寄存器 R0,并将 R0的高16位清零。 LDRH R0, R1, 8 ;将存储器地址为 R1 8的半字数据读入寄存器 R0,并将R0的高 16位清零。 LDRH R0, R1, R2 ;将存储器地址为 R1 R2的半字数据读入寄存器 R0,并将 R0的高 16 位清零。 4、 STR指令 STR指令的格式为: STR条件 源寄存器, STR指令用于从源寄存器中将一个 32位的字数据传送到存储器中。该指令在程序设计中比较常用,且寻址方式灵活多样,使用方式可参考指令 LDR。 指令示例: STR R0, R1, 8 ;将 R0中的字数据写入以 R1为地址的存储器中,并将新地址 R1 8 写入 R1。 STR R0, R1, 8 ;将 R0中的字数据写入以 R1 8为地址的存储器中。 5、 STRB指令 STRB指令的格式为: STR条件 B 源寄存器, STRB指令用于从源寄存器中将一个 8位的字节数据传送到存储器中。该字节数据为源寄存器中的低 8位。 指令示例: STRB R0, R1 ;将寄存器 R0中的字节数据写入以 R1为地址的存储器中。 ntsARM体系结构与编程技术研究 27 STRB R0, R1, 8 ;将寄存器 R0中的字节数据写入以 R1 8为地储器中。 6、 STRH指令 STRH指令的格式为: STR条件 H 源寄存器, STRH指令用于从源寄存器中将一个 16位的半字数据传送到存储器中。该半字数据为源寄存器中的低 16位。 指令示例: STRH R0, R1 ;将寄存器 R0中的半字数据写入以 R1 为地址的存储器中。 STRH R0, R1, 8 ;将寄存器 R0中的半字数据写入以 R1 8为地址的存储器中。 2.2.6 批量数据加载 /存储指令 ARM微处理器所支持批量数据加载 /存 储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据,批量加载指令用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作。常用的加载存储指令如下: 1、 LDM(或 STM)指令 LDM(或 STM)指令的格式为: LDM(或 STM) 条件 类型 基址寄存器 ! ,寄存器列表 LDM(或 STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中, 类型 为以下几种情况: IA 每 次传送后地址加 1; IB 每次传送前地址加 1; DA 每次传送后地址减 1; DB 每次传送前地址减 1; FD 满递减堆栈; ED 空递减堆栈; FA 满递增堆栈; EA 空递增堆栈; ntsARM体系结构与编程技术研究 28 ! 为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。 基址寄存器不允许为 R15,寄存器列表可以为 R0 R15的任意组合。 为可选后缀,当指令为 LDM且 寄存器列表中包含 R15, 选用该后缀时表示:除了正常的数据传送之外, 还将 SPSR复制到 CPSR。同时,该后缀还表示传入或传出的是用户模式下的寄存器,而不是当前模式下的寄存器。 指令示例: STMFD R13!, R0, R4-R12, LR ;将寄存器列表中的寄存器( R0, R4到 R12, LR)存入堆栈。 LDMFD R13!, R0, R4-R12, PC ;将堆栈内容恢复到寄存器( R0, R4到 R12, LR)。 2.2.7 数据交换指令 ARM微处理器所支持数据交换指令能在存储器和寄存器之间交换数据。数据交换指令有如下两条: SWP 字数据交换指令 SWPB 字节数据交换指令 1、 SWP指令 SWP指令的格式为: SWP条件 目的寄存器,源寄存器 1, 源寄存器 2 SWP指令用于将 源寄存器 2所指向的存储器中的字数据传送到目的寄存器中,同时将 源寄存器 1中的字数据传送到源寄存器 2所指向的存储器中。显然,当 源寄存器 1和目的寄存器为同一个寄存器时,指令交换该寄存器和存储器的内容。 指令示例: ntsARM体系结构与编程技术研究 29 SWP R0, R1, R2 ;将 R2所指向的存储器中的字数据传送到 R0,同时将 R1 中的字数据传送到R2所指向的存储单 元。 SWP R0, R0, R1 ;该指令完成将 R1所指向的存储器中的字数据与 R0 中的字数据交换。 2、 SWPB指令 SWPB指令的格式为: SWP条件 B 目的寄存器,源寄存器 1, 源寄存器 2 SWPB指令用于将 源寄存器 2所指向的存储器中的字节数据传送到目的寄存器中,目的寄存器的高 24清零,同时将 源寄存器 1中的字节数据传送到源寄存器 2所指向的存储器中。显然,当 源寄存器 1和目的寄存器为同一个寄存器时,指令交换该寄存器和存储器的内容。 指令示例:
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:毕业设计21ARM体系结构与编程技术研究
链接地址:https://www.renrendoc.com/p-546318.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!