lda

Load Acquire (A32)

LDA<c> <Rt>, [<Rn>]

Loads a word with Acquire semantics.

Details

Load Acquire: loads a 32-bit word from memory with Acquire semantics, ensuring memory synchronization and preventing subsequent memory operations from being reordered before this load. The address is computed from Rn (no offset). No condition flags are affected. Subject to condition code in A32; available in A32 with Atomic extension.

Pseudocode Operation

Rt ← [Rn]
Acquire_Semantics()

Example

LDA r3, [r1]

Encoding

Binary Layout
cond
00011
00
1
Rn
Rt
1
1
0
0
1001
1111
 
Format Load/Store
Opcode 0x01900C9F
Extension A32 (Atomic)

Operands

  • Rt
    Transfer general-purpose register (load/store)
  • Rn
    First source / base general-purpose register

Reference (Arm AArch32 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0x01900C9F LDA{<c>}{<q>} <Rt>, [<Rn>] A32 cond | 00011 | 00 | 1 | Rn | Rt | 1 | 1 | 0 | 0 | 1001 | 1111
0xE8D00FAF LDA{<c>}{<q>} <Rt>, [<Rn>] T32 11101000110 | 1 | Rn | Rt | 1111 | 1 | 0 | 10 | 1111

Description

Load-Acquire Word loads a word from memory and writes it to a register. The instruction also has memory ordering semantics as described in Load-Acquire, Store-Release For more information about support for shared memory see Synchronization and semaphores. For information about memory accesses see Memory accesses.

Operation

if ConditionPassed() then
    EncodingSpecificOperations();
    address = R[n];
    R[t] = MemO[address, 4];