5.5.2. ADRL ARM pseudo-instruction

The ADRL pseudo-instruction loads a program-relative or register-relative address into a register. It is similar to the ADR pseudo-instruction. ADRL can load a wider range of addresses than ADR because it generates two data processing instructions.


The syntax of ADRL is:

	ADRL{condition} register,expression



is the register to load.


is a register-relative or program-relative expression that evaluates to:

  • a non word-aligned address within 64KB

  • a word-aligned address within 256KB.

The address can be either before or after the address of the instruction or the base register. See Register-relative and program-relative expressions.


ADRL always assembles to two instructions. Even if the address can be reached in a single instruction, a second, redundant instruction is produced.

If the assembler cannot construct the address in two instructions, it generates an error message and the assembly fails. See LDR ARM pseudo-instruction for information on loading a wider range of addresses. See also Chapter 5 Basic Assembly Language Programming in the ARM Software Development Toolkit User Guide.

If expression is program-relative, it must evaluate to an address in the same code area as the ADRL pseudo-instruction. Otherwise the address may be out of range after linking.


ADRL is not available when assembling Thumb instructions. Use it only in ARM code.


start		MOV		r0,#10
		ADRL		r4,start + 60000					; => ADD r4,pc,#0xe800
									;  ADD r4,r4,#0x254
Copyright © 1997, 1998 ARM Limited. All rights reserved.ARM DUI 0041C