格式可以是如下这种的:
MRS{cond} Rd, spec_reg
条件执行:
大部分处理器指令可以根据操作指令码决定是否更新APSR寄存器中的条件标记,有些指令需要更新全部的标记位,有些指令只更新某一些位。如果标记位没有被更新,起始值将得到保护,具体可参考标记位寄存器APSR的详细描述,
你可以根据条件标记位是否置决定要不要执行某条指令,
以下是可以影响条件标记位的一些后缀:
可以参考如下例程:
演示如何使用条件指令来查找一个数的绝对值
MOVS R0, R1; R0 = R1, setting flags
IT MI ; IT instruction for the negative condition //它指示负条件
RSBMI R0, R1, #0; If negative, R0 = -R1
显示条件指令的使用,如果签名值R0和R2分别大于R1和R3,则更新R4的值
CMP R0, R1 ; compare R0 and R1, setting flags
ITT GT ; IT instruction for the two GT conditions //IT指令为两个GT条件
CMPGT R2, R3; if 'greater than', compare R2 and R3, setting flags
MOVGT R4, R5 ; if still 'greater than', do R4 = R5
条件指令除了branch分支指令之外,其他一定要在if-then指令块之内,可以查看 IT(if-then)指令的详细描述
上面截图的翻译:
IT指令
if-Then 条件指令
语法
IT{X{Y{Z}}} cond
x,y, z, cond的解释:
x 指定IT块中第二条指令的条件开关
y 指定IT块中第三条指令的条件开关
z 指定IT块中第四条指令的条件开关
cond 指定IT块中的第一条指令的条件
IT块中的第二、第三和第四条指令的条件开关可以是其中之一
T:Then. 将条件cond应用于指令
E:Else. 将条件cond取反应用于指令
在It指令中,可以对cond使用AL (always条件)。如果这样做了,IT块中的所有指令都必须是无条件的,x、y和z必须是T或者省略,但不能是E。
以下指令是不能在IT块内出现的指令
• IT
• CBZ and CBNZ
• CPSID and CPSIE
其他相关的限制在使用IT指令的时候:
一个分支或任何修改PC的指令必须在IT块之外或必须是IT块内的最后一条指令。这些都是:
– ADD PC, PC, Rm
– MOV PC, Rm
– B, BL, BX, BLX
– any LDM, LDR, or POP instruction that writes to the PC
– TBB and TBH
下面是英文原文: