指令格式
b.cond不是一条指令,而是一个指令簇,指代不同的命令,其格式定义如下:
B.<cond> <label>
<imm19>代表跳转的相对地址,寻址范围为+-1M,可寻指令数量256K;
<cond>代表跳转条件,占用指令4个bit,按照PSTATE的四种状态(N\Z\C\V)组合成16中条件;
如果条件cond成立,则调跳转到label处执行
条件符号 | 标志条件 | 含义 |
---|---|---|
EQ | Z=1 | 相等,equal |
NE | Z=0 | 不相等,not equal |
MI | N=1 | 负数,negaative |
PL | N=0 | 非负数 |
VS | V=1 | 溢出 |
VC | V=0 | 未溢出 |
CS|HS | C=1 | 进位,无符号的大于等于 |
CC|LO | C =0 | 无进位,无符号数小于 |
HI | C=1 && Z=0 | 无符号高于 |
LS | C=0&&Z=1 | 无符号数低于或等于 |
GE | N=V | 有符号数大于或等于 |
LT | N != V | 有符号数小于 |
GT | N=V && Z=0 | 有符号数大于 |
LE | N != V && Z=1 | 有符号数小于或等于 |
特殊的跳转指令
cbz Rt, label //Rt为0则跳转
cbnz Rt, label //Rt不为0则跳转
tbz Rt, imm14, label //Rt第imm14为0则跳转
tbnz Rt, imm14, label //Rt第imm14不为0则跳转