about summary refs log tree commit diff stats
path: root/miasm2/core/cpu.py
diff options
context:
space:
mode:
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