下载此文档

ARM及THUMB指令集.ppt


文档分类:IT计算机 | 页数:约40页 举报非法文档有奖
1/40
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/40 下载此文档
文档列表 文档介绍
ARM及Thumb指令集
课程安排
ARM指令集
Thumb指令集
v5TE体系结构扩展
ARM指令编码格式
说明
Cond
指令执行的条件编码
Opcode
指令操作符编码
S
决定指令的操作是否影响CPSR的值
Rd
操作目标寄存器编码
Rn
包含第一操作数的寄存器编码
Shifter_operand
表示第二操作数
cond
001
opcode
s
Rn
Rd
Shifter_operand
31 28 27 25 24 21 20 19 16 15 12 11 8 7 0
ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。
这样可以提高代码密度,减少分支跳转指令数目,提高性能。
CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip
默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。 CMP不需要增加 “S”就可改变相应的标志位。
loop … SUBS r1,r1,#1 BNE loop
条件执行及标志位
如果 Z标志清零则跳转
R1减1,并设置标志位
Condition Codes
不等于(Not equal)
无符号的大于或等于
无符号的小于
负数(Minus)
等于(Equal)
溢出(Overflow)
没溢出
无符号的大于
无符号的小于或大于
正数或零
小于(Less Than)
大于(Greater Than)
小于等于
总是执行(Always)
大于等于
EQ
NE
CS/HS
CC/LO
PL
VS
HI
LS
GE
LT
GT
LE
AL
MI
VC
Suffix
描述
Z=0
C=1
C=0
Z=1
测试的标志位
N=1
N=0
V=1
V=0
C=1 & Z=0
C=0 or Z=1
N=V
N!=V
Z=0 & N=V
Z=1 or N=!V
下表为所有可能的条件码:
注意:AL为默认状态,不需要单独指出
条件执行示例
一系列的指令都使用条件指令
if (a==0) func(1);
CMP r0,#0 MOVEQ r0,#1 BLEQ func
置标志位,再使用不同的条件码
if (a==0) x=0; if (a>0) x=1;
CMP r0,#0 MOVEQ r1,#0 MOVGT r1,#1
使用条件比较指令
if (a==4 || a==10) x=0;
CMP r0,#4 CMPNE r0,#10 MOVEQ r1,#0
Branch : B{<cond>} label
Branch with Link : BL{<cond>} subroutine_label
处理器把偏移量左移两位,进行符号扩展后再与PC相加
跳转范围:± 32 Mbyte
如何执行长跳转?
28
31
24
0
Cond 1 0 1 L 偏移量
条件码区域
Link bit 0 = Branch
1 = Branch with link
23
25
27
分支指令
数据处理指令
包括:
算术指令: ADD ADC SUB SBC RSB RSC
逻辑指令: AND ORR EOR BIC
比较指令: CMP CMN TST TEQ
数据搬移: MOV MVN
上述指令只能对寄存器操作,不能针对存储器。
语法:
<操作>{<cond>}{S} Rd, Rn, Operand2
只有比较指令影响标志位 -不指定Rd
数据搬移不指定Rn
第二个操作数通过桶型移位器送到ALU中。
桶型移位器
Destination
CF
0
Destination
CF
LSL : Logical Left Shift
ASR: Arithmetic Right Shift
(无符号数)乘2
除2,并保留符号位
Destination
CF
...0
Destination

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

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数40
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wxc6688
  • 文件大小495 KB
  • 时间2020-11-30
最近更新