def test_assemble(self): Registers.clear() instructions = "j 10000\nadd $s0, $a1, $t7\nsw $s1, 10($s2)\n" machine_code = Assembler.encode(instructions) self.assertEqual("0x0800271000af8020ae51000a", machine_code.value_base(16)) self.assertEqual(instructions, DisAssembler.decode(machine_code))
def test_stack(self): Registers.clear() path = "./test/asm/stack.asm" Simulator.run_file(path) self.assertEqual(3, Registers.reg_get("$t4")) self.assertEqual(2, Registers.reg_get("$t5")) self.assertEqual(1, Registers.reg_get("$t6"))
def test_muldiv(self): Registers.clear() path = "./test/asm/muldiv.asm" Simulator.run_file(path) self.assertEqual((0x7F7F7F7F * 0xACDB) >> 32, Registers.reg_get("$t1")) self.assertEqual((0x7F7F7F7F * 0xACDB) & 0xFFFFFFFF, Registers.reg_get("$t2")) self.assertEqual((0x7F7F7F7F % 0xACDB), Registers.reg_get("$t3")) self.assertEqual((0x7F7F7F7F // 0xACDB), Registers.reg_get("$t4"))
def test_muldiv(self): Registers.clear() path = "./test/asm/muldiv.asm" Simulator.run_file(path) self.assertEqual((0x7f7f7f7f * 0xacdb) >> 32, Registers.reg_get("$t1")) self.assertEqual((0x7f7f7f7f * 0xacdb) & 0xffffffff, Registers.reg_get("$t2")) self.assertEqual((0x7f7f7f7f % 0xacdb), Registers.reg_get("$t3")) self.assertEqual((0x7f7f7f7f // 0xacdb), Registers.reg_get("$t4"))
def test_simulate(self): Registers.clear() path = "./test/asm/sample1.asm" Simulator.run_file(path) self.assertEqual(468968, Registers.reg_get("$s0"))