Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
regs.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 
4 from miasm2.expression.expression import ExprId
5 from miasm2.core.cpu import gen_reg, gen_regs
6 
7 
8 gen_reg('PC', globals())
9 gen_reg('PC_FETCH', globals())
10 
11 gen_reg('R_LO', globals())
12 gen_reg('R_HI', globals())
13 
14 PC_init = ExprId("PC_init")
15 PC_FETCH_init = ExprId("PC_FETCH_init")
16 
17 regs32_str = ["ZERO", 'AT', 'V0', 'V1'] +\
18  ['A%d'%i for i in xrange(4)] +\
19  ['T%d'%i for i in xrange(8)] +\
20  ['S%d'%i for i in xrange(8)] +\
21  ['T%d'%i for i in xrange(8, 10)] +\
22  ['K0', 'K1'] +\
23  ['GP', 'SP', 'FP', 'RA']
24 
25 regs32_expr = [ExprId(x, 32) for x in regs32_str]
26 
27 regs_flt_str = ['F%d'%i for i in xrange(0x20)]
28 
29 regs_fcc_str = ['FCC%d'%i for i in xrange(8)]
30 
31 R_LO = ExprId('R_LO', 32)
32 R_HI = ExprId('R_HI', 32)
33 
34 R_LO_init = ExprId('R_LO_init', 32)
35 R_HI_init = ExprId('R_HI_init', 32)
36 
37 
38 cpr0_str = ["CPR0_%d"%x for x in xrange(0x100)]
39 cpr0_str[0] = "INDEX"
40 cpr0_str[16] = "ENTRYLO0"
41 cpr0_str[24] = "ENTRYLO1"
42 cpr0_str[40] = "PAGEMASK"
43 cpr0_str[72] = "COUNT"
44 cpr0_str[80] = "ENTRYHI"
45 cpr0_str[104] = "CAUSE"
46 cpr0_str[112] = "EPC"
47 cpr0_str[128] = "CONFIG"
48 cpr0_str[152] = "WATCHHI"
49 
50 regs_cpr0_expr, regs_cpr0_init, regs_cpr0_info = gen_regs(cpr0_str, globals())
51 
52 gpregs_expr, gpregs_init, gpregs = gen_regs(regs32_str, globals())
53 regs_flt_expr, regs_flt_init, fltregs = gen_regs(regs_flt_str, globals(), sz=64)
54 regs_fcc_expr, regs_fcc_init, fccregs = gen_regs(regs_fcc_str, globals())
55 
56 
57 all_regs_ids = [PC, PC_FETCH, R_LO, R_HI] + gpregs_expr + regs_flt_expr + \
58  regs_fcc_expr + regs_cpr0_expr
59 all_regs_ids_byname = dict([(x.name, x) for x in all_regs_ids])
60 all_regs_ids_init = [PC_init, PC_FETCH_init, R_LO_init, R_HI_init] + \
61  gpregs_init + regs_flt_init + regs_fcc_init + regs_cpr0_init
62 all_regs_ids_no_alias = all_regs_ids[:]
63 
64 regs_init = {}
65 for i, r in enumerate(all_regs_ids):
66  regs_init[r] = all_regs_ids_init[i]
def gen_reg
Definition: cpu.py:105
def gen_regs
Definition: cpu.py:135