about summary refs log tree commit diff stats
path: root/miasm/arch/mips32/lifter_model_call.py
diff options
context:
space:
mode:
authorTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-14 09:09:29 +0000
committerTheofilos Augoustis <theofilos.augoustis@gmail.com>2025-10-14 09:09:29 +0000
commit579cf1d03fb932083e6317967d1613d5c2587fb6 (patch)
tree629f039935382a2a7391bce9253f6c9968159049 /miasm/arch/mips32/lifter_model_call.py
parent51c15d3ea2e16d4fc5f0f01a3b9befc66b1f982e (diff)
downloadfocaccia-miasm-ta/nix.tar.gz
focaccia-miasm-ta/nix.zip
Convert to src-layout ta/nix
Diffstat (limited to 'miasm/arch/mips32/lifter_model_call.py')
-rw-r--r--miasm/arch/mips32/lifter_model_call.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/miasm/arch/mips32/lifter_model_call.py b/miasm/arch/mips32/lifter_model_call.py
deleted file mode 100644
index bd0e8506..00000000
--- a/miasm/arch/mips32/lifter_model_call.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#-*- coding:utf-8 -*-
-
-from miasm.expression.expression import ExprAssign, ExprOp
-from miasm.ir.ir import IRBlock, AssignBlock
-from miasm.ir.analysis import LifterModelCall
-from miasm.arch.mips32.sem import Lifter_Mips32l, Lifter_Mips32b
-
-class LifterModelCallMips32l(Lifter_Mips32l, LifterModelCall):
-    def __init__(self, loc_db):
-        Lifter_Mips32l.__init__(self, loc_db)
-        self.ret_reg = self.arch.regs.V0
-
-    def call_effects(self, ad, instr):
-        call_assignblk = AssignBlock(
-            [
-                ExprAssign(
-                    self.ret_reg,
-                    ExprOp(
-                        'call_func_ret',
-                        ad,
-                        self.arch.regs.A0,
-                        self.arch.regs.A1,
-                        self.arch.regs.A2,
-                        self.arch.regs.A3,
-                    )
-                ),
-            ],
-            instr
-        )
-
-        return [call_assignblk], []
-
-
-    def add_asmblock_to_ircfg(self, block, ircfg, gen_pc_updt=False):
-        """
-        Add a native block to the current IR
-        @block: native assembly block
-        @ircfg: IRCFG instance
-        @gen_pc_updt: insert PC update effects between instructions
-        """
-        loc_key = block.loc_key
-        ir_blocks_all = []
-
-        assignments = []
-        for index, instr in enumerate(block.lines):
-            if loc_key is None:
-                assignments = []
-                loc_key = self.get_loc_key_for_instr(instr)
-            if instr.is_subcall():
-                assert index == len(block.lines) - 2
-
-                # Add last instruction first (before call)
-                split = self.add_instr_to_current_state(
-                    block.lines[-1], block, assignments,
-                    ir_blocks_all, gen_pc_updt
-                )
-                assert not split
-                # Add call effects after the delay splot
-                split = self.add_instr_to_current_state(
-                    instr, block, assignments,
-                    ir_blocks_all, gen_pc_updt
-                )
-                assert split
-                break
-            split = self.add_instr_to_current_state(
-                instr, block, assignments,
-                ir_blocks_all, gen_pc_updt
-            )
-            if split:
-                ir_blocks_all.append(IRBlock(self.loc_db, loc_key, assignments))
-                loc_key = None
-                assignments = []
-        if loc_key is not None:
-            ir_blocks_all.append(IRBlock(self.loc_db, loc_key, assignments))
-
-        new_ir_blocks_all = self.post_add_asmblock_to_ircfg(block, ircfg, ir_blocks_all)
-        for irblock in new_ir_blocks_all:
-            ircfg.add_irblock(irblock)
-        return new_ir_blocks_all
-
-    def get_out_regs(self, _):
-        return set([self.ret_reg, self.sp])
-
-    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
-
-
-
-class LifterModelCallMips32b(Lifter_Mips32b, LifterModelCallMips32l):
-    def __init__(self, loc_db):
-        Lifter_Mips32b.__init__(self, loc_db)
-        self.ret_reg = self.arch.regs.V0