What offset range does LH use?
Base load instructions use a sign-extended 12-bit byte offset, typically -2048 through 2047.
Load a 16-bit halfword from memory, sign-extend it to XLEN, and write rd
LH is an RV32I/RV64I I-type load (opcode=0000011, funct3=001). Its effective address is rs1 plus a sign-extended 12-bit offset; it reads 16 bits there, sign-extends the value to XLEN, and writes rd. A naturally aligned halfword address is a multiple of 2; misaligned-access behavior is EEI-defined.
Starts with machine-code field decoding, then shows operand reads, instruction-specific execution, and ISA-visible state update.
This EEI branch applies only when the effective address is not divisible by 2; 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 animation shows ISA-visible decode and state changes, not any specific CPU pipeline, cache, prediction, or timing implementation.
LH reads a 16-bit halfword from the effective address formed by rs1 plus a signed 12-bit offset, then sign-extends the value into rd.
Understand this scenario with real code like «lh x6, 4(x10) # x6 = sign_ext(mem[x10+4][15:0])».
Understand this scenario with real code like «lh x6, 4(x10) # x6 = sign_ext(mem[x10+4][15:0])».
Base load instructions use a sign-extended 12-bit byte offset, typically -2048 through 2047.
LB/LH/LW sign-extend the loaded value to XLEN; LBU/LHU zero-extend. On RV64, use LWU when a 32-bit word should be zero-extended.