Keil™, An ARM® Company

RealView Assembler User's Guide

Loading constants into registers

2.5. 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 and Thumb-2 instructions are only 32 bits long. The range of constants that you can generate using 16-bit Thumb instructions is much smaller.

You can also include many commonly used constants directly as operands within data processing instructions, without a separate load operation.

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.

In ARMv6T2 and above, you can also load any 32‑bit value into a register with two instructions, a MOV followed by a MOVT. You can use a pseudo‑instruction, MOV32, to construct the instruction sequence for you.

The following sections describe:

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0379A