arm+微处理器的指令集--指令系统

arm+微处理器的指令集--指令系统

ID:31995561

大小:1.31 MB

页数:146页

时间:2019-01-30

arm+微处理器的指令集--指令系统_第1页
arm+微处理器的指令集--指令系统_第2页
arm+微处理器的指令集--指令系统_第3页
arm+微处理器的指令集--指令系统_第4页
arm+微处理器的指令集--指令系统_第5页
资源描述:

《arm+微处理器的指令集--指令系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ARM微处理器的指令集1.ARM处理器寻址方式2.ARM指令集Resources:http://www.peter-cockerell.net/aalp/html/frames.htmlhttp://www.heyrick.co.uk/assembler/ARM微处理器的指令集ARM微处理器的工作状态有两种:ARM状态,此时处理器执行32位的、字对齐的ARM指令;Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。ARM

2、微处理器的指令集ARM指令集支持ARM核所有的特性,具有高效、快速的特点。Thumb指令集具有灵活、小巧的特点。ARM状态下的寄存器组织(2)37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。用户模式、系统模式快速中断模式管理模式数据访问终止模式外部中断模式未定义指令中止模式未分组寄存器R0~R7在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊用途。在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。分组寄存器R8~R12R8~R

3、12:每个寄存器对应两个不同的物理寄存器当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。分组寄存器R13~R14R13、R14:每个寄存器对应6个不同的物理寄存器其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式堆栈指针—R13R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初

4、始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复子程序连接寄存器—R14子程序连接寄存器或连接寄存器LR。当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。BLSUB1……SUB1:STMFDSP!,{,LR}/*将R14存入堆

5、栈*/……LDMFDSP!,{,PC}/*完成子程序返回*/程序计数器PC(R15)ARM状态下,位[1:0]为0,位[31:2]用于保存PC;Thumb状态下,位[0]为0,位[31:1]用于保存PC;R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。程序状态寄存器(CPSR/SPSR)寄存器R16用作CPSR(当前程序状态寄存器),

6、CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。1ARM处理器寻址方式寻址方式分类寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻

7、址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下:MOVR1,R2;将R2的值存入R1SUBR0,R1,R2;将R1的值减去R2的值,结果保存到R00xAA0x55R2R11ARM处理器寻址方式寻址方式分类——寄存器寻址MOVR1,R20xAA立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻

8、址指令举例

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。