《ARM体系结构与编程》论文._第1页
《ARM体系结构与编程》论文._第2页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM 体系结构与编程论文ARM指令摘要:在此论文中,简单了列出一些ARM指令的命令。包括跳转,数据处理 乘法与乘加,程序状态寄存器存取,寄存器加载/存储,移位元,协处 理器和和Thumb指令。最后有总结了ARM指令极中需要注意和不太容 易理解的地方。关键字:Thumb指令,跳转指令,堆栈寻址,立即数寻址The ARM instruction setAbstract:In this paper, a simple list of in structio ns comma nds. The ARM In cludi ng jump, dataprocess ing method, process

2、 and by state registers access, storage, load in g/shift register,Thumb and processor in struct ions. Fin ally summarizes the ARM in structio ns in a n eedto pay atte nti on and not too easy to un dersta nd.Key words: Thumb in structi on, jump in structi on, stack address in g, immediately severalad

3、dress ing.1.1 ARM微处理器的指令集概述ARM指令集*跳转指令:B跳转指令。BL带返回的跳转指令。BLX带返回和状态切换的跳转指令BX带状态切换的跳转指令。数据处理指令MOV数据传送指令MVN数据取反传送指令CMP比较指令CMN反值比较指令TST位测试指令TEQ 相等测试指令ADD 加法指令 28ADC 带进位加法指令SUB 减法指令SBC 带借位减法指令RSB 逆向减法指令RSC 带借位的逆向减法指令AND 逻辑与指令ORR 逻辑或指令EOR 逻辑互斥指令BIC 位清除指令乘法指令与乘加指令MUL 32 位乘法指令MLA 32 位乘加指令SMULL 64 位有符号数乘法指令SM

4、LAL 64 位有符号数乘加指令UMULL 64 位无符号数乘法指令UMLAL 64 位无符号数乘加指令*程序状态寄存器存取指令MRS 程序状态寄存器到通用寄存器的数据传送指令。MSR 通用寄存器到程序状态寄存器的数据传送指令。*寄存器加载/存储指令:LDR 字数据加载指令DRB 字节数据加载指令LDRH 半字数据加载指令STR 字数据存储指令STRB 字节数据存储指令STRH 半字数据存储指令LDM 连续数据加载指令STM 连续数据存储指令数据交换指令SWP 字数据交换指令SWPB 字节数据交换指令 *移位元指令:LSL 逻辑左移ASL 算术左移LSR 逻辑右移ASR 算术右移ROR 循环右

5、移RRX 带扩充的循环右移 44*协处理器指令CDP 协处理器数操作指令LDC 协处理器数据加载指令STC 协处理器数据存储指令 46MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令MRC 协处理器寄存器到 ARM 处理器寄存器的数据传送指令1.2 Thumb 指令及应用Thumb 指令集是 ARM 指令集的一个子集,所有的 Thumb 指令都有对应的 ARM指令。它舍弃了 ARM 指令集的一些特性如大多数的 Thumb 指令是无条件执行的,而几乎所有的 ARM 指令都是有条 件执行的;大多数的 Thumb 数据处理指令的目的寄存器与其中一个源寄存器 相同。Thumb 指令集在保留

6、32 代码优势的同时,大大的节省了系统的存储空间。 Thumb 指令集中操作数仍然是 32 位,指令地址也为 32 位,指令编码 16 位。由于 Thumb 指令的长度为 16 位,即只用 ARM 指令一半的位数来实现同样的 功能,所以,要实现特定的程序功能,所需的 Thumb 指令的条数较 ARM 指令 多。1.2.1 Thumb 指令优势在一般的情况下,Thumb 指令与 ARM 指令的时间效率和空间效率关系为:-Thumb 代码所需的存储空间约为 ARM 代码的 60%70% ;-Thumb 代码使用的指令数比 ARM 代码多约 30%40% ;-若使用 32 位的存储器,ARM 代码比

7、 Thumb 代码快约 40% ;-若使用 16 位的存储器,Thumb 代码比 ARM 代码快约 40%50%;-与 ARM 代码相比较,使用 Thumb 代码,存储器的功耗会降低约 30%。122. Thumb 指令集的局限性条件跳转限制在 256byte 偏移范围内,无条件跳转限制为 4K 偏移范围内,而 ARM 为 32Mbytes 偏移。它不支持乘法和累加指令;没有协处理器指令;没有信 号量指令;没有访问CPSR 指令。1.3 对 ARM 指令的一些总结ARM 指令集是 32 位的,程序的启动都是从 ARM 指令集开始,包括所有异常 中断都是自动转化为 ARM 状态,并且所有的指令都

8、可以是有条件执行的。ARM 指令集是 Load/Store 型的,只能通过 Load/Store 指令实现对系统存储器的访 问,而其他的指令都是基于处理器内部的寄存器操作完成的,这和INTEL 汇编是不同的,初学者很不易理解。(1 指令的后缀:S可选后缀,若指定 S,则根据指令执行的结果更新 CPSR 中的条件码。很多初 学着不知道怎么更新,若这条指令执行完以后,对 ARM 程序状态寄存器的条件码 标志(N, Z,C,V)的影响。!表示在完成数据操作以后,将更新基址寄存器,并且不消耗额外的时间。如:LDR RO, R1, #4他相当于 R0 R1,操作完毕后,R1 = R1+4。不需要!号。(

9、3 堆栈寻址一定要注意:堆栈操作总是要指定自动变址的,否则会覆盖以前保存的内容。(4 乘法指令1、乘法指令不支持第二操作数为立即数。2、结果寄存器不能同时作为第一源寄存器32 位: MUL Rd,Rm,RsMUL Rd , Rm, Rs /Rd 和 Rm 不能为同一寄存器64 位:MUL RdHi , RdLo, Rm, Rs /RdHi、RdLo 和 Rm 不能为同一寄存器, RdHi 和RdLo 不能为同一寄存器。(4 跳转指令1、BL 和 BLX 跳转是硬件自动将下一条指令地址保存到 LR ( R14)中,不需要自 己写指令。2、 当指令跳转到 32MB 地址空间以外时,将产生不可预料的结果。ARM 的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论