about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCamille Mougey <commial@gmail.com>2018-11-18 15:15:48 +0100
committerGitHub <noreply@github.com>2018-11-18 15:15:48 +0100
commitba4071553ea2e44ce87f58a9377dcc1d29bd81a1 (patch)
tree17ac6d584179cfff0dcee0742202f157898e60d3
parent3fc672fad2d703e9e36e0e964547e67c674cc4c7 (diff)
parent2469b28ae4d73f2a6e813fc250953ae8da36d090 (diff)
downloadmiasm-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.py72
-rw-r--r--test/arch/x86/unit/mn_rotsh.py180
-rwxr-xr-xtest/test_all.py2
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",