Exemple #1
0
void TritonToZ3Ast::operator()(triton::ast::BvudivNode& e) {
    Z3Result op1      = this->eval(*e.getChilds()[0]);
    Z3Result op2      = this->eval(*e.getChilds()[1]);
    z3::expr newexpr  = to_expr(this->result.getContext(), Z3_mk_bvudiv(this->result.getContext(), op1.getExpr(), op2.getExpr()));

    this->result.setExpr(newexpr);
}
 z3::expr operator()(const z3::expr& v1, const z3::expr& v2)
 {
     z3::context& ctxt = v1.ctx();
     z3::expr zero(ctxt.bv_val(0, v1.get_sort().bv_size()));
     z3::expr guard(v2 == zero);
     z3::expr ans(ctxt, Z3_mk_bvudiv(ctxt, v1, v2));
     return z3::expr(ctxt, Z3_mk_ite(ctxt, guard, zero, ans));
 }