about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2015-11-17 15:15:10 +0100
committerserpilliere <serpilliere@users.noreply.github.com>2015-11-17 15:15:10 +0100
commit87c3fe46c6fbc5649b3a06d91bedfabbe3f11009 (patch)
tree6aeaee9c1febf68715359e580a27f8b39a64e95e
parenta49419dd5e16283b1663181a47cdc85b7eff14dc (diff)
parent08e54aa9dd67e85753174242fab356cc2d2767c9 (diff)
downloadmiasm-87c3fe46c6fbc5649b3a06d91bedfabbe3f11009.tar.gz
miasm-87c3fe46c6fbc5649b3a06d91bedfabbe3f11009.zip
Merge pull request #278 from commial/fix-x86-string
Fix x86 string
Diffstat (limited to '')
-rw-r--r--miasm2/arch/x86/sem.py4
-rw-r--r--test/arch/x86/qemu/expected/test_string.exp156
-rw-r--r--test/test_all.py3
3 files changed, 81 insertions, 82 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index c39d2583..8a1c3974 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -924,7 +924,6 @@ def bswap(ir, instr, a):
 
 
 def cmps(ir, instr, size):
-    lbl_cmp = m2_expr.ExprId(ir.gen_label(), ir.IRDst.size)
     lbl_df_0 = m2_expr.ExprId(ir.gen_label(), ir.IRDst.size)
     lbl_df_1 = m2_expr.ExprId(ir.gen_label(), ir.IRDst.size)
     lbl_next = m2_expr.ExprId(ir.get_next_label(instr), ir.IRDst.size)
@@ -933,7 +932,7 @@ def cmps(ir, instr, size):
     a = m2_expr.ExprMem(mRDI[instr.mode][:s], size)
     b = m2_expr.ExprMem(mRSI[instr.mode][:s], size)
 
-    e, extra = l_cmp(ir, instr, a, b)
+    e, _ = l_cmp(ir, instr, b, a)
 
     e0 = []
     e0.append(m2_expr.ExprAff(a.arg,
@@ -957,7 +956,6 @@ def cmps(ir, instr, size):
 
 
 def scas(ir, instr, size):
-    lbl_cmp = m2_expr.ExprId(ir.gen_label(), ir.IRDst.size)
     lbl_df_0 = m2_expr.ExprId(ir.gen_label(), ir.IRDst.size)
     lbl_df_1 = m2_expr.ExprId(ir.gen_label(), ir.IRDst.size)
     lbl_next = m2_expr.ExprId(ir.get_next_label(instr), ir.IRDst.size)
diff --git a/test/arch/x86/qemu/expected/test_string.exp b/test/arch/x86/qemu/expected/test_string.exp
index f3ffbb17..1087650a 100644
--- a/test/arch/x86/qemu/expected/test_string.exp
+++ b/test/arch/x86/qemu/expected/test_string.exp
@@ -1,78 +1,78 @@
-stosb      ESI=0805b980 EDI=0805b991 EAX=12345678 ECX=00000011 EFL=0000
-stosw      ESI=0805b980 EDI=0805b992 EAX=12345678 ECX=00000011 EFL=0000
-stosl      ESI=0805b980 EDI=0805b994 EAX=12345678 ECX=00000011 EFL=0000
-stosb      ESI=0805b980 EDI=0805b98f EAX=12345678 ECX=00000011 EFL=0000
-stosw      ESI=0805b980 EDI=0805b98e EAX=12345678 ECX=00000011 EFL=0000
-stosl      ESI=0805b980 EDI=0805b98c EAX=12345678 ECX=00000011 EFL=0000
-rep stosb  ESI=0805b980 EDI=0805b9a1 EAX=12345678 ECX=00000000 EFL=0000
-rep stosw  ESI=0805b980 EDI=0805b9b2 EAX=12345678 ECX=00000000 EFL=0000
-rep stosl  ESI=0805b980 EDI=0805b9d4 EAX=12345678 ECX=00000000 EFL=0000
-rep stosb  ESI=0805b980 EDI=0805b97f EAX=12345678 ECX=00000000 EFL=0000
-rep stosw  ESI=0805b980 EDI=0805b96e EAX=12345678 ECX=00000000 EFL=0000
-rep stosl  ESI=0805b980 EDI=0805b94c EAX=12345678 ECX=00000000 EFL=0000
-lodsb      ESI=0805b981 EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsw      ESI=0805b982 EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsl      ESI=0805b984 EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsb      ESI=0805b97f EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsw      ESI=0805b97e EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsl      ESI=0805b97c EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-rep lodsb  ESI=0805b991 EDI=0805b990 EAX=12345678 ECX=00000000 EFL=0000
-rep lodsw  ESI=0805b9a2 EDI=0805b990 EAX=12345678 ECX=00000000 EFL=0000
-rep lodsl  ESI=0805b9c4 EDI=0805b990 EAX=12345678 ECX=00000000 EFL=0000
-rep lodsb  ESI=0805b96f EDI=0805b990 EAX=12345678 ECX=00000000 EFL=0000
-rep lodsw  ESI=0805b95e EDI=0805b990 EAX=12345678 ECX=00000000 EFL=0000
-rep lodsl  ESI=0805b93c EDI=0805b990 EAX=19181716 ECX=00000000 EFL=0000
-movsb      ESI=0805b981 EDI=0805b991 EAX=12345678 ECX=00000011 EFL=0000
-movsw      ESI=0805b982 EDI=0805b992 EAX=12345678 ECX=00000011 EFL=0000
-movsl      ESI=0805b984 EDI=0805b994 EAX=12345678 ECX=00000011 EFL=0000
-movsb      ESI=0805b97f EDI=0805b98f EAX=12345678 ECX=00000011 EFL=0000
-movsw      ESI=0805b97e EDI=0805b98e EAX=12345678 ECX=00000011 EFL=0000
-movsl      ESI=0805b97c EDI=0805b98c EAX=12345678 ECX=00000011 EFL=0000
-rep movsb  ESI=0805b991 EDI=0805b9a1 EAX=12345678 ECX=00000000 EFL=0000
-rep movsw  ESI=0805b9a2 EDI=0805b9b2 EAX=12345678 ECX=00000000 EFL=0000
-rep movsl  ESI=0805b9c4 EDI=0805b9d4 EAX=12345678 ECX=00000000 EFL=0000
-rep movsb  ESI=0805b96f EDI=0805b97f EAX=12345678 ECX=00000000 EFL=0000
-rep movsw  ESI=0805b95e EDI=0805b96e EAX=12345678 ECX=00000000 EFL=0000
-rep movsl  ESI=0805b93c EDI=0805b94c EAX=12345678 ECX=00000000 EFL=0000
-lodsb      ESI=0805b981 EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsw      ESI=0805b982 EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsl      ESI=0805b984 EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsb      ESI=0805b97f EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsw      ESI=0805b97e EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-lodsl      ESI=0805b97c EDI=0805b990 EAX=12345678 ECX=00000011 EFL=0000
-scasb      ESI=0805b980 EDI=0805b991 EAX=12345678 ECX=00000011 EFL=0044
-scasw      ESI=0805b980 EDI=0805b992 EAX=12345678 ECX=00000011 EFL=0044
-scasl      ESI=0805b980 EDI=0805b994 EAX=12345678 ECX=00000011 EFL=0044
-scasb      ESI=0805b980 EDI=0805b98f EAX=12345678 ECX=00000011 EFL=0044
-scasw      ESI=0805b980 EDI=0805b98e EAX=12345678 ECX=00000011 EFL=0044
-scasl      ESI=0805b980 EDI=0805b98c EAX=12345678 ECX=00000011 EFL=0044
-repz scasb ESI=0805b980 EDI=0805b992 EAX=12345678 ECX=0000000f EFL=0004
-repz scasw ESI=0805b980 EDI=0805b994 EAX=12345678 ECX=0000000f EFL=0004
-repz scasl ESI=0805b980 EDI=0805b9d4 EAX=12345678 ECX=00000000 EFL=0044
-repz scasb ESI=0805b980 EDI=0805b98e EAX=12345678 ECX=0000000f EFL=0004
-repz scasw ESI=0805b980 EDI=0805b98c EAX=12345678 ECX=0000000f EFL=0004
-repz scasl ESI=0805b980 EDI=0805b958 EAX=12345678 ECX=00000003 EFL=0085
-repnz scasb ESI=0805b980 EDI=0805b991 EAX=12345678 ECX=00000010 EFL=0044
-repnz scasw ESI=0805b980 EDI=0805b992 EAX=12345678 ECX=00000010 EFL=0044
-repnz scasl ESI=0805b980 EDI=0805b994 EAX=12345678 ECX=00000010 EFL=0044
-repnz scasb ESI=0805b980 EDI=0805b98f EAX=12345678 ECX=00000010 EFL=0044
-repnz scasw ESI=0805b980 EDI=0805b98e EAX=12345678 ECX=00000010 EFL=0044
-repnz scasl ESI=0805b980 EDI=0805b98c EAX=12345678 ECX=00000010 EFL=0044
-cmpsb      ESI=0805b981 EDI=0805b991 EAX=12345678 ECX=00000011 EFL=0044
-cmpsw      ESI=0805b982 EDI=0805b992 EAX=12345678 ECX=00000011 EFL=0044
-cmpsl      ESI=0805b984 EDI=0805b994 EAX=12345678 ECX=00000011 EFL=0044
-cmpsb      ESI=0805b97f EDI=0805b98f EAX=12345678 ECX=00000011 EFL=0044
-cmpsw      ESI=0805b97e EDI=0805b98e EAX=12345678 ECX=00000011 EFL=0044
-cmpsl      ESI=0805b97c EDI=0805b98c EAX=12345678 ECX=00000011 EFL=0044
-repz cmpsb ESI=0805b991 EDI=0805b9a1 EAX=12345678 ECX=00000000 EFL=0044
-repz cmpsw ESI=0805b9a2 EDI=0805b9b2 EAX=12345678 ECX=00000000 EFL=0044
-repz cmpsl ESI=0805b9c4 EDI=0805b9d4 EAX=12345678 ECX=00000000 EFL=0044
-repz cmpsb ESI=0805b96f EDI=0805b97f EAX=12345678 ECX=00000000 EFL=0044
-repz cmpsw ESI=0805b95e EDI=0805b96e EAX=12345678 ECX=00000000 EFL=0044
-repz cmpsl ESI=0805b958 EDI=0805b968 EAX=12345678 ECX=00000007 EFL=0014
-repnz cmpsb ESI=0805b981 EDI=0805b991 EAX=12345678 ECX=00000010 EFL=0044
-repnz cmpsw ESI=0805b982 EDI=0805b992 EAX=12345678 ECX=00000010 EFL=0044
-repnz cmpsl ESI=0805b984 EDI=0805b994 EAX=12345678 ECX=00000010 EFL=0044
-repnz cmpsb ESI=0805b97f EDI=0805b98f EAX=12345678 ECX=00000010 EFL=0044
-repnz cmpsw ESI=0805b97e EDI=0805b98e EAX=12345678 ECX=00000010 EFL=0044
-repnz cmpsl ESI=0805b97c EDI=0805b98c EAX=12345678 ECX=00000010 EFL=0044
+stosb      ESI=0805a980 EDI=0805a991 EAX=12345678 ECX=00000011 EFL=0000
+stosw      ESI=0805a980 EDI=0805a992 EAX=12345678 ECX=00000011 EFL=0000
+stosl      ESI=0805a980 EDI=0805a994 EAX=12345678 ECX=00000011 EFL=0000
+stosb      ESI=0805a980 EDI=0805a98f EAX=12345678 ECX=00000011 EFL=0000
+stosw      ESI=0805a980 EDI=0805a98e EAX=12345678 ECX=00000011 EFL=0000
+stosl      ESI=0805a980 EDI=0805a98c EAX=12345678 ECX=00000011 EFL=0000
+rep stosb  ESI=0805a980 EDI=0805a9a1 EAX=12345678 ECX=00000000 EFL=0000
+rep stosw  ESI=0805a980 EDI=0805a9b2 EAX=12345678 ECX=00000000 EFL=0000
+rep stosl  ESI=0805a980 EDI=0805a9d4 EAX=12345678 ECX=00000000 EFL=0000
+rep stosb  ESI=0805a980 EDI=0805a97f EAX=12345678 ECX=00000000 EFL=0000
+rep stosw  ESI=0805a980 EDI=0805a96e EAX=12345678 ECX=00000000 EFL=0000
+rep stosl  ESI=0805a980 EDI=0805a94c EAX=12345678 ECX=00000000 EFL=0000
+lodsb      ESI=0805a981 EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsw      ESI=0805a982 EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsl      ESI=0805a984 EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsb      ESI=0805a97f EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsw      ESI=0805a97e EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsl      ESI=0805a97c EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+rep lodsb  ESI=0805a991 EDI=0805a990 EAX=12345678 ECX=00000000 EFL=0000
+rep lodsw  ESI=0805a9a2 EDI=0805a990 EAX=12345678 ECX=00000000 EFL=0000
+rep lodsl  ESI=0805a9c4 EDI=0805a990 EAX=12345678 ECX=00000000 EFL=0000
+rep lodsb  ESI=0805a96f EDI=0805a990 EAX=12345678 ECX=00000000 EFL=0000
+rep lodsw  ESI=0805a95e EDI=0805a990 EAX=12345678 ECX=00000000 EFL=0000
+rep lodsl  ESI=0805a93c EDI=0805a990 EAX=19181716 ECX=00000000 EFL=0000
+movsb      ESI=0805a981 EDI=0805a991 EAX=12345678 ECX=00000011 EFL=0000
+movsw      ESI=0805a982 EDI=0805a992 EAX=12345678 ECX=00000011 EFL=0000
+movsl      ESI=0805a984 EDI=0805a994 EAX=12345678 ECX=00000011 EFL=0000
+movsb      ESI=0805a97f EDI=0805a98f EAX=12345678 ECX=00000011 EFL=0000
+movsw      ESI=0805a97e EDI=0805a98e EAX=12345678 ECX=00000011 EFL=0000
+movsl      ESI=0805a97c EDI=0805a98c EAX=12345678 ECX=00000011 EFL=0000
+rep movsb  ESI=0805a991 EDI=0805a9a1 EAX=12345678 ECX=00000000 EFL=0000
+rep movsw  ESI=0805a9a2 EDI=0805a9b2 EAX=12345678 ECX=00000000 EFL=0000
+rep movsl  ESI=0805a9c4 EDI=0805a9d4 EAX=12345678 ECX=00000000 EFL=0000
+rep movsb  ESI=0805a96f EDI=0805a97f EAX=12345678 ECX=00000000 EFL=0000
+rep movsw  ESI=0805a95e EDI=0805a96e EAX=12345678 ECX=00000000 EFL=0000
+rep movsl  ESI=0805a93c EDI=0805a94c EAX=12345678 ECX=00000000 EFL=0000
+lodsb      ESI=0805a981 EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsw      ESI=0805a982 EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsl      ESI=0805a984 EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsb      ESI=0805a97f EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsw      ESI=0805a97e EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+lodsl      ESI=0805a97c EDI=0805a990 EAX=12345678 ECX=00000011 EFL=0000
+scasb      ESI=0805a980 EDI=0805a991 EAX=12345678 ECX=00000011 EFL=0044
+scasw      ESI=0805a980 EDI=0805a992 EAX=12345678 ECX=00000011 EFL=0044
+scasl      ESI=0805a980 EDI=0805a994 EAX=12345678 ECX=00000011 EFL=0044
+scasb      ESI=0805a980 EDI=0805a98f EAX=12345678 ECX=00000011 EFL=0044
+scasw      ESI=0805a980 EDI=0805a98e EAX=12345678 ECX=00000011 EFL=0044
+scasl      ESI=0805a980 EDI=0805a98c EAX=12345678 ECX=00000011 EFL=0044
+repz scasb ESI=0805a980 EDI=0805a992 EAX=12345678 ECX=0000000f EFL=0004
+repz scasw ESI=0805a980 EDI=0805a994 EAX=12345678 ECX=0000000f EFL=0004
+repz scasl ESI=0805a980 EDI=0805a9d4 EAX=12345678 ECX=00000000 EFL=0044
+repz scasb ESI=0805a980 EDI=0805a98e EAX=12345678 ECX=0000000f EFL=0004
+repz scasw ESI=0805a980 EDI=0805a98c EAX=12345678 ECX=0000000f EFL=0004
+repz scasl ESI=0805a980 EDI=0805a958 EAX=12345678 ECX=00000003 EFL=0085
+repnz scasb ESI=0805a980 EDI=0805a991 EAX=12345678 ECX=00000010 EFL=0044
+repnz scasw ESI=0805a980 EDI=0805a992 EAX=12345678 ECX=00000010 EFL=0044
+repnz scasl ESI=0805a980 EDI=0805a994 EAX=12345678 ECX=00000010 EFL=0044
+repnz scasb ESI=0805a980 EDI=0805a98f EAX=12345678 ECX=00000010 EFL=0044
+repnz scasw ESI=0805a980 EDI=0805a98e EAX=12345678 ECX=00000010 EFL=0044
+repnz scasl ESI=0805a980 EDI=0805a98c EAX=12345678 ECX=00000010 EFL=0044
+cmpsb      ESI=0805a981 EDI=0805a991 EAX=12345678 ECX=00000011 EFL=0044
+cmpsw      ESI=0805a982 EDI=0805a992 EAX=12345678 ECX=00000011 EFL=0044
+cmpsl      ESI=0805a984 EDI=0805a994 EAX=12345678 ECX=00000011 EFL=0044
+cmpsb      ESI=0805a97f EDI=0805a98f EAX=12345678 ECX=00000011 EFL=0044
+cmpsw      ESI=0805a97e EDI=0805a98e EAX=12345678 ECX=00000011 EFL=0044
+cmpsl      ESI=0805a97c EDI=0805a98c EAX=12345678 ECX=00000011 EFL=0044
+repz cmpsb ESI=0805a991 EDI=0805a9a1 EAX=12345678 ECX=00000000 EFL=0044
+repz cmpsw ESI=0805a9a2 EDI=0805a9b2 EAX=12345678 ECX=00000000 EFL=0044
+repz cmpsl ESI=0805a9c4 EDI=0805a9d4 EAX=12345678 ECX=00000000 EFL=0044
+repz cmpsb ESI=0805a96f EDI=0805a97f EAX=12345678 ECX=00000000 EFL=0044
+repz cmpsw ESI=0805a95e EDI=0805a96e EAX=12345678 ECX=00000000 EFL=0044
+repz cmpsl ESI=0805a958 EDI=0805a968 EAX=12345678 ECX=00000007 EFL=0014
+repnz cmpsb ESI=0805a981 EDI=0805a991 EAX=12345678 ECX=00000010 EFL=0044
+repnz cmpsw ESI=0805a982 EDI=0805a992 EAX=12345678 ECX=00000010 EFL=0044
+repnz cmpsl ESI=0805a984 EDI=0805a994 EAX=12345678 ECX=00000010 EFL=0044
+repnz cmpsb ESI=0805a97f EDI=0805a98f EAX=12345678 ECX=00000010 EFL=0044
+repnz cmpsw ESI=0805a97e EDI=0805a98e EAX=12345678 ECX=00000010 EFL=0044
+repnz cmpsl ESI=0805a97c EDI=0805a98c EAX=12345678 ECX=00000010 EFL=0044
diff --git a/test/test_all.py b/test/test_all.py
index 94f3d8ca..8c1cf3f8 100644
--- a/test/test_all.py
+++ b/test/test_all.py
@@ -109,8 +109,9 @@ QEMU_TESTS = {
     "conv": ("tcc", "python"),
     "bcd": ("tcc", "python"),
     "xchg": ("tcc", "python"),
+    "string": ("tcc", "python"),
     # Unsupported
-    # "floats", "string", "misc", "segs", "code16", "exceptions",
+    # "floats", "misc", "segs", "code16", "exceptions",
     # "single_step"
 }