ARM Instruction Reference
4-28
Copyright © 2000, 2001 ARM Limited. All rights reserved.
ARM DUI 0068B
Condition flags
If
S
is specified, 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.
If you use r15 as
Rd
:
•
Execution branches to the address corresponding to the result.
•
If you use the
S
suffix, the SPSR of the current mode is copied to the CPSR. You
can use this to return from exceptions (see the
Handling Processor Exceptions
chapter in
ADS Developer Guide
).
Caution
Do not use the
S
suffix when using r15 as
Rd
in User mode or System mode. The effect
of such an instruction is unpredictable, but the assembler cannot warn you at assembly
time.
You cannot use r15 for
Rd
or any operand in any data processing instruction that has a
register-controlled shift (see
Flexible second operand
on page 4-24).
Architectures
These instructions are available in all versions of the ARM architecture.
Examples
ADD r2,r1,r3
SUBS r8,r6,#240 ; sets the flags on the result
RSB r4,r4,#1280 ; subtracts contents of r4 from 1280
ADCHI r11,r0,r3 ; only executed if C flag set and Z
; flag clear
RSCLES r0,r5,r0,LSL r4 ; conditional, flags set
Incorrect example
RSCLES r0,r15,r0,LSL r4 ; r15 not allowed with register
; controlled shift
Multiword arithmetic examples
These two instructions add a 64-bit integer contained in
r2
and
r3
to another 64-bit
integer contained in
r0
and
r1
, and place the result in
r4
and
r5
.