diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-04-05 16:25:26 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2018-04-18 09:54:48 +0200 |
| commit | dd51f5871fd21b0a6da7f318661f3cb9fd62ad50 (patch) | |
| tree | e3bbfb04f7ed9429fe9b65dde7525963ebc2a3ca /miasm2/core/cpu.py | |
| parent | 537df5fd7fde0bad3c0820d721437849c8a46939 (diff) | |
| download | miasm-dd51f5871fd21b0a6da7f318661f3cb9fd62ad50.tar.gz miasm-dd51f5871fd21b0a6da7f318661f3cb9fd62ad50.zip | |
CPU: add reg_info from dict
Diffstat (limited to 'miasm2/core/cpu.py')
| -rw-r--r-- | miasm2/core/cpu.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/miasm2/core/cpu.py b/miasm2/core/cpu.py index 2d455294..57057a85 100644 --- a/miasm2/core/cpu.py +++ b/miasm2/core/cpu.py @@ -100,6 +100,24 @@ class reg_info: return self.expr.index(e) + +class reg_info_dct: + + def __init__(self, reg_expr): + self.dct_str_inv = dict((v.name, k) for k, v in reg_expr.iteritems()) + self.dct_expr = reg_expr + self.dct_expr_inv = dict((v, k) for k, v in reg_expr.iteritems()) + reg_str = [v.name for v in reg_expr.itervalues()] + self.parser = literal_list(reg_str).setParseAction(self.reg2expr) + + def reg2expr(self, s): + i = self.dct_str_inv[s[0]] + return self.dct_expr[i] + + def expr2regi(self, e): + return self.dct_expr_inv[e] + + def gen_reg(rname, env, sz=32): """ Gen reg expr and parser |