diff options
| author | Camille Mougey <commial@gmail.com> | 2018-11-18 15:15:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-18 15:15:48 +0100 |
| commit | ba4071553ea2e44ce87f58a9377dcc1d29bd81a1 (patch) | |
| tree | 17ac6d584179cfff0dcee0742202f157898e60d3 | |
| parent | 3fc672fad2d703e9e36e0e964547e67c674cc4c7 (diff) | |
| parent | 2469b28ae4d73f2a6e813fc250953ae8da36d090 (diff) | |
| download | miasm-ba4071553ea2e44ce87f58a9377dcc1d29bd81a1.tar.gz miasm-ba4071553ea2e44ce87f58a9377dcc1d29bd81a1.zip | |
Merge pull request #885 from serpilliere/x86_reg_tests
Add x86 reg tests
| -rw-r--r-- | test/arch/x86/unit/mn_cmov.py | 72 | ||||
| -rw-r--r-- | test/arch/x86/unit/mn_rotsh.py | 180 | ||||
| -rwxr-xr-x | test/test_all.py | 2 |
3 files changed, 254 insertions, 0 deletions
diff --git a/test/arch/x86/unit/mn_cmov.py b/test/arch/x86/unit/mn_cmov.py new file mode 100644 index 00000000..29dc0823 --- /dev/null +++ b/test/arch/x86/unit/mn_cmov.py @@ -0,0 +1,72 @@ +import sys +from asm_test import Asm_Test_64 + +class Test_CMOVZ_OK(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV RBX, RAX + MOV RAX, 0xAABBCCDDEEFF0011 + XOR RCX, RCX + CMOVZ RAX, RBX + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x8877665544332211 + + +class Test_CMOVZ_KO(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV RBX, RAX + MOV RAX, 0xAABBCCDDEEFF0011 + XOR RCX, RCX + INC RCX + CMOVZ RAX, RBX + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0xAABBCCDDEEFF0011 + + +class Test_CMOVZ_OK_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV RBX, RAX + MOV RAX, 0xAABBCCDDEEFF0011 + XOR RCX, RCX + CMOVZ EAX, EBX + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x44332211 + + +class Test_CMOVZ_KO_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV RBX, RAX + MOV RAX, 0xAABBCCDDEEFF0011 + XOR RCX, RCX + INC RCX + CMOVZ EAX, EBX + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0xEEFF0011 + + + +if __name__ == "__main__": + [ + test(*sys.argv[1:])() for test in [ + Test_CMOVZ_OK, + Test_CMOVZ_KO, + Test_CMOVZ_OK_64_32, + Test_CMOVZ_KO_64_32, + ] + ] + diff --git a/test/arch/x86/unit/mn_rotsh.py b/test/arch/x86/unit/mn_rotsh.py new file mode 100644 index 00000000..eed1e88d --- /dev/null +++ b/test/arch/x86/unit/mn_rotsh.py @@ -0,0 +1,180 @@ +import sys +from asm_test import Asm_Test_64 + +class Test_ROR_0(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + ROR RAX, 0 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x8877665544332211 + + +class Test_ROR_8(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + ROR RAX, 8 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x1188776655443322 + + +class Test_ROR_X8(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV CL, 16 + ROR RAX, CL + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x2211887766554433 + + +class Test_SHR_0(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + SHR RAX, 0 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x8877665544332211 + + +class Test_SHR_8(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + SHR RAX, 8 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x88776655443322 + + +class Test_SHR_X8(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV CL, 16 + SHR RAX, CL + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x887766554433 + + + +class Test_ROR_0_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + ROR EAX, 0 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x44332211 + + +class Test_ROR_8_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + ROR EAX, 8 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x11443322 + + +class Test_ROR_X8_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV CL, 16 + ROR EAX, CL + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x22114433 + + +class Test_SHR_0_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + SHR EAX, 0 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x44332211 + + +class Test_SHR_8_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + SHR EAX, 8 + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x443322 + + +class Test_SHR_X8_64_32(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x8877665544332211 + MOV CL, 16 + SHR EAX, CL + RET + ''' + def check(self): + assert self.myjit.cpu.RAX == 0x4433 + + + +class Test_SHLD(Asm_Test_64): + TXT = ''' +main: + MOV RAX, 0x1234FDB512345678 + MOV RDX, RAX + MOV RAX, 0x21AD96F921AD3D34 + MOV RSI, RAX + MOV RAX, 0x0000000000000021 + MOV RCX, RAX + SHLD EDX, ESI, CL + RET + ''' + def check(self): + assert self.myjit.cpu.RDX == 0x000000002468ACF0 + + +if __name__ == "__main__": + [ + test(*sys.argv[1:])() for test in [ + Test_ROR_0, + Test_ROR_8, + Test_ROR_X8, + + Test_SHR_0, + Test_SHR_8, + Test_SHR_X8, + + Test_ROR_0_64_32, + Test_ROR_8_64_32, + Test_ROR_X8_64_32, + + Test_SHR_0_64_32, + Test_SHR_8_64_32, + Test_SHR_X8_64_32, + + Test_SHLD, + ] + ] + diff --git a/test/test_all.py b/test/test_all.py index 77dd04cf..7ea55235 100755 --- a/test/test_all.py +++ b/test/test_all.py @@ -89,6 +89,8 @@ for script in ["x86/sem.py", "x86/unit/mn_div.py", "x86/unit/test_asm_x86_64.py", "x86/unit/mn_getset128.py", + "x86/unit/mn_cmov.py", + "x86/unit/mn_rotsh.py", "arm/arch.py", "arm/sem.py", "aarch64/unit/mn_ubfm.py", |