diff --git a/suite/regress/x86_issue9.py b/suite/regress/x86_issue9.py new file mode 100755 index 0000000000000000000000000000000000000000..fabd5f80e017e948180e380af81b2a7c78422599 --- /dev/null +++ b/suite/regress/x86_issue9.py @@ -0,0 +1,31 @@ +#!/usr/bin/python + +# Tests if the SS segment override prefix is not explicitly produced when unnecessary + +# Github issue: #9 +# Author: Duncan (mrexodia) + +from keystone import * + +import regress + +class TestX86(regress.RegressTest): + def runTest(self): + # Initialize Keystone engine + ks = Ks(KS_ARCH_X86, KS_MODE_32) + + encoding, _ = ks.asm(b"MOVZX ECX,WORD PTR SS:[EAX*2+EBP-0x68]") + self.assertEqual(encoding, [ 0x0F, 0xB7, 0x4C, 0x45, 0x98 ]) + + encoding, _ = ks.asm(b"AND DWORD PTR DS:[EAX+0x70],0xFFFFFFFD") + self.assertEqual(encoding, [ 0x83, 0x60, 0x70, 0xFD ]) + + encoding, _ = ks.asm(b"MOV DWORD PTR [EBP-0x218],0x2080000") + self.assertEqual(encoding, [ 0xC7, 0x85, 0xE8, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x02 ]) + + encoding, _ = ks.asm(b"MOV DWORD PTR [ESP-0x218],0x2080000") + self.assertEqual(encoding, [ 0xC7, 0x84, 0x24, 0xE8, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x08, 0x02 ]) + + +if __name__ == '__main__': + regress.main()