From 1762857e070241533412e63cf1d417e678700a70 Mon Sep 17 00:00:00 2001 From: Tim Blazytko Date: Mon, 1 Feb 2016 19:30:53 +0100 Subject: z3/smt2 translator: added methods for endianness --- miasm2/ir/translators/smt2.py | 10 ++++++++++ miasm2/ir/translators/z3_ir.py | 9 +++++++++ 2 files changed, 19 insertions(+) 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) -- cgit 1.4.1