2.6.4.1.2 Operation

ADR generates an address by adding an immediate value to the PC, and writes the result to the destination register.

ADR provides the means by which position-independent code can be generated, because the address is PC-relative.

If you use ADR to generate a target address for a BX or BLX instruction, you must ensure that bit[0] of the address you generate is set to 1 for correct execution.

Values of label must be within the range of -4095 to +4095 from the address in the PC.

Note: You may have to use the .W suffix to get the maximum offset range or to generate addresses that are not word-aligned. See 2.6.3.8 Instruction Width Selection.