diff options
| author | serpilliere <devnull@localhost> | 2012-06-22 11:11:28 +0200 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2012-06-22 11:11:28 +0200 |
| commit | b35f0f2217f4ffe27d46f6618d54689746f50af0 (patch) | |
| tree | 463d9550f6c9ff23ef796f5fc6c5ab29cc64a7bb | |
| parent | 19fe36322489198269f449d653fff71195af9805 (diff) | |
| download | miasm-b35f0f2217f4ffe27d46f6618d54689746f50af0.tar.gz miasm-b35f0f2217f4ffe27d46f6618d54689746f50af0.zip | |
expression eval abs: fix missing uint1
| -rw-r--r-- | miasm/expression/expression.py | 4 | ||||
| -rw-r--r-- | miasm/expression/expression_eval_abstract.py | 6 | ||||
| -rw-r--r-- | miasm/expression/expression_helper.py | 8 |
3 files changed, 12 insertions, 6 deletions
diff --git a/miasm/expression/expression.py b/miasm/expression/expression.py index 921b1166..6e8d25e9 100644 --- a/miasm/expression/expression.py +++ b/miasm/expression/expression.py @@ -766,8 +766,8 @@ tab_uintsize ={1:uint1, 64:uint64 } -def ExprInt08(i): - return ExprInt(uint08(i)) +def ExprInt8(i): + return ExprInt(uint8(i)) def ExprInt16(i): return ExprInt(uint16(i)) def ExprInt32(i): diff --git a/miasm/expression/expression_eval_abstract.py b/miasm/expression/expression_eval_abstract.py index 43feb031..9fc20c4f 100644 --- a/miasm/expression/expression_eval_abstract.py +++ b/miasm/expression/expression_eval_abstract.py @@ -33,7 +33,8 @@ mymaxuint = {8:0xFFL, #expression evaluation in integer domain -tab_int_size = {uint8:8, +tab_int_size = {uint1:1, + uint8:8, uint16:16, uint32:32, uint64:64 @@ -44,7 +45,8 @@ tab_intsize = {8:int8, 32:int32, 64:int64 } -tab_uintsize ={8:uint8, +tab_uintsize ={1:uint1, + 8:uint8, 16:uint16, 32:uint32, 64:uint64 diff --git a/miasm/expression/expression_helper.py b/miasm/expression/expression_helper.py index ffa8cbd3..39f643f1 100644 --- a/miasm/expression/expression_helper.py +++ b/miasm/expression/expression_helper.py @@ -17,7 +17,8 @@ # from miasm.expression.expression import * -tab_size_int = {8:uint8, +tab_size_int = {1:uint1, + 8:uint8, 16:uint16, 32:uint32, 64:uint64, @@ -154,7 +155,9 @@ def _expr_simp(e): i1 = args.pop() i2 = args.pop() if i1.get_size() != i2.get_size(): - raise ValueError("diff size! %s"%(str(e))) + raise ValueError("diff size! %s %r %r"%(str(e), + i1.get_size(), + i2.get_size())) if op == '+': o = i1.arg + i2.arg elif op == '*': @@ -286,6 +289,7 @@ def _expr_simp(e): if total_bit in tab_size_int: return ExprInt(tab_size_int[total_bit]((uint64((e.arg.arg)>>e.start)) & mask)) else: + fds return ExprInt(type(e.arg.arg)((uint64((e.arg.arg)>>e.start)) & mask)) # Slice(Slice(A, x), y) => Slice(A, z) elif isinstance(e.arg, ExprSlice): |