Beispiel #1
0
 def testCanInterpretBasicNumbers(self):
     self.assertEquals(0x01, base.number(0x0001))
     self.assertEquals(-1, base.number(0xFFFF))
     self.assertEquals(32767, base.number(0x7FFF))
     self.assertEquals(-1, base.number(0xFFFF).as_signed())
     self.assertEquals(0, base.number(0x0000).as_signed())
     self.assertEquals(-32768, base.number(0x8000).as_signed())
     self.assertEquals(32767, base.number(0x7FFF).as_signed())
     self.assertEquals(-32767, base.number(self.memory.get_2byte(0x0C)).as_signed())
Beispiel #2
0
    def test_op_not5(self):
        op = opcodes.op_not5()
        op.operands = [0x0F]
        op.optypes = [opcodes.TYPE_SMALL]
        op.store_loc = 0x00

        self.cpu.set_variable(0x00, number(0xFFF0))

        self.mymox.ReplayAll()
        op.execute(self.cpu)
        self.mymox.VerifyAll()
Beispiel #3
0
    def test_op_loadw(self):
        op = opcodes.op_loadw()
        op.operands = [0x10, 0x05]
        op.optypes = [opcodes.TYPE_LARGE, opcodes.TYPE_LARGE]
        op.store_loc = 0x00

        self.cpu.get_memory(0x1A).AndReturn(0x01)
        self.cpu.set_variable(0x00, number(0x01))

        self.mymox.ReplayAll()
        op.execute(self.cpu)
        self.mymox.VerifyAll()
Beispiel #4
0
def get_arg(op, cpu, arg):
    a = op.operands[arg]
    return base.number(a)
Beispiel #5
0
def get_arg_value(op, cpu, arg):
    a = op.operands[arg]
    t = op.optypes[arg]
    if t == TYPE_LARGE or t == TYPE_SMALL:
        return base.number(a)
    return base.number(cpu.get_variable(a))
Beispiel #6
0
 def testOverflow(self):
     # Not a formal part of spec, so we don't actually care right now
     # Suggestion is that 0x8000 + 0x8000 (or * 2) should be 0x0000
     self.assertEquals(0, base.number(0x8000) + base.number(0x8000))
Beispiel #7
0
 def testDivByZeroErrors(self):
     one = base.number(1)
     zero = base.number(0)
     self.assertRaises(ZeroDivisionError, lambda a: a[0] / a[1], (one, zero))
     self.assertRaises(ZeroDivisionError, lambda a: a[0] % a[1], (one, zero))
Beispiel #8
0
 def testCanPerformanMathOnNumbers(self):
     two = base.number(0x0002)
     sixteen = base.number(0x0010)
     minus_two = base.number(0xFFFE)
     self.assertEqual(two, two)
     self.assertEqual(minus_two, minus_two)
     self.assertEqual(base.number(4), two + two)
     self.assertEqual(base.number(14), sixteen + minus_two)
     self.assertEqual(base.number(-2), base.number(0) + minus_two)
     self.assertEqual(base.number(-2), base.number(0) - two)
     self.assertEqual(base.number(14), sixteen - two)
     self.assertEqual(base.number(8), base.number(4) * two)
     self.assertEqual(base.number(-8), base.number(4) * minus_two)
     self.assertEqual(two, base.number(4) / two)
     self.assertEqual(two, base.number(5) / two)
     self.assertEqual(base.number(1), base.number(5) % two)
     self.assertEqual("2", str(two))
     self.assertEqual("-2", str(minus_two))