diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-06-06 15:48:51 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-06-14 09:57:12 +0200 |
| commit | 86f8cd5c64407146128bb849b5416a13fd28cc03 (patch) | |
| tree | 99647bf3c22e818f34793a0b34ad76fe06df729d | |
| parent | b974d4da277ca9a87527f4bedfeb55114f365e90 (diff) | |
| download | miasm-86f8cd5c64407146128bb849b5416a13fd28cc03.tar.gz miasm-86f8cd5c64407146128bb849b5416a13fd28cc03.zip | |
Symbexec: updt api
| -rw-r--r-- | miasm2/ir/symbexec.py | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/miasm2/ir/symbexec.py b/miasm2/ir/symbexec.py index f9444424..d4a8de4c 100644 --- a/miasm2/ir/symbexec.py +++ b/miasm2/ir/symbexec.py @@ -202,34 +202,34 @@ class SymbolicExecutionEngine(object): if expr in cache: ret = cache[expr] #print "In cache!", ret - elif isinstance(expr, m2_expr.ExprInt): + elif expr.is_int(): return expr - elif isinstance(expr, m2_expr.ExprId): + elif expr.is_id(): if isinstance(expr.name, asmblock.AsmLabel) and expr.name.offset is not None: ret = m2_expr.ExprInt(expr.name.offset, expr.size) else: ret = state.get(expr, expr) - elif isinstance(expr, m2_expr.ExprMem): + elif expr.is_mem(): ptr = self.apply_expr_on_state_visit_cache(expr.arg, state, cache, level+1) ret = m2_expr.ExprMem(ptr, expr.size) ret = self.get_mem_state(ret) assert expr.size == ret.size - elif isinstance(expr, m2_expr.ExprCond): + elif expr.is_cond(): cond = self.apply_expr_on_state_visit_cache(expr.cond, state, cache, level+1) src1 = self.apply_expr_on_state_visit_cache(expr.src1, state, cache, level+1) src2 = self.apply_expr_on_state_visit_cache(expr.src2, state, cache, level+1) ret = m2_expr.ExprCond(cond, src1, src2) - elif isinstance(expr, m2_expr.ExprSlice): + elif expr.is_slice(): arg = self.apply_expr_on_state_visit_cache(expr.arg, state, cache, level+1) ret = m2_expr.ExprSlice(arg, expr.start, expr.stop) - elif isinstance(expr, m2_expr.ExprOp): + elif expr.is_op(): args = [] for oarg in expr.args: arg = self.apply_expr_on_state_visit_cache(oarg, state, cache, level+1) assert oarg.size == arg.size args.append(arg) ret = m2_expr.ExprOp(expr.op, *args) - elif isinstance(expr, m2_expr.ExprCompose): + elif expr.is_compose(): args = [] for arg in expr.args: args.append(self.apply_expr_on_state_visit_cache(arg, state, cache, level+1)) @@ -390,7 +390,7 @@ class SymbolicExecutionEngine(object): elif isinstance(dst, m2_expr.ExprId): pool_out[dst] = src else: - raise ValueError("affected zarb", str(dst)) + raise ValueError("Unknown destination type", str(dst)) return pool_out.iteritems() @@ -442,6 +442,7 @@ class SymbolicExecutionEngine(object): """ for assignblk in irb.irs: if step: + print 'Instr', assignblk.instr print 'Assignblk:' print assignblk print '_' * 80 |