diff options
| author | serpilliere <devnull@localhost> | 2014-08-05 11:03:56 +0200 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2014-08-05 11:03:56 +0200 |
| commit | db8c7152ac455ad0b1be151641f77d1b36d0c854 (patch) | |
| tree | 664d6565b9dcf719cf693c12556c615ac44963bb /miasm2/core/cpu.py | |
| parent | dbd0183692af7f68a0636a763df96827b43f9cde (diff) | |
| download | miasm-db8c7152ac455ad0b1be151641f77d1b36d0c854.tar.gz miasm-db8c7152ac455ad0b1be151641f77d1b36d0c854.zip | |
cpu/arch: arg2str moved in instruction class
Diffstat (limited to 'miasm2/core/cpu.py')
| -rw-r--r-- | miasm2/core/cpu.py | 52 |
1 files changed, 7 insertions, 45 deletions
diff --git a/miasm2/core/cpu.py b/miasm2/core/cpu.py index 2d52eac0..652ba020 100644 --- a/miasm2/core/cpu.py +++ b/miasm2/core/cpu.py @@ -438,10 +438,6 @@ class dum_arg(object): def __init__(self, e=None): self.expr = e - @staticmethod - def arg2str(e): - return str(e) - class bsopt(bs): @@ -612,10 +608,6 @@ class m_arg(object): self.expr = v[0] return start, stop - @staticmethod - def arg2str(e): - return str(e) - class m_reg(m_arg): prio = default_prio @@ -631,10 +623,6 @@ class m_reg(m_arg): def encode(self): return self.expr == self.reg.expr[0] - @staticmethod - def arg2str(e): - return str(e) - class reg_noarg(object): reg_info = None @@ -652,10 +640,6 @@ class reg_noarg(object): self.expr = v[0] return start, stop - @staticmethod - def arg2str(e): - return str(e) - def decode(self, v): v = v & self.lmask if v >= len(self.reg_info.expr): @@ -943,13 +927,10 @@ class metamn(type): class instruction(object): - def __init__(self, name, mode, args, args_str=None, additional_info=None): + def __init__(self, name, mode, args, additional_info=None): self.name = name self.mode = mode self.args = args - if args_str is None: - raise NotImplementedError('not fully functional') - self.args_str = args_str self.additional_info = additional_info def gen_args(self, args): @@ -959,11 +940,12 @@ class instruction(object): def __str__(self): o = "%-10s " % self.name args = [] - args_str = self.args_str - for arg, arg_str in zip(self.args, args_str): + #args_str = self.args_str + #for arg, arg_str in zip(self.args, args_str): + for i, arg in enumerate(self.args): if not isinstance(arg, Expr): raise ValueError('zarb arg type') - x = arg_str(arg) + x = self.arg2str(arg, pos = i) args.append(x) o += self.gen_args(args) return o @@ -1253,15 +1235,7 @@ class cls_mn(object): if c is None: continue c_args = [a.expr for a in c.args] - c_args_str = [] - for a in c.args: - if hasattr(a, 'arg2str'): - c_args_str.append(a.arg2str) - else: - raise NotImplementedError('not fully functional') - c_args_str.append(str) - # c_args_str = [a.arg2str for a in c.args] - instr = cls.instruction(c.name, mode, c_args, c_args_str, + instr = cls.instruction(c.name, mode, c_args, additional_info=c.additional_info()) instr.l = prefix_len + total_l / 8 instr.b = cls.getbytes(bs, offset, total_l / 8) @@ -1389,15 +1363,7 @@ class cls_mn(object): c = out[0] c_args = out_args[0] - c_args_str = [] - for a in c.args: - if hasattr(a, 'arg2str'): - c_args_str.append(a.arg2str) - else: - raise NotImplementedError('not fully functional') - c_args_str.append(str) - - instr = cls.instruction(c.name, mode, c_args, c_args_str, + instr = cls.instruction(c.name, mode, c_args, additional_info=c.additional_info()) # instruction(name, attrib, args, args_str, additional_info): # c = c() @@ -1720,10 +1686,6 @@ class imm_noarg(object): return False return v - @staticmethod - def arg2str(e): - return str(e) - def decode(self, v): v = v & self.lmask v = self.decodeval(v) |