第3篇-1 ARM7指令系统.pptVIP

  • 27
  • 0
  • 约 58页
  • 2017-06-03 发布于湖北
  • 举报
3.1 指令集介绍 ARM指令集——基本指令格式 3.1 指令集介绍 ARM指令集——第2个操作数 3.1 指令集介绍 ARM指令集——第2个操作数 3.1 指令集介绍 ARM指令集——第2个操作数 3.1 指令集介绍 ARM指令集——第2个操作数 3.1 指令集介绍 ARM指令集——第2个操作数 3.1 指令集介绍 ARM指令集——第2个操作数 3.1 指令集介绍 ARM指令集——条件码 3.1 指令集介绍 ARM指令集——条件码 3.1 指令集介绍 ARM指令集——存储器访问指令 (3)LDR和STR ----双字:加载/存储两个相邻的寄存器,64位双字。其句法有4种: Op {cond} D Rd,[Rn] 零偏移 Op {cond} D Rd,[Rn,offset] {!} 前索引偏移 Op {cond} D Rd,label 程序相对偏移 Op {cond} D {T} Rd,[Rn],offset 后索引偏移 其中: Rd 加载/存储寄存器中的一个,另一个是R(d+1)。Rd必须是偶数寄存器,且不是R14。 Rn 除非指令为零偏移,或不带写回的前索引,否则,Rn不允许与Rd和R(d+1)相同。 label label必须是在当前指令的上下256字节范围内。 例如: LDRD R6,[R11] ;R6←[R11],R7←[R11+4] STRD R4,[R9,#24] ;R4→[R9+24],R5→[R9+28] 3.1 指令集介绍 ARM指令集——ARM数据处理指令 ARM存储器访问指令——多寄存器存取 满递增 满递减 空递增 空递减 说明 LDMIB LDMDB LDMIA LDMDA 数据块传送 加载 空递减 LDMEA STMFD STMDB 空递增 LDMED STMFA STMIB 满递增 LDMFD STMEA STMIA 满递减 LDMFA STMED STMDA 说明 堆栈操作 出栈 堆栈操作 压栈 数据块传送 存储 ;使用数据块传送指令进行堆栈操作 STMDA R0!,{R5-R6} . . . LDMIB R0!,{R5-R6} ;使用堆栈指令进行堆栈操作 STMED R13!,{R5-R6} . . . LDMED R13!,{R5-R6} 两段代码的执行结果是一样的,但是使用堆栈指令的压栈和出栈操作编程很简单(只要前后一致即可),而使用数据块指令进行压栈和出栈操作则需要考虑空与满、加与减对应的问题。 堆栈操作和数据块传送指令类似,也有4种模式,它们之间的关系如下表所示: SWP{cond}B Rd←[Rn],[Rn]←Rm (Rn≠Rd或Rm) 寄存器和存储器字节数据交换 SWPB Rd,Rm,Rn SWP{cond} Rd←[Rn],[Rn]←Rm (Rn≠Rd或Rm) 寄存器和存储器字数据交换 SWP Rd,Rm,Rn 条件码位置 操作 说明 助记符 ARM存储器访问指令——寄存器和存储器交换指令 SWP指令用于将一个内存单元(该单元地址放在寄存器Rn中)的内容读取到一个寄存器Rd中,同时将另一个寄存器Rm的内容写入到该内存单元中。使用SWP可实现信号量操作。 指令格式如下: SWP{cond}{B} Rd,Rm,[Rn] 其中,B为可选后缀,若有B,则交换字节,否则交换32位字;Rd用于保存从存储器中读入的数据;Rm的数据用于存储到存储器中,若Rm与Rd相同,则为寄存器与存储器内容进行互换;Rn为要进行数据交换的存储器地址,Rn不能与Rd和Rm相同。 ARM存储器访问指令——寄存器和存储器交换指令 SWP指令应用示例: SWP R1,R1,[R0] ;将R1的内容与R0指向的存储单元的内容进行互换 SWPB R1,R2,[R0] ;将R0指向的存储单元低字节数据读取到R1中 ;(高24位清零),并将R2的内容写入到该内存单元中 ;(最低字节有效) ARM指令目录 1.指令格式 2.条件码 3.存储器访问指令 4.数据处理指令 5.乘法指令 6.ARM分支指令 7.杂项指令 8.伪指令 数据处理指令大致可分为3类: 数据传送指令; 算术逻辑运算指令; 比较指令。 数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均可选择使用S后缀,以使指令影响状态标志。 ARM数据处理指令——指令编码 带进位加法 ADC 0101 带进位减法指令 SBC 0110

文档评论(0)

1亿VIP精品文档

相关文档