一、基础
在 Armv8 的 A32 架构或者 Armv7 及以前的指令集中,每条指令都可以“条件执行”,也就是根据 CPSR 的条件码来确定这条指令是否真的具有执行效果。
比如说如下指令,只有在 CPSR 中 Z
位为 1 的时候,addz
这条指令才有实际效果,这依赖于前一条指令 cmp
对 CPSR 的修改(ARM 同样可以指定是否修改 CPSR,这是通过在指令位中的 S
确定的)。
cmp r4, r5
addz r1, r2, r3
MIPS 或者 RISCV 都有条件指令,不过这些条件指令一般是条件指令,这样可以实现编程思想中的分支结构。Arm 的特殊之处在于每条 32 位指令的高 4 位都是条件码,这就会导致每条指令都是条件指令。