The STM32 Cortex-M0 instruction set PM0215
42/91 Doc ID 022979 Rev 1
3.4.1 ADR
Load PC-relative address.
Syntax
ADR Rd, label
where:
● ‘Rd’ is the destination register
● ‘label’ is a PC-relative expression (see PC-relative expressions on page 39)
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.
Restrictions
Rd
must specify R0-R7. The data-value addressed must be word aligned and within 1020
bytes of the current 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
ADR R3, [PC,#996] ; Set R3 to value of PC + 996.