Writing ARM and Thumb Assembly Language
ARM DUI 0068B Copyright © 2000, 2001 ARM Limited. All r ights reserved. 2-25
2.6 Loading constants into registers
You cannot load an arbitrary 32-bit immediate constant into a register in a single
instruction without performing a data load from memory. This is because ARM
instructions are only 32 bits long.
Thumb instructions have a similar limitation.
You can load any 32-bit value into a reg ister with a data load, but there are more direct
and efficient ways to load many commonly-used constants. You can also include many
commonly-used constants directly as operands within data-processing instructions,
without a separate load operation at all.
The following sections describe:
how to use the
MOV
and
MVN
instructions to load a range of immediate values, see
Direct loading with MOV and MVN on page2-26
how to use the
LDR
pseudo-instruction to load any 32-bit constant, see Loading
with LDR Rd, =const on page 2-27
how to load floating-point constants, see Loading floating-point constants on
page2-29.