LDR (literal)

Load register (literal)

This instruction calculates an address from the PC value and an immediate offset, loads a word from memory, and writes it to a register. For information about addressing modes, see Load/Store addressing modes.

313029282726252423222120191817161514131211109876543210
0x011000imm19Rt
opcVR

Encoding for the 32-bit variant

Applies when (opc == 00)

LDR <Wt>, <label>

Encoding for the 64-bit variant

Applies when (opc == 01)

LDR <Xt>, <label>

Decode for all variants of this encoding

let t : integer{} = UInt(Rt); let size : integer{} = 4 << UInt(opc[0]); let nontemporal : boolean = FALSE; let tagchecked : boolean = FALSE; let offset : bits(64) = SignExtend{}(imm19::'00');

Assembler Symbols

<Wt>

Is the 32-bit name of the general-purpose register to be loaded, encoded in the "Rt" field.

<label>

Is the program label from which the data is to be loaded. Its offset from the address of this instruction, in the range +/-1MB, is encoded as "imm19" times 4.

<Xt>

Is the 64-bit name of the general-purpose register to be loaded, encoded in the "Rt" field.

Operation

let address : bits(64) = PC64() + offset; let privileged : boolean = PSTATE.EL != EL0; let accdesc : AccessDescriptor = CreateAccDescGPR(MemOp_LOAD, nontemporal, privileged, tagchecked, t); X{size * 8}(t) = Mem{size * 8}(address, accdesc);


2026-03_rel 2026-03-26 20:48:11

Copyright © 2010-2026 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.