about summary refs log tree commit diff stats
path: root/miasm2/arch/arm/ira.py
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2018-07-05 18:36:01 +0200
committerGitHub <noreply@github.com>2018-07-05 18:36:01 +0200
commit34aac8a90f77d461d9dee0b9cf0af3c2bff4d42f (patch)
tree359f5947d1c0b26eb9a39e2f9b8244d171348feb /miasm2/arch/arm/ira.py
parent6b6f5ab803d4f1c4d6e78c756f326e99281bc8b8 (diff)
parentdcb1d68179c3802daeeef46ef63593f59aee64e9 (diff)
downloadmiasm-34aac8a90f77d461d9dee0b9cf0af3c2bff4d42f.tar.gz
miasm-34aac8a90f77d461d9dee0b9cf0af3c2bff4d42f.zip
Merge pull request #738 from marilafo/fix_offset_branch_armtl
armtl change branch pc offset
Diffstat (limited to 'miasm2/arch/arm/ira.py')
-rw-r--r--miasm2/arch/arm/ira.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/miasm2/arch/arm/ira.py b/miasm2/arch/arm/ira.py
index 0c84c919..7b26a6e4 100644
--- a/miasm2/arch/arm/ira.py
+++ b/miasm2/arch/arm/ira.py
@@ -2,7 +2,8 @@
 
 from miasm2.ir.analysis import ira
 from miasm2.arch.arm.sem import ir_arml, ir_armtl, ir_armb, ir_armtb
-
+from miasm2.expression.expression import ExprAff, ExprOp
+from miasm2.ir.ir import AssignBlock
 
 class ir_a_arml_base(ir_arml, ira):
     def __init__(self, loc_db=None):
@@ -21,6 +22,19 @@ class ir_a_arml(ir_a_arml_base):
         ir_a_arml_base.__init__(self, loc_db)
         self.ret_reg = self.arch.regs.R0
 
+    def call_effects(self, ad, instr):
+        return [AssignBlock([ExprAff(self.ret_reg, ExprOp('call_func_ret', ad,
+                                                          self.arch.regs.R0,
+                                                          self.arch.regs.R1,
+                                                          self.arch.regs.R2,
+                                                          self.arch.regs.R3,
+                                                          )),
+                             ExprAff(self.sp, ExprOp('call_func_stack',
+                                                     ad, self.sp)),
+                            ],
+                             instr
+                           )]
+
     def get_out_regs(self, _):
         return set([self.ret_reg, self.sp])