about summary refs log tree commit diff stats
path: root/miasm2/arch/msp430/ira.py
diff options
context:
space:
mode:
authorCamille Mougey <commial@gmail.com>2019-01-11 13:37:36 +0100
committerGitHub <noreply@github.com>2019-01-11 13:37:36 +0100
commit914b9c443105f1bfbda97d1b7c01d901d561062c (patch)
tree2d326961f9dcd808a08c23963517041e4b7745f0 /miasm2/arch/msp430/ira.py
parent4ffdb499832b4ddf4c9c5ca079d9a0a12c435055 (diff)
parenta424a91dba4342eaa616fcb2fc5a3659784a4565 (diff)
downloadmiasm-914b9c443105f1bfbda97d1b7c01d901d561062c.tar.gz
miasm-914b9c443105f1bfbda97d1b7c01d901d561062c.zip
Merge pull request #915 from serpilliere/msp430_flags
MSP430: Explicit flags
Diffstat (limited to 'miasm2/arch/msp430/ira.py')
-rw-r--r--miasm2/arch/msp430/ira.py12
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):