about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--example/expression/find_conditions.py6
-rw-r--r--example/expression/manip_expression2.py2
-rw-r--r--miasm/arch/ia32_sem.py6
-rw-r--r--miasm/expression/expression_eval_abstract.py4
4 files changed, 12 insertions, 6 deletions
diff --git a/example/expression/find_conditions.py b/example/expression/find_conditions.py
index 3fe64f2c..f57a83ad 100644
--- a/example/expression/find_conditions.py
+++ b/example/expression/find_conditions.py
@@ -97,9 +97,9 @@ argc = ExprId('argc')
 argv = ExprId('argv')
 ret_addr = ExprId('ret_addr')
 
-machine.eval_instr(push(('u32', 'u32'), argv))
-machine.eval_instr(push(('u32', 'u32'), argc))
-machine.eval_instr(push(('u32', 'u32'), ret_addr))
+machine.eval_instr(push(ia32info(), argv))
+machine.eval_instr(push(ia32info(), argc))
+machine.eval_instr(push(ia32info(), ret_addr))
 
 ad = int(ad_to_dis, 16)
 print 'disasm', hex(ad)
diff --git a/example/expression/manip_expression2.py b/example/expression/manip_expression2.py
index cbdd8f9d..e8b73a92 100644
--- a/example/expression/manip_expression2.py
+++ b/example/expression/manip_expression2.py
@@ -16,7 +16,7 @@ def get_rw(exprs):
 a = ExprId('eax')
 b = ExprMem(ExprId('ebx'), 32)
 
-exprs = add(('u32', 'u32'), a, b)
+exprs = add(ia32info(), a, b)
 o_r, o_w = get_rw(exprs)
 # read ID
 print 'r:', [str(x) for x in o_r]
diff --git a/miasm/arch/ia32_sem.py b/miasm/arch/ia32_sem.py
index bac0a90c..af73c359 100644
--- a/miasm/arch/ia32_sem.py
+++ b/miasm/arch/ia32_sem.py
@@ -390,6 +390,12 @@ tab_afs_int ={x86_afs.u08:uint8,
               x86_afs.u16:uint16,
               x86_afs.u32:uint32,
               }
+
+class ia32info:
+    opmode = "u32"
+    admode = "u32"
+    # offset
+
 """
 http://www.emulators.com/docs/nx11_flags.htm
 
diff --git a/miasm/expression/expression_eval_abstract.py b/miasm/expression/expression_eval_abstract.py
index 27f13e3b..99c0ef8c 100644
--- a/miasm/expression/expression_eval_abstract.py
+++ b/miasm/expression/expression_eval_abstract.py
@@ -604,8 +604,8 @@ class eval_abs:
                         out.append((ee, off_base, off_base+ee.get_size()))
                         off_base += ee.get_size()
                     else:
-                        m = min(a.get_size()+off*8, x.get_size())
-                        ee = ExprSlice(self.pool[x], 0, m)
+                        m = min(a.get_size()-off*8, x.get_size())
+                        ee = ExprSlice(self.pool[x], -off*8, m)
                         ee = expr_simp(ee)
                         out.append((ee, off_base, off_base+ee.get_size()))
                         off_base += ee.get_size()