Does SH3ADD access memory?
No. It only reads and writes integer registers; any memory access must be performed by a separate load or store instruction.
Shift left by 3 and add
rd, rs1, rs2: integer registers x0–x31, with no immediate or shift-amount operand.
32-bit R-type: opcode=0110011 (OP), funct7=0010000, funct3=110; rs2, rs1 and rd occupy bits24:20, 19:15 and 11:7.
RV32/RV64, requiring enabled Zba; use all XLEN bits of rs1, shift left by the fixed 3, then add full-width rs2. Keep the low XLEN bits without word-result sign extension.
Overlapping sources and destination read values before writeback; x0 is always zero and writes to it are discarded. Only registers are computed; memory is not accessed.
Requires RV32/RV64 Zba. Shift full-width rs1 left by 3, add rs2, and keep the low XLEN bits. Useful for array address generation; no memory access occurs.
Starts with machine-code field decoding, then shows operand reads, instruction-specific execution, and ISA-visible state update.
Assumes Zba is enabled at the selected XLEN, with the fixed register values below and PC=0x2000; fetch succeeds and no asynchronous interrupt occurs. Steps are a teaching decomposition.
The machine code is split by the current instruction format; the animation starts from encoding/decode.
This animation shows ISA-visible decode and state changes, not any specific CPU pipeline, cache, prediction, or timing implementation.
SH3ADD is a Zba instruction: it shifts rs1 left by 3, adds rs2, and writes the XLEN-wide result to rd.
RV32/RV64 Zba, x11=3 and x12=0x1000: the example shifts 3 left by 3, adds 0x1000 and writes x10=0x1018; no memory access occurs.
No. It only reads and writes integer registers; any memory access must be performed by a separate load or store instruction.
This instruction performs the shift and addition at XLEN width and writes the XLEN-wide result to rd.