diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2014-09-02 15:08:26 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2014-09-02 15:08:26 +0200 |
| commit | e8d0fcf8d28d82a8f33138d044f335634ac3a30c (patch) | |
| tree | 58addb7422d8164e5a8fc3996c3ece9c50080ecc | |
| parent | 2659caf02742223b203821466aa162afe0ef717d (diff) | |
| download | miasm-e8d0fcf8d28d82a8f33138d044f335634ac3a30c.tar.gz miasm-e8d0fcf8d28d82a8f33138d044f335634ac3a30c.zip | |
mips sem: fix slt/sltu
| -rw-r--r-- | miasm2/arch/mips32/sem.py | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/miasm2/arch/mips32/sem.py b/miasm2/arch/mips32/sem.py index d96e6b2d..3d895cda 100644 --- a/miasm2/arch/mips32/sem.py +++ b/miasm2/arch/mips32/sem.py @@ -118,17 +118,14 @@ def mul(ir, instr, a, b, c): e.append(ExprAff(a, ExprOp('imul', b, c))) return None, e, [] -def sltu(ir, instr, a, b, c): +def sltu(ir, instr, a, x, y): e = [] - e.append(ExprAff(a, (b-c).msb().zeroExtend(32))) + e.append(ExprAff(a, (((x - y) ^ ((x ^ y) & ((x - y) ^ x))) ^ x ^ y).msb().zeroExtend(32))) return None, e, [] -def slt(ir, instr, a, b, c): +def slt(ir, instr, a, x, y): e = [] - #nf - of - # TODO CHECK - f = (b-c).msb() ^ (((a ^ c) & (~(a ^ b)))).msb() - e.append(ExprAff(a, f.zeroExtend(32))) + e.append(ExprAff(a, ((x - y) ^ ((x ^ y) & ((x - y) ^ x))).zeroExtend(32))) return None, e, [] def l_sub(ir, instr, a, b, c): |