diff options
| -rw-r--r-- | miasm2/expression/modint.py | 4 | ||||
| -rw-r--r-- | test/expression/simplifications.py | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/miasm2/expression/modint.py b/miasm2/expression/modint.py index 72757e75..76896eb9 100644 --- a/miasm2/expression/modint.py +++ b/miasm2/expression/modint.py @@ -67,9 +67,9 @@ class moduint(object): def __mod__(self, y): if isinstance(y, moduint): cls = self.maxcast(y) - return cls(self.arg % y.arg) + return cls(self.arg - (y.arg * int(float(self.arg)/y.arg))) else: - return self.__class__(self.arg % y) + return self.__class__(self.arg - (y * int(float(self.arg)/y))) def __mul__(self, y): if isinstance(y, moduint): diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py index a490c0f8..acef0904 100644 --- a/test/expression/simplifications.py +++ b/test/expression/simplifications.py @@ -317,6 +317,9 @@ to_test = [(ExprInt32(1) - ExprInt32(1), ExprInt32(0)), ExprInt32(0x891A2B3C)), (ExprOp("idiv", ExprInt16(0x0123), ExprInt16(0xfffb))[:8], ExprInt8(0xc6)), + (ExprOp("imod", ExprInt16(0x0123), ExprInt16(0xfffb))[:8], + ExprInt8(0x01)), + ] for e, e_check in to_test[:]: |