ARM Instruction Reference

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.

4-28

Copyright © 2000, 2001 ARM Limited. All rights reserved.

ARM DUI 0068B

Page 138
Image 138
ARM VERSION 1.2 manual Condition flags, Use of r15, Multiword arithmetic examples