about summary refs log tree commit diff stats
path: root/miasm2/expression/simplifications_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/expression/simplifications_common.py')
-rw-r--r--miasm2/expression/simplifications_common.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index 4f712bf0..489869f3 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -65,6 +65,18 @@ def simp_cst_propagation(e_s, e):
                 x1 = mod_size2int[i1.arg.size](i1.arg)
                 x2 = mod_size2int[i2.arg.size](i2.arg)
                 o = mod_size2uint[i1.arg.size](x1 % x2)
+            elif op == 'umod':
+                assert(i2.arg.arg)
+                x1 = mod_size2uint[i1.arg.size](i1.arg)
+                x2 = mod_size2uint[i2.arg.size](i2.arg)
+                o = mod_size2uint[i1.arg.size](x1 % x2)
+            elif op == 'udiv':
+                assert(i2.arg.arg)
+                x1 = mod_size2uint[i1.arg.size](i1.arg)
+                x2 = mod_size2uint[i2.arg.size](i2.arg)
+                o = mod_size2uint[i1.arg.size](x1 / x2)
+
+
 
             o = ExprInt_fromsize(i1.size, o)
             args.append(o)
@@ -115,7 +127,7 @@ def simp_cst_propagation(e_s, e):
 
     # op A => A
     if op in ['+', '*', '^', '&', '|', '>>', '<<',
-        'a>>', '<<<', '>>>', 'idiv', 'imod'] and len(args) == 1:
+              'a>>', '<<<', '>>>', 'idiv', 'imod', 'umod', 'udiv'] and len(args) == 1:
         return args[0]
 
     # A-B => A + (-B)