about summary refs log tree commit diff stats
path: root/miasm2/expression/simplifications_common.py
diff options
context:
space:
mode:
authorAjax <commial@gmail.com>2015-11-12 15:47:08 +0100
committerAjax <commial@gmail.com>2015-11-12 15:47:08 +0100
commitc57cb79f9adb570946f02ce96930ee686ad65734 (patch)
treeef0a72d841f055c7ddc72c0a000216ea622c402d /miasm2/expression/simplifications_common.py
parentf0d72245c9a295958a972340c3e895596d682d8e (diff)
downloadmiasm-c57cb79f9adb570946f02ce96930ee686ad65734.tar.gz
miasm-c57cb79f9adb570946f02ce96930ee686ad65734.zip
Simplifications: '>>>', '<<<' with rounds > size
Diffstat (limited to 'miasm2/expression/simplifications_common.py')
-rw-r--r--miasm2/expression/simplifications_common.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/miasm2/expression/simplifications_common.py b/miasm2/expression/simplifications_common.py
index d50e81a1..fe69d0b9 100644
--- a/miasm2/expression/simplifications_common.py
+++ b/miasm2/expression/simplifications_common.py
@@ -45,10 +45,11 @@ def simp_cst_propagation(e_s, e):
                 x2 = mod_size2int[i2.arg.size](i2.arg)
                 o = mod_size2uint[i1.arg.size](x1 >> x2)
             elif op == '>>>':
-                rounds = i2.arg
-                o = i1.arg >> i2.arg | i1.arg << (i1.size - i2.arg)
+                o = (i1.arg >> (i2.arg % i2.size) |
+                     i1.arg << ((i1.size - i2.arg) % i2.size))
             elif op == '<<<':
-                o = i1.arg << i2.arg | i1.arg >> (i1.size - i2.arg)
+                o = (i1.arg << (i2.arg % i2.size) |
+                     i1.arg >> ((i1.size - i2.arg) % i2.size))
             elif op == '/':
                 o = i1.arg / i2.arg
             elif op == '%':