ADDS其实就是ADD增加一位符号位,该符号位会在完成加法后进行更新,有如下四种符号位:
N(Negative flag,负号标志):如果结果为负数,则设置 N 标志为 1
Z(Zero flag,零标志):如果结果为零,则设置 Z 标志为 1
C(Carry flag,进位标志):如果加法操作产生了进位,则设置 C 标志为 1
V(Overflow flag,溢出标志):如果加法操作产生了有符号溢出,则设置 V 标志为 1
以下是一个实际应用的功能:
loop_start:
ADDS R0, R0, #1 // 将 R0 的值加 1,并更新条件标志
BEQ loop_end // 如果结果为零(Z 标志为 1),跳转到 loop_end
B loop_start // 否则继续循环
loop_end:
可以通过循环检验Z位是否被置1来确定R0是否达到0