ARM VERSION 1.2 Computer Hardware User Manual


 
ARM Instruction Reference
ARM DUI 0068B Copyright © 2000, 2001 ARM Limited. All rights reserved. 4-83
Usage
The
LDR
pseudo-instruction is used for two main purposes:
To generate literal constants when an immediate value cannot be moved into a
register because it is out of range of the
MOV
and
MVN
instructions
To load a program-relative or external address into a register. The address remains
valid regardless of where the linker places the ELF section containing the
LDR
.
Note
An address loaded in this way is fixed at link time, so the code is not
position-independent.
The offset from the PC to the value in the literal pool must be less than 4KB. You are
responsible for ensuring that there is a literal pool within range. See LTORG on
page 7-14 for more information.
See Loading constants into registers on page 2-25 for a more detailed explanation of
how to use
LDR
, and for more information on
MOV
and
MVN
.
Example
LDR r3,=0xff0 ; loads 0xff0 into r3
; => MOV r3,#0xff0
LDR r1,=0xfff ; loads 0xfff into r1
; => LDR r1,[pc,offset_to_litpool]
; ...
; litpool DCD 0xfff
LDR r2,=place ; loads the address of
; place into r2
; => LDR r2,[pc,offset_to_litpool]
; ...
; litpool DCD place