diff options
Diffstat (limited to 'miasm2/arch/msp430/ira.py')
| -rw-r--r-- | miasm2/arch/msp430/ira.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/miasm2/arch/msp430/ira.py b/miasm2/arch/msp430/ira.py index 2a850d82..5b19956e 100644 --- a/miasm2/arch/msp430/ira.py +++ b/miasm2/arch/msp430/ira.py @@ -2,7 +2,8 @@ from miasm2.ir.analysis import ira from miasm2.arch.msp430.sem import ir_msp430 - +from miasm2.ir.ir import AssignBlock +from miasm2.expression.expression import * class ir_a_msp430_base(ir_msp430, ira): @@ -10,6 +11,15 @@ class ir_a_msp430_base(ir_msp430, ira): ir_msp430.__init__(self, loc_db) self.ret_reg = self.arch.regs.R15 + def call_effects(self, addr, instr): + call_assignblk = AssignBlock( + [ + ExprAssign(self.ret_reg, ExprOp('call_func_ret', addr, self.sp, self.arch.regs.R15)), + ExprAssign(self.sp, ExprOp('call_func_stack', addr, self.sp)) + ], + instr + ) + return [call_assignblk], [] class ir_a_msp430(ir_a_msp430_base): |