Can RV32 use LD?
RV32 requires Zilsd; this form writes an even/odd register pair rather than one RV64I register.
RV64I: load a 64-bit doubleword into rd; RV32 Zilsd: load a 64-bit value into an even/odd register pair.
LD uses I-type encoding (opcode=0000011, funct3=011), addressing rs1 plus a sign-extended 12-bit byte offset. RV64I writes the 64-bit memory value to one rd. RV32 Zilsd requires even rd: low 32 bits go to rd and high 32 bits to rd+1, regardless of endianness. With rd=x0, the entire result is discarded; Zilsd does not write x1. An 8-byte-aligned access must not raise an address-misaligned exception. Zilsd does not guarantee atomicity of the whole doubleword, but each word access must be atomic when the address is divisible by 4. On a Zilsd load trap, the base register retains its original value; the other register in the pair may have been updated.
Starts with machine-code field decoding, then shows operand reads, instruction-specific execution, and ISA-visible state update.
This example uses fixed initial register values and PC=0x2000; instruction fetch succeeds, with no asynchronous interrupt or extra extension checks. Exception branches stop ordinary commit; post-trap PC and handler state are EEI-dependent.
Assumes readable ordinary memory, with the displayed sample value at each selected effective address. Only misaligned EEI outcomes are modeled, not permissions or device side effects. Byte accesses are always naturally aligned; successful loads advance PC by 4, while exceptions stop ordinary writeback.
This EEI branch applies only when the effective address is not divisible by 8; a naturally aligned access must not raise an address-misaligned exception.
The machine code is split by the current instruction format; the animation starts from encoding/decode.
This LD animation models only the RV64I single-register 64-bit load. RV32 Zilsd uses the same mnemonic and encoding but operates on an even/odd register pair; its distinct conditions are covered in the static page content.
Check XLEN first: RV64I LD writes one 64-bit register; RV32 Zilsd LD writes an even/odd register pair.
Understand this scenario with real code like «ld x10, 16(x2) # load 64-bit value from stack at offset 16».
Understand this scenario with real code like «ld x10, 16(x2) # load 64-bit value from stack at offset 16».
RV32 requires Zilsd; this form writes an even/odd register pair rather than one RV64I register.