ARM and Thumb instructions can only be 32 bits wide. You can use a
MVN instruction to load a
register with an immediate value from a range that depends on the instruction set. Certain
32-bit values cannot be represented as an immediate operand to a single 32-bit
instruction, although you can load these values from memory in a single instruction.
In ARMv6T2 and later, you can load any 32-bit immediate value into a register with two
MOV followed by a
MOVT. Or, you can use a
MOV32, to construct the instruction sequence for
You can also use the
to load immediate values into a register.
You can include many commonly-used immediate
values directly as operands within data processing instructions, without a separate load
operation. The range of immediate values that you can include as operands in 16-bit Thumb
instructions is much smaller.