The STM32 Cortex-M4 instruction set PM0214
70/262 PM0214 Rev 9
3.4.1 ADR
Load PC-relative address.
Syntax
ADR{cond} Rd, label
Where:
• ‘cond’ is an optional condition code (see Conditional execution on page 65)
• ‘Rd’ is the destination register
• ‘label’ is a PC-relative expression (see PC-relative expressions on page 65)
Operation
ADR determines the address by adding an immediate value to the PC. It writes the result to
the destination register.
ADR produces position-independent code, 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 to1 for correct execution.
Values of label must be within the range -4095 to 4095 from the address in the PC.
Note: You might have to use the .W suffix to get the maximum offset range or to generate
addresses that are not word-aligned (see
Instruction width selection on page 68).
Restrictions
Rd
must be neither SP nor PC.
Condition flags
This instruction does not change the flags.
Examples
ADR R1, TextMessage; write address value of a location labelled as
; TextMessage to R1