about summary refs log tree commit diff stats
path: root/test/arch/mep/asm/test_asm.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/arch/mep/asm/test_asm.py')
-rw-r--r--test/arch/mep/asm/test_asm.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/arch/mep/asm/test_asm.py b/test/arch/mep/asm/test_asm.py
new file mode 100644
index 00000000..ddf91ed6
--- /dev/null
+++ b/test/arch/mep/asm/test_asm.py
@@ -0,0 +1,38 @@
+# Toshiba MeP-c4 - Misc unit tests
+# Guillaume Valadon <guillaume@valadon.net>
+
+from miasm2.arch.mep.arch import mn_mep
+
+class TestMisc:
+
+    def test(self):
+
+        # Disassemble & assemble unit tests
+        unit_tests = [("ADD R1, 2", "6108")]
+        unit_tests += [("JMP 0xC3FA38", "d9c8c3fa")]
+        unit_tests += [("SLT3 R0, R8, R10", "08a2")]
+        unit_tests += [("SB R9, (R4)", "0948")]
+        unit_tests += [("SSARB 3(GP)", "13ec")]
+        unit_tests += [("SWCPI C13, (R2+)", "3d20")]
+        unit_tests += [("ADD3 R2, SP, 0x1C", "421c")]
+        unit_tests += [("SW R7, 0x50(SP)", "4752")]
+
+        for mn_str, mn_hex in unit_tests:
+            print "-" * 49  # Tests separation
+
+            # Dissassemble
+            mn_bin = mn_hex.decode("hex")
+            mn = mn_mep.dis(mn_bin, "b")
+
+            print "dis: %s -> %s" % (mn_hex.rjust(20), str(mn).rjust(20))
+            assert(str(mn) == mn_str)  # dissassemble assertion
+
+            # Assemble and return all possible candidates
+            instr = mn_mep.fromstring(str(mn), "b")
+            instr.mode = "b"
+            asm_list = [i.encode("hex") for i in mn_mep.asm(instr)]
+
+            # Print the results
+            print "asm: %s -> %s" % (mn_str.rjust(20),
+                                     ", ".join(asm_list).rjust(20))
+            assert(mn_hex in asm_list)  # assemble assertion