ARM Instruction Reference
4-34 Copyright © 2000, 2001 ARM Limited. A ll rights reserved. ARM DUI 0068B
4.3.5 CMP and CMN
Compare and Compare Negative.
Syntax
CMP{cond} Rn, Operand2
CMN{cond} Rn, Operand2
where:
cond
is an optional condition code (see Conditional execution on page4-4).
Rn
is the ARM register holding the first operand.
Operand2
is a flexible second operand. See Flexible second operand on page4-24
for details of the options.
Usage
These instructions com pare the value in a reg ister with
Operand2
. They update the
condition flags on the result, but do not place the result in any register.
The
CMP
instruction subtracts the value of
Operand2
from the value in
Rn
. This is the same
as a
SUBS
instruction, except that the result is discarded.
The
CMN
instruction adds the value of
Operand2
to the value in
Rn
. This is the same as an
ADDS
instruction, except that the result is discarded.
In certain circumstances , the assembler can substitute
CMN
for
CMP
, or
CMP
for
CMN
. Be
aware of this when reading disassembly listings. See Instruction substitution on
page4-26 for details.
Condition flags
These instructions update the N, Z, C and V flags according to the result.
Use of r15
If you use r15 as
Rn
, the value used is the address of the instruction plus 8.
You cannot use r15 for any operand in any data processing instruction that has a
register-controlled shift (see Flexible second operand on page 4-24).