In ARMv6T2 and later, both ARM and Thumb instruction sets
include:
a MOV instruction that
can load any value in the range 0x00000000 to 0x0000FFFF into
a register
a MOVT instruction that can load any
value in the range 0x0000 to 0xFFFF into
the most significant half of a register, without altering the contents
of the least significant half.
You can use these two instructions to construct any 32-bit
immediate value in a register. Alternatively, you can use the MOV32 pseudo-instruction.
The assembler generates the MOV, MOVT instruction
pair for you.
You can also use the MOV32 instruction to load
addresses into registers by using a label or any PC-relative expression
in place of an immediate value. The assembler puts a relocation
directive into the object file for the linker to resolve the address
at link-time.
This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.
ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.