diff --git a/riscemu/instructions/RV32I.py b/riscemu/instructions/RV32I.py index a2cced2..1944279 100644 --- a/riscemu/instructions/RV32I.py +++ b/riscemu/instructions/RV32I.py @@ -269,9 +269,10 @@ class RV32I(InstructionSet): def instruction_jalr(self, ins: 'Instruction'): ASSERT_LEN(ins.args, 2) reg = ins.get_reg(0) - addr = ins.get_imm(1) + base = ins.get_reg(1) + addr = ins.get_imm(2) self.regs.set(reg, Int32(self.pc)) - self.pc = addr + self.pc = self.regs.get(base).unsigned_value + addr def instruction_ret(self, ins: 'Instruction'): ASSERT_LEN(ins.args, 0)