about summary refs log tree commit diff stats
path: root/miasm2/expression/simplifications_explicit.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2019-02-27 20:12:54 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2019-03-05 16:52:51 +0100
commit944806c506446c918eb74c17a605f5f56d4b75e0 (patch)
treeba1d989b03bf8b5544c362a9f61b4e8d3284650f /miasm2/expression/simplifications_explicit.py
parent02bbb30efea4980c9d133947cbbf69fb599071ad (diff)
downloadmiasm-944806c506446c918eb74c17a605f5f56d4b75e0.tar.gz
miasm-944806c506446c918eb74c17a605f5f56d4b75e0.zip
Rename miasm2 to miasm
Diffstat (limited to 'miasm2/expression/simplifications_explicit.py')
-rw-r--r--miasm2/expression/simplifications_explicit.py159
1 files changed, 0 insertions, 159 deletions
diff --git a/miasm2/expression/simplifications_explicit.py b/miasm2/expression/simplifications_explicit.py
deleted file mode 100644
index 00892201..00000000
--- a/miasm2/expression/simplifications_explicit.py
+++ /dev/null
@@ -1,159 +0,0 @@
-from miasm2.expression.modint import size2mask
-from miasm2.expression.expression import ExprInt, ExprCond, ExprCompose, \
-    TOK_EQUAL
-
-
-def simp_ext(_, expr):
-    if expr.op.startswith('zeroExt_'):
-        arg = expr.args[0]
-        if expr.size == arg.size:
-            return arg
-        return ExprCompose(arg, ExprInt(0, expr.size - arg.size))
-
-    if expr.op.startswith("signExt_"):
-        arg = expr.args[0]
-        add_size = expr.size - arg.size
-        new_expr = ExprCompose(
-            arg,
-            ExprCond(
-                arg.msb(),
-                ExprInt(size2mask(add_size), add_size),
-                ExprInt(0, add_size)
-            )
-        )
-        return new_expr
-    return expr
-
-
-def simp_flags(_, expr):
-    args = expr.args
-
-    if expr.is_op("FLAG_EQ"):
-        return ExprCond(args[0], ExprInt(0, 1), ExprInt(1, 1))
-
-    elif expr.is_op("FLAG_EQ_AND"):
-        op1, op2 = args
-        return ExprCond(op1 & op2, ExprInt(0, 1), ExprInt(1, 1))
-
-    elif expr.is_op("FLAG_SIGN_SUB"):
-        return (args[0] - args[1]).msb()
-
-    elif expr.is_op("FLAG_EQ_CMP"):
-        return ExprCond(
-            args[0] - args[1],
-            ExprInt(0, 1),
-            ExprInt(1, 1),
-        )
-
-    elif expr.is_op("FLAG_ADD_CF"):
-        op1, op2 = args
-        res = op1 + op2
-        return (((op1 ^ op2) ^ res) ^ ((op1 ^ res) & (~(op1 ^ op2)))).msb()
-
-    elif expr.is_op("FLAG_SUB_CF"):
-        op1, op2 = args
-        res = op1 - op2
-        return (((op1 ^ op2) ^ res) ^ ((op1 ^ res) & (op1 ^ op2))).msb()
-
-    elif expr.is_op("FLAG_ADD_OF"):
-        op1, op2 = args
-        res = op1 + op2
-        return (((op1 ^ res) & (~(op1 ^ op2)))).msb()
-
-    elif expr.is_op("FLAG_SUB_OF"):
-        op1, op2 = args
-        res = op1 - op2
-        return (((op1 ^ res) & (op1 ^ op2))).msb()
-
-    elif expr.is_op("FLAG_EQ_ADDWC"):
-        op1, op2, op3 = args
-        return ExprCond(
-            op1 + op2 + op3.zeroExtend(op1.size),
-            ExprInt(0, 1),
-            ExprInt(1, 1),
-        )
-
-    elif expr.is_op("FLAG_ADDWC_OF"):
-        op1, op2, op3 = args
-        res = op1 + op2 + op3.zeroExtend(op1.size)
-        return (((op1 ^ res) & (~(op1 ^ op2)))).msb()
-
-    elif expr.is_op("FLAG_SUBWC_OF"):
-        op1, op2, op3 = args
-        res = op1 - (op2 + op3.zeroExtend(op1.size))
-        return (((op1 ^ res) & (op1 ^ op2))).msb()
-
-    elif expr.is_op("FLAG_ADDWC_CF"):
-        op1, op2, op3 = args
-        res = op1 + op2 + op3.zeroExtend(op1.size)
-        return (((op1 ^ op2) ^ res) ^ ((op1 ^ res) & (~(op1 ^ op2)))).msb()
-
-    elif expr.is_op("FLAG_SUBWC_CF"):
-        op1, op2, op3 = args
-        res = op1 - (op2 + op3.zeroExtend(op1.size))
-        return (((op1 ^ op2) ^ res) ^ ((op1 ^ res) & (op1 ^ op2))).msb()
-
-    elif expr.is_op("FLAG_SIGN_ADDWC"):
-        op1, op2, op3 = args
-        return (op1 + op2 + op3.zeroExtend(op1.size)).msb()
-
-    elif expr.is_op("FLAG_SIGN_SUBWC"):
-        op1, op2, op3 = args
-        return (op1 - (op2 + op3.zeroExtend(op1.size))).msb()
-
-
-    elif expr.is_op("FLAG_EQ_SUBWC"):
-        op1, op2, op3 = args
-        res = op1 - (op2 + op3.zeroExtend(op1.size))
-        return ExprCond(res, ExprInt(0, 1), ExprInt(1, 1))
-
-    elif expr.is_op("CC_U<="):
-        op_cf, op_zf = args
-        return op_cf | op_zf
-
-    elif expr.is_op("CC_U>="):
-        op_cf, = args
-        return ~op_cf
-
-    elif expr.is_op("CC_S<"):
-        op_nf, op_of = args
-        return op_nf ^ op_of
-
-    elif expr.is_op("CC_S>"):
-        op_nf, op_of, op_zf = args
-        return ~(op_zf | (op_nf ^ op_of))
-
-    elif expr.is_op("CC_S<="):
-        op_nf, op_of, op_zf = args
-        return op_zf | (op_nf ^ op_of)
-
-    elif expr.is_op("CC_S>="):
-        op_nf, op_of = args
-        return ~(op_nf ^ op_of)
-
-    elif expr.is_op("CC_U>"):
-        op_cf, op_zf = args
-        return ~(op_cf | op_zf)
-
-    elif expr.is_op("CC_U<"):
-        op_cf, = args
-        return op_cf
-
-    elif expr.is_op("CC_NEG"):
-        op_nf, = args
-        return op_nf
-
-    elif expr.is_op("CC_EQ"):
-        op_zf, = args
-        return op_zf
-
-    elif expr.is_op("CC_NE"):
-        op_zf, = args
-        return ~op_zf
-
-    elif expr.is_op("CC_POS"):
-        op_nf, = args
-        return ~op_nf
-
-    return expr
-