diff options
Diffstat (limited to 'miasm/arch/mips32/sem.py')
| -rw-r--r-- | miasm/arch/mips32/sem.py | 28 |
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) |