diff options
| author | Pierre LALET <pierre.lalet@cea.fr> | 2015-02-16 19:12:15 +0100 |
|---|---|---|
| committer | Pierre LALET <pierre.lalet@cea.fr> | 2015-02-17 12:50:05 +0100 |
| commit | c8c67dbe4f9d28ab106fa04445e5d97359386862 (patch) | |
| tree | fa9a208971819cb588c91cd5a78f54c46eb870c2 | |
| parent | 0c4dde0602f79fcfbd75b2c6e0a01bbfd1371126 (diff) | |
| download | miasm-c8c67dbe4f9d28ab106fa04445e5d97359386862.tar.gz miasm-c8c67dbe4f9d28ab106fa04445e5d97359386862.zip | |
Use `@named_arguments` decorators for `.func_args_*` methods
| -rw-r--r-- | miasm2/arch/arm/jit.py | 9 | ||||
| -rw-r--r-- | miasm2/arch/x86/jit.py | 32 |
2 files changed, 14 insertions, 27 deletions
diff --git a/miasm2/arch/arm/jit.py b/miasm2/arch/arm/jit.py index 8803725e..a9b93f6b 100644 --- a/miasm2/arch/arm/jit.py +++ b/miasm2/arch/arm/jit.py @@ -1,10 +1,10 @@ -from miasm2.jitter.jitload import jitter +import logging + +from miasm2.jitter.jitload import jitter, named_arguments from miasm2.core import asmbloc from miasm2.core.utils import * from miasm2.arch.arm.sem import ir_armb, ir_arml -import logging - log = logging.getLogger('jit_arm') hnd = logging.StreamHandler() hnd.setFormatter(logging.Formatter("[%(levelname)s]: %(message)s")) @@ -34,15 +34,14 @@ class jitter_arml(jitter): # calling conventions + @named_arguments def func_args_stdcall(self, n_args): args = [] for i in xrange(min(n_args, 4)): args.append(self.cpu.get_gpreg()['R%d' % i]) for i in xrange(max(0, n_args - 4)): args.append(self.get_stack_arg(i)) - ret_ad = self.cpu.LR - log.debug('%s %s %s' % (whoami(), hex(ret_ad), [hex(x) for x in args])) return ret_ad, args def func_ret_stdcall(self, ret_addr, ret_value=None): diff --git a/miasm2/arch/x86/jit.py b/miasm2/arch/x86/jit.py index 08bac4db..a984cce8 100644 --- a/miasm2/arch/x86/jit.py +++ b/miasm2/arch/x86/jit.py @@ -1,11 +1,10 @@ -from miasm2.jitter.jitload import jitter +import logging + +from miasm2.jitter.jitload import jitter, named_arguments from miasm2.core import asmbloc from miasm2.core.utils import * from miasm2.arch.x86.sem import ir_x86_16, ir_x86_32, ir_x86_64 - -import logging - log = logging.getLogger('jit_x86') hnd = logging.StreamHandler() hnd.setFormatter(logging.Formatter("[%(levelname)s]: %(message)s")) @@ -75,13 +74,10 @@ class jitter_x86_32(jitter): # calling conventions # stdcall + @named_arguments def func_args_stdcall(self, n_args): ret_ad = self.pop_uint32_t() - args = [] - for _ in xrange(n_args): - args.append(self.pop_uint32_t()) - if log.level <= logging.DEBUG: - log.debug('%s %s %s' % (whoami(), hex(ret_ad), [hex(x) for x in args])) + args = [self.pop_uint32_t() for _ in xrange(n_args)] return ret_ad, args def func_ret_stdcall(self, ret_addr, ret_value1=None, ret_value2=None): @@ -92,14 +88,10 @@ class jitter_x86_32(jitter): self.cpu.EDX = ret_value # cdecl - def func_args_cdecl(self, n_args, dolog=True): + @named_arguments + def func_args_cdecl(self, n_args): ret_ad = self.pop_uint32_t() - args = [] - for i in xrange(n_args): - args.append(self.get_stack_arg(i)) - if dolog and log.level <= logging.DEBUG: - log.debug('%s %s %s' % - (whoami(), hex(ret_ad), [hex(x) for x in args])) + args = [self.get_stack_arg(i) for i in xrange(n_args)] return ret_ad, args def func_ret_cdecl(self, ret_addr, ret_value): @@ -139,17 +131,15 @@ class jitter_x86_64(jitter): x = upck64(self.vm.get_mem(self.cpu.RSP + 8 * n, 8)) return x + @named_arguments def func_args_stdcall(self, n_args): args_regs = ['RCX', 'RDX', 'R8', 'R9'] ret_ad = self.pop_uint64_t() - args = [] for i in xrange(min(n_args, 4)): args.append(self.cpu.get_gpreg()[args_regs[i]]) for i in xrange(max(0, n_args - 4)): args.append(self.get_stack_arg(i)) - - log.debug('%s %s %s' % (whoami(), hex(ret_ad), [hex(x) for x in args])) return ret_ad, args def func_ret_stdcall(self, ret_addr, ret_value=None): @@ -158,17 +148,15 @@ class jitter_x86_64(jitter): self.cpu.RAX = ret_value return True + @named_arguments def func_args_cdecl(self, n_args): args_regs = ['RCX', 'RDX', 'R8', 'R9'] ret_ad = self.pop_uint64_t() - args = [] for i in xrange(min(n_args, 4)): args.append(self.cpu.get_gpreg()[args_regs[i]]) for i in xrange(max(0, n_args - 4)): args.append(self.get_stack_arg(i)) - - log.debug('%s %s %s' % (whoami(), hex(ret_ad), [hex(x) for x in args])) return ret_ad, args def func_ret_cdecl(self, ret_addr, ret_value=None): |