about summary refs log tree commit diff stats
path: root/miasm/expression/expression.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2020-04-03 10:16:25 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2020-04-03 11:56:59 +0200
commit95b24655c797f5b4f96c8834ad6ef2f21748699c (patch)
treea1983268549523fcc94376ee53ebfa4cb2c42f42 /miasm/expression/expression.py
parent1d5127036dc7e1688c102c5781a6618b5dd27f16 (diff)
downloadfocaccia-miasm-95b24655c797f5b4f96c8834ad6ef2f21748699c.tar.gz
focaccia-miasm-95b24655c797f5b4f96c8834ad6ef2f21748699c.zip
Use int(expr) instead of expr.arg.arg
Diffstat (limited to 'miasm/expression/expression.py')
-rw-r--r--miasm/expression/expression.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/miasm/expression/expression.py b/miasm/expression/expression.py
index 9ac631fa..d6813cec 100644
--- a/miasm/expression/expression.py
+++ b/miasm/expression/expression.py
@@ -140,6 +140,32 @@ class DiGraphExpr(DiGraph):
 
         return ""
 
+def is_expr(expr):
+    return isinstance(
+        expr,
+        (
+            ExprInt, ExprId, ExprMem,
+            ExprSlice, ExprCompose, ExprCond,
+            ExprLoc, ExprOp
+        )
+    )
+
+def is_associative(expr):
+    "Return True iff current operation is associative"
+    return (expr.op in ['+', '*', '^', '&', '|'])
+
+def is_commutative(expr):
+    "Return True iff current operation is commutative"
+    return (expr.op in ['+', '*', '^', '&', '|'])
+
+def is_op_segm(expr):
+    """Returns True if is ExprOp and op == 'segm'"""
+    return expr.is_op('segm')
+
+def is_mem_segm(expr):
+    """Returns True if is ExprMem and ptr is_op_segm"""
+    return expr.is_mem() and is_op_segm(expr.ptr)
+
 
 @total_ordering
 class LocKey(object):