| |||
| Home > Writing ARM and Thumb Assembly Language > 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 register 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
how to use the LDR pseudo-instruction
to load any 32-bit constant, see Loading with LDR Rd, =const
how to load floating-point constants, see Loading floating-point constants.