fix jalr instruction to take arguments in the form of rd, rs, imm

Anton Lydike 2 years ago
parent 1b26497e4c
commit 8ce7e3f8c6

@ -269,9 +269,10 @@ class RV32I(InstructionSet):
def instruction_jalr(self, ins: 'Instruction'): def instruction_jalr(self, ins: 'Instruction'):
ASSERT_LEN(ins.args, 2) ASSERT_LEN(ins.args, 2)
reg = ins.get_reg(0) 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.regs.set(reg, Int32(self.pc))
self.pc = addr self.pc = self.regs.get(base).unsigned_value + addr
def instruction_ret(self, ins: 'Instruction'): def instruction_ret(self, ins: 'Instruction'):
ASSERT_LEN(ins.args, 0) ASSERT_LEN(ins.args, 0)

Loading…
Cancel
Save