Exemplo n.º 1
0
    def test_skne_should_skip_if_not_equals(self):
        machine = Machine()
        machine.PC = 10
        machine.VRegisters[2] = 0xBC

        skne = Skne()
        skne.arg_constant = 0xEE
        skne.arg_registers.append(2)
        skne.execute(machine)

        self.assertTrue(isinstance(skne, JumpInstruction))
        self.assertEqual(machine.PC, 14)
Exemplo n.º 2
0
    def test_jsr_should_call_subroutine(self):
        machine = Machine()
        machine.PC = 10

        jsr = Jsr()
        jsr.arg_constant = 0xEEF

        jsr.execute(machine)

        self.assertTrue(isinstance(jsr, JumpInstruction))
        self.assertEqual(machine.PC, 0xEEF)
        self.assertEqual(machine.Stack.top(), 12)
Exemplo n.º 3
0
    def test_skeq_registers_should_not_skip_if_not_equals(self):
        machine = Machine()
        machine.PC = 10
        machine.VRegisters[2] = 0xEE
        machine.VRegisters[5] = 0xE4

        skeq = SkeqRegister()
        skeq.arg_registers.append(2)
        skeq.arg_registers.append(5)
        skeq.execute(machine)

        self.assertTrue(isinstance(skeq, JumpInstruction))
        self.assertEqual(machine.PC, 12)
Exemplo n.º 4
0
    def test_skne_registers_shouldnt_skip_if_equal(self):
        machine = Machine()
        machine.PC = 10
        machine.VRegisters[1] = 5
        machine.VRegisters[2] = 5

        skne = SkneRegisters()
        skne.arg_registers.append(1)
        skne.arg_registers.append(2)

        skne.execute(machine)

        self.assertTrue(isinstance(skne, JumpInstruction))
        self.assertEqual(machine.PC, 12)
Exemplo n.º 5
0
 def execute(self, machine: Machine):
     machine.Stack.push(machine.PC + 2)
     machine.PC = self.arg_constant
Exemplo n.º 6
0
 def execute(self, machine: Machine):
     machine.PC = self.arg_constant
Exemplo n.º 7
0
 def execute(self, machine: Machine):
     machine.PC = machine.VRegisters[0] + self.arg_constant
Exemplo n.º 8
0
 def execute(self, machine: Machine):
     machine.PC = machine.Stack.pop()