当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。每一条ARM指令包含4位的条件码,位于指令的最高4位[31:28]。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。在16种条件标志码中,只有15种可以使用,如表所示,第16种(1111)为系统保留,暂时不能使用。
指令的条件码 条件码 助记符后缀 标 志 含 义 0000 EQ Z置位 相等 0001 NE Z清零 不相等 0010 CS C置位 无符号数大于或等于 0011 CC C清零 无符号数小于 0100 MI N置位 负数 0101 PL N清零 正数或零 0110 VS V置位 溢出 0111 VC V清零 未溢出 1000 HI C置位Z清零 无符号数大于 1001 LS C清零Z置位 无符号数小于或等于 1010 GE N等于V 带符号数大于或等于 1011 LT N不等于V 带符号数小于 1100 GT Z清零且(N等于V) 带符号数大于 1101 LE Z置位或(N不等于V) 带符号数小于或等于 1110 AL 忽略 无条件执行
或者这个好看点:
EQ(等于,Equal) == NE(不等于,Not Equal) != CS(高于或同于,进位设置,Carry Set) >= CC(低于,进位清除,Carry Clear) < MI(负号,MInus) < 0 PL(正号,PLus) >=0 VS(溢出设置,oVerflow Set) VC(溢出清除,oVerflow Clear) HI(高于,HIgher) > LS(低于或同于,Lower or Same) <= GE(大于等于,Greater or equal) >= LT(小于,Less Than) < GT(大于,Greater Than) > LE(小于等于,Less or equal) <= AL(总是,Always) 永真 NV(从不,Never ) 永假