コード例 #1
0
def do_F2I(op, stack, state):
    prev_type = state.esil["type"]
    state.esil["type"] = FLOAT

    val, = pop_values(stack, state)
    stack.append(z3.fpToUBV(FPM, val, z3.BitVecSort(SIZE)))

    state.esil["type"] = prev_type
コード例 #2
0
def _fptoui(term, smt):
    v = smt.eval(term.arg)
    src = smt.type(term.arg)
    tgt = smt.type(term)

    # TODO: don't generate trivial conds
    return smt._conditional_conv_value([0 <= v, v <= (2**tgt.width) - 1],
                                       z3.fpToUBV(z3.RTZ(), v, _ty_sort(tgt)),
                                       term.name)
コード例 #3
0
ファイル: smtinterp.py プロジェクト: rutgers-apl/alive-nj
def _fptoui(term, smt):
  v = smt.eval(term.arg)
  src = smt.type(term.arg)
  tgt = smt.type(term)

  # TODO: don't generate trivial conds
  return smt._conditional_conv_value(
    [0 <= v, v <= (2**tgt.width)-1],
    z3.fpToUBV(z3.RTZ(), v, _ty_sort(tgt)),
    term.name)
コード例 #4
0
def do_I2F(op, stack, state):
    val, = pop_values(stack, state)

    if z3.is_bv_value(val):
        fp = z3.FPVal(val.as_long(), FSIZE)
    else:
        fp = z3.FP("fp%d" % float_data["count"], FSIZE)
        state.solver.add(z3.fpToUBV(FPM, fp, z3.BitVecSort(SIZE)) == val)
        float_data["count"] += 1

    stack.append(fp)
コード例 #5
0
 def _op_raw_fpToUBV(self, rm, fp, bv_len):
     return z3.fpToUBV(rm, fp, z3.BitVecSort(bv_len, ctx=self._context))
コード例 #6
0
ファイル: backend_z3.py プロジェクト: redragonvn/claripy
 def _op_raw_fpToUBV(self, rm, fp, bv_len):
     return z3.fpToUBV(rm, fp, z3.BitVecSort(bv_len, ctx=self._context))
コード例 #7
0
 def fpToUBV(rm, fp, bv_len):
     return z3.fpToUBV(rm, fp, z3.BitVecSort(bv_len))
コード例 #8
0
ファイル: smtinterp.py プロジェクト: rutgers-apl/alive-nj
def _fptoui(term, smt):
  x = smt.eval(term._args[0])
  tgt = smt.type(term)

  return z3.fpToUBV(z3.RTZ(), x, _ty_sort(tgt))
コード例 #9
0
def _fptoui(term, smt):
    x = smt.eval(term._args[0])
    tgt = smt.type(term)

    return z3.fpToUBV(z3.RTZ(), x, _ty_sort(tgt))