6 filename = os.environ.get('PYTHONSTARTUP')
7 if filename and os.path.isfile(filename):
10 from miasm2.core.cpu import parse_ast
11 from miasm2.arch.x86_arch import mn_x86, base_expr, variable
12 from miasm2.core.bin_stream import bin_stream
13 from miasm2.core import parse_asm
14 from elfesteem import *
16 from miasm2.core import asmbloc
18 from miasm2.expression.expression import *
21 def my__sub__(self, a):
22 return ExprOp('-', self, a)
23 Expr.__sub__ = my__sub__
35 def my_ast_int2expr(a):
37 def my_ast_id2expr(t):
40 if not t in reg_and_id:
43 return reg_and_id.get(t, ExprId(t, size=32))
45 my_var_parser = parse_ast(my_ast_id2expr, my_ast_int2expr)
46 base_expr.setParseAction(my_var_parser)
48 all_bloc, symbol_pool = parse_asm.parse_txt(mn_x86, 32, '''
50 PUSH q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3
55 a = all_bloc[0][0].lines[0].args[0]
60 def ExprOp_to_Math(self):
61 print self.op, self.args
62 ops2 = {'+':'f32_add',
66 out = [x.Expr_to_Math() for x in self.args]
67 if len(self.args) == 1:
68 return "f32_neg(%s)"%(out[0])
74 last = '%s(%s, %s)'%(ops2[self.op],
78 def ExprId_to_Math(self):
82 def ExprInt_to_Math(self):
83 return "f32_from_double(%s)"%int(self.arg)
84 ExprOp.Expr_to_Math = ExprOp_to_Math
85 ExprId.Expr_to_Math = ExprId_to_Math
86 ExprInt.Expr_to_Math = ExprInt_to_Math