Files
cea-sec-miasm/example/expression/manip_expression5.py
T
serpilliere 5dec442348 remove useless ExprSliceTo
exprsliceto is only used in exprcompose, so it can be removed from
IL representation, and exprcompose will deal start/stop fields
WARNING: as IL is modified, it may break a lot of scripts
2012-05-08 18:33:55 +02:00

83 lines
1.2 KiB
Python

from miasm.expression.expression import *
print 'simple expression canonization demo'
# define 2 ID
a = ExprId('eax', 32)
b = ExprId('ebx', 32)
print a, b
# eax ebx
# add those ID
c = ExprOp('+', a, b)
print c
# (eax + ebx)
# + automaticaly generates ExprOp('+', a, b)
c = a + b
print c
# (eax + ebx)
# ax is a slice of eax
ax = a[:16]
print ax
# eax[0:16]
#memory deref
d = ExprMem(c, 32)
print d
# @32[(eax + ebx)]
print (a+b).canonize()
print (b+a).canonize()
m = ExprMem(a)
print (a+m).canonize()
print (m+a).canonize()
s = a[:8]
print (a+s).canonize()
print (s+a).canonize()
print (m+s).canonize()
print (s+m).canonize()
i1 = ExprInt(uint32(0x1))
i2 = ExprInt(uint32(0x2))
print (i1+i2).canonize()
print (i2+i1).canonize()
print (a+i2).canonize()
print (i2+a).canonize()
print (m+i2).canonize()
print (i2+m).canonize()
print (s+i2).canonize()
print (i2+s).canonize()
cc = ExprCond(a, b, c)
o = ExprCompose([(a[:8], 8, 16),
(a[8:16], 0, 8)])
print o
print o.canonize()
o2 = ExprCompose([(a[8:16], 0, 8),
(a[:8], 8, 16)])
print o2
print o2.canonize()
print ExprMem(o).canonize()
l = [a, b, c, m, s, i1, i2, o]
print l
print ExprOp('+', *l).canonize()
l.reverse()
print l
print ExprOp('+', *l).canonize()