diff options
| author | Tim Blazytko <tim.blazytko@rub.de> | 2016-02-01 19:30:53 +0100 |
|---|---|---|
| committer | Tim Blazytko <tim.blazytko@rub.de> | 2016-02-01 19:30:53 +0100 |
| commit | 1762857e070241533412e63cf1d417e678700a70 (patch) | |
| tree | 90fa248c396d07e14c8484f6ccdfec290a3859fa | |
| parent | 4fa1cd0a0f78f8a6b46a407a084d30c04aff6bd2 (diff) | |
| download | miasm-1762857e070241533412e63cf1d417e678700a70.tar.gz miasm-1762857e070241533412e63cf1d417e678700a70.zip | |
z3/smt2 translator: added methods for endianness
| -rw-r--r-- | miasm2/ir/translators/smt2.py | 10 | ||||
| -rw-r--r-- | miasm2/ir/translators/z3_ir.py | 9 |
2 files changed, 19 insertions, 0 deletions
diff --git a/miasm2/ir/translators/smt2.py b/miasm2/ir/translators/smt2.py index 96f8dab3..f5fbf427 100644 --- a/miasm2/ir/translators/smt2.py +++ b/miasm2/ir/translators/smt2.py @@ -125,11 +125,21 @@ class TranslatorSMT2(Translator): @endianness: (optional) memory endianness """ super(TranslatorSMT2, self).__init__(**kwargs) + # endianness + self.endianness = endianness # memory abstraction self._mem = SMT2Mem(endianness) # map of translated bit vectors self._bitvectors = dict() + def is_little_endian(self): + """True if this memory is little endian.""" + return self.endianness == "<" + + def is_big_endian(self): + """True if this memory is big endian.""" + return not self.is_little_endian() + def from_ExprInt(self, expr): return bit_vec_val(expr.arg.arg, expr.size) diff --git a/miasm2/ir/translators/z3_ir.py b/miasm2/ir/translators/z3_ir.py index b6645d2b..1e02ea9a 100644 --- a/miasm2/ir/translators/z3_ir.py +++ b/miasm2/ir/translators/z3_ir.py @@ -115,8 +115,17 @@ class TranslatorZ3(Translator): @endianness: (optional) memory endianness """ super(TranslatorZ3, self).__init__(**kwargs) + self.endianness = endianness self._mem = Z3Mem(endianness) + def is_little_endian(self): + """True if this memory is little endian.""" + return self.endianness == "<" + + def is_big_endian(self): + """True if this memory is big endian.""" + return not self.is_little_endian() + def from_ExprInt(self, expr): return z3.BitVecVal(expr.arg.arg, expr.size) |