3-ARM指令系统讲解.ppt

ARM数据处理指令:算术运算 ARM数据处理指令:算术运算 ARM数据处理指令:算术运算 ARM数据处理指令:算术运算 ARM数据处理指令:算术运算 ARM数据处理指令:算术运算 ARM数据处理指令:逻辑运算指令 ARM数据处理指令:逻辑运算指令 ARM数据处理指令:逻辑运算指令 ARM数据处理指令:逻辑运算指令 说明: 在编写Thumb指令时,先要使用伪指令CODEl6声明,而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。 编写ARM指令时,则可使用伪指令CODE32声明。 Thumb指令集没有协处理器指令、信号量指令以及访问CPSR或SPSR的指令,没有乘加指令及64位乘法指令等,且指令的第二操作数受到限制;除了分支指令B有条件执行功能外,其它指令均为无条件执行;大多数Thumb数据处理指令采用2地址格式。 1. 分支指令: 2. 数据处理指令: 数据处理指令是对通用寄存器进行操作。在大多数情况下,操作的结果须放人其中一个操作数寄存器中,而不是第3个寄存器中。 数据处理操作比ARM状态的更少。 访问寄存器R8~R15受到一定限制。 除MOV和ADD指令访问器R8~R15外,其它数据处理指令总是更新CPSR中的ALU状态标志。 访问寄存器R8~R15的Thumb数据处理指令不能更新CPSR中的ALU状态标志。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3.6 ARM转移指令 ARM转移指令 在ARM处理器中,有两种方法可以实现程序的转移。一种是直接向程序计数器PC赋值,另一种是通过转移指令跳转。ARM转移指令共有4种指令。 B指令:跳转转移指令,类似于x86的JMP指令; BL指令:带链接的转移指令,类似于x86的CALL指令,调用子程序; BX指令:带状态切换的跳转转移指令,实现ARM与Thumb之间的状态切换; BLX指令:带状态切换的带链接的转移指令,实现ARM与Thumb之间的状态切换的同时,调用子程序; 3.6 ARM转移指令 1.B和BL指令 B指令完成简单的跳转,跳转到指令中给定的地址。BL是转移链接指令,跳转的同时,把BL指令后面紧接着的一条指令的地址保存到连接寄存器LR(R14)。 指令格式 基本格式:B{L}{Cond} Target Addr 格式说明 Cond缺省时,是AL无条件转移; Target Addr是目标地址,一般是程序标号; 转移和转移链接指令目标地址的计算方法:先对指令中有符号的24位偏移地址进行符号扩展,然后在左移2位进行字对齐,最后将其加到PC中得到跳转的目标地址。 转移指令的跳转范围为:±32MB; 3.6 ARM转移指令 2.BX和BLX指令 BX和BLX指令在完成转移的同时,实现状态切换。BX指令完成简单的跳转和状态切换;BLX指令在跳转的同时,把BLX指令后面紧接着的一条指令的地址保存到连接寄存器LR(R14)并进行状态切换。 指令格式 寄存器型格式:B{L}X{Cond} Rm 立即数型格式:BLX Target Addr 格式说明 寄存器型中,Rm的值是目标地址,Rm的第[0]位Rm[0]装入CPSR的T位,实现状态转换;Rm的第[3:1]位装入PC,实现转移; 如果Rm[0]=1,则处理器状态将改为(或保持在)Thumb状态并将Rm[0]=0,然后从Rm中的地址开始执行Thumb指令; 3.6 ARM转移指令 2.BX和BLX指令 格式说明 如果Rm[0]=0,则处理器状态将改为(或保持在)ARM状态并将Rm[1]=0,然后从Rm中的地址开始执行ARM指令; 寄存器型中,Cond缺省时,是AL无条件转移; 立即数型中,BLX指令只能无条件执行。 Target Addr是目标地址,一般是程序标号; 转移和转移链接指令目标地址的计算方法:先对指令中有符号的24位偏移地址进行符号扩展,然后在左移2位进行字对齐,最后将其加到PC中得到跳转的目标地址,H位也加到PC的第1位,实现半字对齐。而这目标地址总是Thumb指令; V5T之后的处理器才能实现BLX的任意形式; 转移指令的跳转范围为:±32MB; 3.7 ARM异常中断指令指令 ARM异常中断指令指令 异常中断指令有: 软件中断指令SWI(SoftWare Interrupt); 断点中断指令BKPT。 SWI用于产生SWI异常中断,可以用来实现在用户模式下对操作系统中的特权模式的程序进行调用,因此常称为监控调用。BKPT主要用于产生软件

文档评论(0)

1亿VIP精品文档

相关文档