about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAjax <commial@gmail.com>2015-04-22 15:06:55 +0200
committerAjax <commial@gmail.com>2015-04-22 17:59:32 +0200
commitba595d74ac9d4e18abf80f4c65e77b7e9a1cab2e (patch)
tree7da4eb481572d3f0eb7ee451f1cee138f7369864
parent3805e82bfad5036c89db87fb83eb8812d658100d (diff)
downloadmiasm-ba595d74ac9d4e18abf80f4c65e77b7e9a1cab2e.tar.gz
miasm-ba595d74ac9d4e18abf80f4c65e77b7e9a1cab2e.zip
Mips32: Use variable facility in semantic
-rw-r--r--miasm2/arch/mips32/sem.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/miasm2/arch/mips32/sem.py b/miasm2/arch/mips32/sem.py
index 513cb53d..0d62cc58 100644
--- a/miasm2/arch/mips32/sem.py
+++ b/miasm2/arch/mips32/sem.py
@@ -76,22 +76,25 @@ def lb(Arg1, Arg2):
 @sbuild.parse
 def beq(Arg1, Arg2, Arg3):
     "Branches on @Arg3 if the quantities of two registers @Arg1, @Arg2 are eq"
-    PC = ExprId(ir.get_next_break_label(instr)) if Arg1 - Arg2 else Arg3
-    ir.IRDst = ExprId(ir.get_next_break_label(instr)) if Arg1 - Arg2 else Arg3
+    dst = ExprId(ir.get_next_break_label(instr)) if Arg1 - Arg2 else Arg3
+    PC = dst
+    ir.IRDst = dst
 
 @sbuild.parse
 def bgez(Arg1, Arg2):
     """Branches on @Arg2 if the quantities of register @Arg1 is greater than or
     equal to zero"""
-    PC = ExprId(ir.get_next_break_label(instr)) if Arg1.msb() else Arg2
-    ir.IRDst = ExprId(ir.get_next_break_label(instr)) if Arg1.msb() else Arg2
+    dst = ExprId(ir.get_next_break_label(instr)) if Arg1.msb() else Arg2
+    PC = dst
+    ir.IRDst = dst
 
 @sbuild.parse
 def bne(Arg1, Arg2, Arg3):
     """Branches on @Arg3 if the quantities of two registers @Arg1, @Arg2 are NOT
     equal"""
-    PC = Arg3 if Arg1 - Arg2 else ExprId(ir.get_next_break_label(instr))
-    ir.IRDst = Arg3 if Arg1 - Arg2 else ExprId(ir.get_next_break_label(instr))
+    dst = Arg3 if Arg1 - Arg2 else ExprId(ir.get_next_break_label(instr))
+    PC = dst
+    ir.IRDst = dst
 
 @sbuild.parse
 def lui(Arg1, Arg2):