diff options
| author | Florent Monjalet <florent.monjalet@gmail.com> | 2015-01-22 23:41:48 +0100 |
|---|---|---|
| committer | Florent Monjalet <florent.monjalet@gmail.com> | 2015-01-22 23:41:48 +0100 |
| commit | 9e72f1402fe24173ab67ee35bdf8d4c051ef18de (patch) | |
| tree | 07e660e46dd1ddd39baaf9c325486176fe5ee17c | |
| parent | cc2a36b1312cf92dc806ff074e3c9e7cebfcfe04 (diff) | |
| download | miasm-9e72f1402fe24173ab67ee35bdf8d4c051ef18de.tar.gz miasm-9e72f1402fe24173ab67ee35bdf8d4c051ef18de.zip | |
Added two test cases for Z3Mem
| -rw-r--r-- | miasm2/ir/translators/z3_ir.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/miasm2/ir/translators/z3_ir.py b/miasm2/ir/translators/z3_ir.py index d9a33cf4..fbb23c98 100644 --- a/miasm2/ir/translators/z3_ir.py +++ b/miasm2/ir/translators/z3_ir.py @@ -229,9 +229,30 @@ if __name__ == '__main__': assert equiv(value, constraints[addr.as_long()]) # equiv short test + # -------------------------------------------------------------------------- assert equiv(z3.BitVec('a', 32) + z3.BitVecVal(3, 32) - z3.BitVecVal(1, 32), z3.BitVec('a', 32) + z3.BitVecVal(2, 32)) + # Z3Mem short tests + # -------------------------------------------------------------------------- + mem = Z3Mem(endianness='<') # little endian + eax = z3.BitVec('EAX', 32) + assert equiv( + # @32[EAX] + mem.get(eax, 32), + # @16[EAX+2] . @16[EAX] + z3.Concat(mem.get(eax+2, 16), + mem.get(eax, 16))) + + # -------------------------------------------------------------------------- + ax = z3.BitVec('AX', 16) + assert not equiv( + # @16[EAX] with EAX = ZeroExtend(AX) + mem.get(z3.ZeroExt(16, ax), 16), + # @16[AX] + mem.get(ax, 16)) + + # TranslatorZ3 tests # -------------------------------------------------------------------------- e = ExprId('x', 32) ez3 = Translator.to_language('z3').from_expr(e) @@ -306,3 +327,5 @@ if __name__ == '__main__': z3_e5 = z3.Extract(31, 0, z3.Concat(z3_four, z3_e)) * z3_five assert equiv(ez3, z3_e5) + print "TranslatorZ3 tests are OK!" + |