當處理器工作在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 忽略 無條件執行
當處理器工作在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 忽略 無條件執行