about summary refs log tree commit diff stats
path: root/miasm/arch/mips32/sem.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm/arch/mips32/sem.py')
-rw-r--r--miasm/arch/mips32/sem.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/miasm/arch/mips32/sem.py b/miasm/arch/mips32/sem.py
index a7e649b0..65af7a38 100644
--- a/miasm/arch/mips32/sem.py
+++ b/miasm/arch/mips32/sem.py
@@ -64,24 +64,24 @@ def l_b(arg1):
 def lbu(arg1, arg2):
     """A byte is loaded (unsigned extended) into a register @arg1 from the
     specified address @arg2."""
-    arg1 = mem8[arg2.ptr].zeroExtend(32)
+    arg1 = m2_expr.ExprMem(arg2.ptr, 8).zeroExtend(32)
 
 @sbuild.parse
 def lh(arg1, arg2):
     """A word is loaded into a register @arg1 from the
     specified address @arg2."""
-    arg1 = mem16[arg2.ptr].signExtend(32)
+    arg1 = m2_expr.ExprMem(arg2.ptr, 16).signExtend(32)
 
 @sbuild.parse
 def lhu(arg1, arg2):
     """A word is loaded (unsigned extended) into a register @arg1 from the
     specified address @arg2."""
-    arg1 = mem16[arg2.ptr].zeroExtend(32)
+    arg1 = m2_expr.ExprMem(arg2.ptr, 16).zeroExtend(32)
 
 @sbuild.parse
 def lb(arg1, arg2):
     "A byte is loaded into a register @arg1 from the specified address @arg2."
-    arg1 = mem8[arg2.ptr].signExtend(32)
+    arg1 = m2_expr.ExprMem(arg2.ptr, 8).signExtend(32)
 
 @sbuild.parse
 def ll(arg1, arg2):
@@ -212,15 +212,17 @@ def slt(arg1, arg2, arg3):
 def l_sub(arg1, arg2, arg3):
     arg1 = arg2 - arg3
 
-@sbuild.parse
 def sb(arg1, arg2):
     """The least significant byte of @arg1 is stored at the specified address
     @arg2."""
-    mem8[arg2.ptr] = arg1[:8]
+    e = []
+    e.append(m2_expr.ExprMem(arg2.ptr, 8), arg1[:8])
+    return e, []
 
-@sbuild.parse
 def sh(arg1, arg2):
-    mem16[arg2.ptr] = arg1[:16]
+    e = []
+    e.append(m2_expr.ExprMem(arg2.ptr, 16), arg1[:16])
+    return e, []
 
 @sbuild.parse
 def movn(arg1, arg2, arg3):
@@ -578,7 +580,8 @@ def tne(ir, instr, arg1, arg2):
 
 
 mnemo_func = sbuild.functions
-mnemo_func.update({
+mnemo_func.update(
+    {
         'add.d': add_d,
         'addu': addiu,
         'addi': addiu,
@@ -605,8 +608,11 @@ mnemo_func.update({
         'clz': clz,
         'teq': teq,
         'tne': tne,
-        'break': break_
-        })
+        'break': break_,
+        'sb': sb,
+        'sh': sh,
+    }
+)
 
 def get_mnemo_expr(ir, instr, *args):
     instr, extra_ir = mnemo_func[instr.name.lower()](ir, instr, *args)