diff options
Diffstat (limited to 'miasm/arch/ppc/lifter_model_call.py')
| -rw-r--r-- | miasm/arch/ppc/lifter_model_call.py | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/miasm/arch/ppc/lifter_model_call.py b/miasm/arch/ppc/lifter_model_call.py deleted file mode 100644 index 06691190..00000000 --- a/miasm/arch/ppc/lifter_model_call.py +++ /dev/null @@ -1,87 +0,0 @@ -from miasm.expression.expression import ExprAssign, ExprOp -from miasm.ir.ir import AssignBlock -from miasm.ir.analysis import LifterModelCall -from miasm.arch.ppc.sem import Lifter_PPC32b - - -class LifterModelCallPpc32b(Lifter_PPC32b, LifterModelCall): - - def __init__(self, loc_db, *args): - super(LifterModelCallPpc32b, self).__init__(loc_db, *args) - self.ret_reg = self.arch.regs.R3 - - # for test XXX TODO - def set_dead_regs(self, irblock): - pass - - def get_out_regs(self, _): - return set([self.ret_reg, self.sp]) - - def add_unused_regs(self): - leaves = [self.blocks[label] for label in self.g.leafs()] - for irblock in leaves: - self.set_dead_regs(irblock) - - def call_effects(self, ad, instr): - call_assignblks = AssignBlock( - [ - ExprAssign( - self.ret_reg, - ExprOp( - 'call_func_ret', - ad, - self.sp, - self.arch.regs.R3, - self.arch.regs.R4, - self.arch.regs.R5, - ) - ), - ExprAssign(self.sp, ExprOp('call_func_stack', ad, self.sp)), - ], - instr - ) - return [call_assignblks], [] - - def add_instr_to_current_state(self, instr, block, assignments, ir_blocks_all, gen_pc_updt): - """ - Add the IR effects of an instruction to the current state. - - @instr: native instruction - @block: native block source - @assignments: list of current AssignBlocks - @ir_blocks_all: list of additional effects - @gen_pc_updt: insert PC update effects between instructions - """ - if instr.is_subcall(): - call_assignblks, extra_irblocks = self.call_effects( - instr.getdstflow(None)[0], - instr - ) - assignments += call_assignblks - ir_blocks_all += extra_irblocks - return True - - if gen_pc_updt is not False: - self.gen_pc_update(assignments, instr) - - assignblk, ir_blocks_extra = self.instr2ir(instr) - assignments.append(assignblk) - ir_blocks_all += ir_blocks_extra - if ir_blocks_extra: - return True - return False - - def sizeof_char(self): - return 8 - - def sizeof_short(self): - return 16 - - def sizeof_int(self): - return 32 - - def sizeof_long(self): - return 32 - - def sizeof_pointer(self): - return 32 |