003 ARM THUMB指令.ppt


文档分类:IT计算机 | 页数:约50页 举报非法文档有奖
1/50
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/50
文档列表 文档介绍
003_ARM_THUMB指令ARM及Thumb指令集议程ARM指令集 Thumb指令集 v5TE体系结构扩展ARM指令可以通过添加适当的条件码前缀来达到条件执行的目的。这样可以提高代码密度,减少分支跳转指令数目,提高性能。CMPr3,#0CMPr3,#0 BEQskipADDNEr0,r1,r2 ADDr0,r1,r2 skip默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。CMP不需要增加“S”就可改变相应的标志位。 loop … SUBSr1,r1,#1 BNEloop条件执行及标志位如果Z标志清零则跳转R1减1,并设置标志位条件码不等于(Notequal)无符号的大于或等于无符号的小于负数(Minus)等于(Equal)溢出(Overflow)没溢出无符号的大于无符号的小于或大于正数或零小于(LessThan)大于(GreaterThan)小于等于总是执行(Always)大于等于EQNECS//LOPLVSHILSGELTGTLEALMIVCSuffix描述Z=0C=1C=0Z=1测试的标志位N=1N=0V=1V=0C=1&Z=0C=0orZ=1N=VN!=VZ=0&N=VZ=1orN=!V下表为所有可能的条件码:注意:AL为默认状态,不需要单独指出条件执行示例一系列的指令都使用条件指令 if(a==0)func(1); CMPr0,#0 MOVEQr0,#1 BLEQfunc 置标志位,再使用不同的条件码 if(a==0)x=0; if(a>0)x=1; CMPr0,#0 MOVEQr1,#0 MOVGTr1,#1 使用条件比较指令 if(a==4||a==10)x=0; CMPr0,#4 CMPNEr0,#10 MOVEQr1,#0Branch: B{<cond>}labelBranchwithLink: BL{<cond>}subroutine_label处理器核按偏移量左移两位,符号扩展,再把该值加到当前PC寄存器内跳转范围:±32Mbyte如何执行长跳转?2831240Cond101L偏移量条件码区域Linkbit 0=Branch 1=Branchwithlink232527分支指令数据处理指令包括:算术指令: ADD ADC SUB SBC RSB RSC逻辑指令: AND ORR EOR BIC比较指令: CMP CMN TST TEQ数据搬移: MOV MVN上述指令只能对寄存器操作,不能针对存储器。 语法: <操作>{<cond>}{S}Rd,Rn,Operand2只有比较指令影响标志位-不指定Rd数据搬移不指定Rn第二个操作数通过桶型移位器送到ALU中。桶型移位器DestinationCF0DestinationCFLSL:LogicalLeftShiftASR:ArithmeticRightShift(无符号数)乘2除2,并保留符号位DestinationCF...0DestinationCFLSR:LogicalShiftRightROR:RotateRight(无符号数)除2位轮换DestinationRRX:RotateRightExtended位轮换,从CF到MSB都参与操作CF寄存器,:5bit无符号整数放在另一个寄存器的低字节用于常数乘法立即数8bit,大小范围0-255。右移偶数位允许直接加载32-bit常数到寄存器中。结果操作数1Barrel Shifter操作数2ALU桶型移位器: 第二个操作数没有任何一条ARM指令可包括一个32bit的立即数所有的ARM指令都是32bits固定长度数据处理指令格式中,第二个操作数有12位4bit移位值(0-15)乘于2,得到一个范围在0-30,步长为2的移位值。记住一条准则:“最后8位一定要移动偶数位”.07118immed_8Shifter RORrotx2QuickQuiz:0xe3a004ff MOVr0,#???立即数(1)

003 ARM THUMB指令 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数50
  • 收藏数0 收藏
  • 顶次数0
  • 上传人rovend
  • 文件大小469 KB
  • 时间2019-09-12
最近更新