ARM VERSION 1.2 User Manual

Page 138

Advertising
background image

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

.

Advertising