about summary refs log tree commit diff stats
path: root/miasm2/core/cpu.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2018-04-05 16:25:26 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2018-04-18 09:54:48 +0200
commitdd51f5871fd21b0a6da7f318661f3cb9fd62ad50 (patch)
treee3bbfb04f7ed9429fe9b65dde7525963ebc2a3ca /miasm2/core/cpu.py
parent537df5fd7fde0bad3c0820d721437849c8a46939 (diff)
downloadmiasm-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.py18
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