EasyManua.ls Logo

ARM Cortex-M4 - Page 89

ARM Cortex-M4
276 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
The Cortex-M4 Instruction Set
ARM DUI 0553A Copyright © 2010 ARM. All rights reserved. 3-42
ID121610 Non-Confidential
Restrictions
In these instructions:
Operand2
must not be SP and must not be PC
Rd
can be SP only in
ADD
and
SUB
, and only with the additional restrictions:
Rn
must also be SP
any shift in
Operand2
must be limited to a maximum of 3 bits using
LSL
Rn
can be SP only in
ADD
and
SUB
Rd
can be PC only in the
ADD{cond} PC, PC, Rm
instruction where:
you must not specify the S suffix
Rm
must not be PC and must not be SP
if the instruction is conditional, it must be the last instruction in the IT block
with the exception of the
ADD{cond} PC, PC, Rm
instruction,
Rn
can be PC only in
ADD
and
SUB
, and only with the additional restrictions:
you must not specify the S suffix
the second operand must be a constant in the range 0 to 4095.
Note
When using the PC for an addition or a subtraction, bits[1:0] of the PC are rounded
to
0b00
before performing the calculation, making the base address for the
calculation word-aligned.
If you want to generate the address of an instruction, you have to adjust the constant
based on the value of the PC. ARM recommends that you use the
ADR
instruction
instead of
ADD
or
SUB
with
Rn
equal to the PC, because your assembler automatically
calculates the correct constant for the
ADR
instruction.
When
Rd
is PC in the
ADD{cond} PC, PC, Rm
instruction:
bit[0] of the value written to the PC is ignored
a branch occurs to the address created by forcing bit[0] of that value to 0.
Condition flags
If
S
is specified, these instructions update the N, Z, C and V flags according to the result.
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.
Multiword arithmetic examples
Example 3-4 on page 3-43 shows two instructions that 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
.

Table of Contents

Related product manuals