From 006dce70548a1f5a3ccbffab905b4985115b8b17 Mon Sep 17 00:00:00 2001 From: hakril Date: Thu, 27 Jun 2024 14:03:39 +0200 Subject: [PATCH] Add tests for non-handled instruction format in simple x86/x64 --- tests/test_simple_x64.py | 12 ++++++++++++ tests/test_simple_x86.py | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/tests/test_simple_x64.py b/tests/test_simple_x64.py index 79b70ff..b916f45 100644 --- a/tests/test_simple_x64.py +++ b/tests/test_simple_x64.py @@ -222,6 +222,7 @@ def test_assembler(): CheckInstr(Push)('RAX') + CheckInstr(Push, must_fail=True)('EAX') assert len(Push("RAX").get_code()) == 1 CheckInstr(Push)('R15') CheckInstr(Push)(0x42) @@ -234,7 +235,9 @@ def test_assembler(): assert len(Pop("RAX").get_code()) == 1 + CheckInstr(Call, must_fail=True)('EAX') CheckInstr(Call)('RAX') + CheckInstr(Call)('R14') CheckInstr(Call)(mem('[RAX + RCX * 8]')) CheckInstr(Cpuid)() CheckInstr(Xchg)('RAX', 'RSP') @@ -296,6 +299,15 @@ def test_assembler(): CheckInstr(Add, must_fail=True)('RAX', 0xffffffff) + CheckInstr(Jmp, must_fail=True)('EAX') + CheckInstr(Jmp)('RAX') + CheckInstr(Jmp)('R12') + CheckInstr(Jmp)(mem('[RAX]')) + CheckInstr(Jmp)(mem('[RAX + 2]')) + CheckInstr(Jmp)(mem('[0x12345678]')) + CheckInstr(Jmp)(mem('[R15 + 0x12345678]')) + + # Test some prefix / REP assert (x64.Rep + x64.Nop()).get_code() == b"\xf3\x90" assert (x64.GSPrefix + x64.Nop()).get_code() == b"\x65\x90" diff --git a/tests/test_simple_x86.py b/tests/test_simple_x86.py index 4e9bb71..ac56a33 100644 --- a/tests/test_simple_x86.py +++ b/tests/test_simple_x86.py @@ -230,6 +230,12 @@ def test_assembler(): CheckInstr(x86.Test, immediat_accepted=-1)('EAX', 0xffffffff) CheckInstr(x86.Test)('ECX', 0x42) + CheckInstr(Jmp)('EAX') + CheckInstr(Jmp)('EDX') + CheckInstr(Jmp)('EDI') + CheckInstr(Jmp)(mem('[EAX]')) + CheckInstr(Jmp)(mem('[EAX + 2]')) + CheckInstr(Jmp)(mem('[0x12345678]')) assert x86.Test(mem('[ECX + 0x100]'), 'ECX').get_code() == x86.Test('ECX', mem('[ECX + 0x100]')).get_code() assert Xchg('EAX', 'ECX').get_code() == Xchg('ECX', 'EAX').get_code()