def test_pack_unpack(self): packed = pack_instruction(op_code=OPCODE.IFG, a=Value.reg(REG.A), b=Value.reg(REG.B)) op_code, b, a = unpack_instruction(packed) self.assertEqual(op_code, OPCODE.IFG) self.assertEqual(b, Value.reg(REG.A)) self.assertEqual(a, Value.reg(REG.B))
def dispatch(self): """ Execute instruction at [PC] """ instruction = self.cpu.ram[self.cpu.PC.value].value self.cpu.PC.value = self.cpu.PC.value + 1 op_code, b_val, a_val = unpack_instruction(instruction) if op_code == 0x00: self.non_basic(instruction) else: b = value_lookup(self.cpu, b_val, as_a=False) a = value_lookup(self.cpu, a_val, as_a=True) if not self.cpu.skip_instruction: self.BASIC_INSTRUCTIONS[op_code](b, a) else: self.cpu.skip_instruction = False