条件执行与标志位
ARM指令可以通过增加条件码前缀来达到条件执行的目的。同时可以提高代码密度,减少分支跳转指令数目,提高性能。
CMP R1,#0
BEQ LOOP
LOOP
ADD R0,R2,R3
一般情况下数据操作指令不会改变条件码标志位,但可以通过增加S后缀改变它,CMP指令例外。
对于Thumb指令集,只有B指令具有条件码执行功能。
条件执行示例
一系列的指令都使用条件指令
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