From 6c24f8d90f0fc52ea7cf8fe32b8e0995c3cd747f Mon Sep 17 00:00:00 2001 From: feliam Date: Tue, 14 Jul 2020 10:18:51 -0300 Subject: [PATCH] New x86 instrution test --- tests/native/test_cpu_manual.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/native/test_cpu_manual.py b/tests/native/test_cpu_manual.py index 19447783d..0f400a86e 100644 --- a/tests/native/test_cpu_manual.py +++ b/tests/native/test_cpu_manual.py @@ -1436,6 +1436,36 @@ def test_DAA_0(self): self.assertEqual(cpu.PF, True) self.assertEqual(cpu.CF, True) + def test_DAS_0(self): + """Decimal Adjust AL after Subtraction.""" + + cs = ConstraintSet() + mem = SMemory32(cs) + cpu = I386Cpu(mem) + # alloc/map a little mem + code = mem.mmap(0x1000, 0x1000, "rwx") + stack = mem.mmap(0xF000, 0x1000, "rw") + + # 2F DAS + mem[code] = BitVecConstant(8, 0x2F) + cpu.EIP = code + + cpu.AL = 0xAE + cpu.OF = True + cpu.SF = True + cpu.ZF = False + cpu.AF = False + cpu.PF = False + cpu.CF = False + + cpu.execute() + self.assertEqual(cpu.AL, 0x48) + self.assertEqual(cpu.SF, False) + self.assertEqual(cpu.ZF, False) + self.assertEqual(cpu.AF, True) + self.assertEqual(cpu.PF, True) + self.assertEqual(cpu.CF, True) + if __name__ == "__main__": unittest.main()