def get_jump_address(npc, instr): """Return jump address for instr given npc. Take 4 msb of old PC Mul offset_from_pc by 4 Concatenate That's where we should jump Arguments: - `instr`: J-type instruction. """ old_pc = npc - 4 pc_msb = Memory.get_binary_string(old_pc)[:4] imm = Memory.get_binary_string(instr.offset_from_pc * 4, 28) jump_addr = int(pc_msb + imm, 2) return jump_addr