about summary refs log tree commit diff stats
path: root/example/expression/manip_expression2.py
blob: cbdd8f9d0aaf6b7e685f87d91245b241153fdea2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from miasm.arch.ia32_sem import *

print 'simple expression use demo: get read/written stuff for instruction:'
print 'add eax, [ebx]'
print

def get_rw(exprs):
    o_r = set()
    o_w = set()
    for e in exprs:
        o_r.update(e.get_r(mem_read=True))
    for e in exprs:
        o_w.update(e.get_w())
    return o_r, o_w

a = ExprId('eax')
b = ExprMem(ExprId('ebx'), 32)

exprs = add(('u32', 'u32'), a, b)
o_r, o_w = get_rw(exprs)
# read ID
print 'r:', [str(x) for x in o_r]
# ['eax', '@32[ebx]', 'ebx']

# written ID
print 'w:', [str(x) for x in o_w]
# ['eax', 'pf', 'af', 'of', 'zf', 'cf', 'nf']