The STM32 Cortex-M0 instruction set PM0215
40/91 Doc ID 022979 Rev 1
A carry occurs:
● If the result of an addition is greater than or equal to 2
32
●
If the result of a subtraction is positive or zero
● As the result of a shift or rotate instruction
Overflow occurs if the sign of a result, in bit[31], does not match the sign of the result had
the operation been performed at infinite precision, for example:
● If adding two negative values results in a positive value
● If adding two positive values results in a negative value
● If subtracting a positive value from a negative value generates a positive value
● If subtracting a negative value from a positive value generates a negative value.
The Compare operations are identical to subtracting, for CMP, or adding, for CMN, except
that the result is discarded. See the instruction descriptions for more information.
Condition code suffixes
The instructions that can be conditional have an optional condition code, shown in syntax
descriptions as B{cond}. An instruction with a condition code is only executed if the
condition code flags in the APSR meet the specified condition. Ta bl e 17 shows the condition
codes to use.
You can use conditional execution with the
IT
instruction to reduce the number of branch
instructions in code.
Tabl e 17 also shows the relationship between condition code suffixes and the N, Z, C, and V
flags.
Table 17. Condition code suffixes and their relationship with the flags
Suffix Flags Meaning
EQ Z = 1 Equal, last flag setting result was zero
NE Z = 0 Not equal, last flag setting result was non-zero
CS or HS C = 1 Higher or same, unsigned ≥
CC or LO C = 0 Lower, unsigned <
MI N = 1 Negative
PL N = 0 Positive or zero
VS V = 1 Overflow
VC V = 0 No overflow
HI C = 1 and Z = 0 Higher, unsigned >
LS C = 0 or Z = 1 Lower or same, unsigned
≤
GE N = V Greater than or equal, signed ≥
LT N ! = V Less than, signed <
GT Z = 0 and N = V Greater than, signed >
LE Z = 1 and N != V Less than or equal, signed
≤
AL Can have any value Always. This is the default when no suffix is specified.