about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorPierre Lalet <pierre@droids-corp.org>2015-07-10 20:36:33 +0200
committerPierre Lalet <pierre@droids-corp.org>2015-07-10 20:36:33 +0200
commitcd7e115d6214cc6905a7f068897617de13cba54d (patch)
treeac6072b40022b68391f4edf52ecd226303205489
parent35852d91259bcac6f15c5db4edf2ccf50f00f444 (diff)
parent372a5d904df18e3c7f12b126b4afcf52baf981fa (diff)
downloadmiasm-cd7e115d6214cc6905a7f068897617de13cba54d.tar.gz
miasm-cd7e115d6214cc6905a7f068897617de13cba54d.zip
Merge pull request #191 from serpilliere/expr_simp_slice
Expr simp slice
-rw-r--r--miasm2/expression/simplifications_common.py2
-rw-r--r--test/expression/simplifications.py2
2 files changed, 3 insertions, 1 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index 772a2609..82f2cf75 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -427,7 +427,7 @@ def simp_slice(e_s, e):
                 continue
             # arg is fully included in slice
             elif e.start <= s_start and s_stop <= e.stop:
-                out.append((arg, s_start, s_stop))
+                out.append((arg, s_start - e.start, s_stop - e.start))
                 continue
             # arg is truncated at start
             if e.start > s_start:
diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py
index 2088fc7c..df7fdceb 100644
--- a/test/expression/simplifications.py
+++ b/test/expression/simplifications.py
@@ -254,6 +254,8 @@ to_test = [(ExprInt32(1) - ExprInt32(1), ExprInt32(0)),
                    ExprInt(uint32(0x1L)), 0, 32),
                   (ExprInt(uint32(0x0L)), 32, 64)))
        ),
+    (ExprCompose([(a[:16], 0, 16), (b[:16], 16, 32)])[8:32],
+     ExprCompose([(a[8:16], 0, 8), (b[:16], 8, 24)])),
 
 ]