예제 #1
0
 def _adjust_value_size(num_bits: int, v_in: BV) -> BV:
     """
     Ensure given bv is num_bits bits long by either zero extending or truncating.
     """
     if v_in.size() > num_bits:
         v_out = v_in[num_bits - 1:0]
         l.debug('Truncating value %s (%d bits) to %s (%d bits)', v_in,
                 v_in.size(), v_out, num_bits)
         return v_out
     elif v_in.size() < num_bits:
         v_out = v_in.zero_extend(num_bits - v_in.size())
         l.debug('Extending value %s (%d bits) to %s (%d bits)', v_in,
                 v_in.size(), v_out, num_bits)
         return v_out
     else:
         return v_in
예제 #2
0
 def evaluate_unary(self, size_out: int, size_in: int, in1: BV) -> BV:
     return in1.zero_extend((size_out - size_in) * 8)