301 if (bv &&
shift && fill_bit) {
323 if (bv &&
shift && fill_bit) {
static RZ_NULLABLE RzILOpBitVector * shift(RzILOpBitVector *val, RZ_NULLABLE RzILOpBool **carry_out, arm_shifter type, RZ_OWN RzILOpBitVector *dist)
static ut32 neg(ArmOp *op)
RZ_API RzILBool * rz_il_bool_new(bool true_or_false)
RZ_API void rz_il_bool_free(RzILBool *bool_var)
RZ_API RZ_OWN RzILEvent * rz_il_event_exception_new(RZ_NONNULL const char *exception)
RZ_API RZ_NULLABLE RZ_OWN RzBitVector * rz_il_evaluate_bitv(RZ_NONNULL RzILVM *vm, RZ_NONNULL RzILOpBitVector *op)
RZ_API void rz_il_vm_event_add(RzILVM *vm, RzILEvent *evt)
RZ_API RZ_NULLABLE RZ_OWN RzILBool * rz_il_evaluate_bool(RZ_NONNULL RzILVM *vm, RZ_NONNULL RzILOpBool *op)
#define rz_return_val_if_fail(expr, val)
RZ_API RZ_OWN RzBitVector * rz_bv_add(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y, RZ_NULLABLE bool *carry)
RZ_API RZ_OWN RzBitVector * rz_bv_dup(const RZ_NONNULL RzBitVector *bv)
RZ_API bool rz_bv_lsb(RZ_NONNULL RzBitVector *bv)
RZ_API RZ_OWN RzBitVector * rz_bv_or(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API void rz_bv_free(RZ_NULLABLE RzBitVector *bv)
RZ_API bool rz_bv_ule(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API bool rz_bv_lshift_fill(RZ_NONNULL RzBitVector *bv, ut32 size, bool fill_bit)
RZ_API bool rz_bv_sle(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API bool rz_bv_is_zero_vector(RZ_NONNULL const RzBitVector *x)
RZ_API RZ_OWN RzBitVector * rz_bv_mod(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API bool rz_bv_set_all(RZ_NONNULL RzBitVector *bv, bool b)
RZ_API ut32 rz_bv_to_ut32(RZ_NONNULL const RzBitVector *x)
RZ_API RZ_OWN RzBitVector * rz_bv_xor(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API RZ_OWN RzBitVector * rz_bv_append(RZ_NONNULL RzBitVector *bv1, RZ_NONNULL RzBitVector *bv2)
RZ_API RZ_OWN RzBitVector * rz_bv_mul(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API bool rz_bv_msb(RZ_NONNULL RzBitVector *bv)
RZ_API RZ_OWN RzBitVector * rz_bv_and(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API RZ_OWN RzBitVector * rz_bv_new(ut32 length)
RZ_API RZ_OWN RzBitVector * rz_bv_sub(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y, RZ_NULLABLE bool *borrow)
RZ_API bool rz_bv_rshift_fill(RZ_NONNULL RzBitVector *bv, ut32 size, bool fill_bit)
RZ_API RZ_OWN RzBitVector * rz_bv_sdiv(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API RZ_OWN RzBitVector * rz_bv_smod(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API ut32 rz_bv_copy_nbits(RZ_NONNULL const RzBitVector *src, ut32 src_start_pos, RZ_NONNULL RzBitVector *dst, ut32 dst_start_pos, ut32 nbit)
RZ_API bool rz_bv_eq(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
RZ_API RZ_OWN RzBitVector * rz_bv_div(RZ_NONNULL RzBitVector *x, RZ_NONNULL RzBitVector *y)
signatures of core theory opcodes
@ RZ_IL_TYPE_PURE_BITVECTOR
ut32 len
number of bits – virtual / logical
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
RzILOpBitVector * x
left operand
RzILOpBitVector * y
right operand
op structure for appending 2 bitv: MSB:LSB high:low
RzILOpBitVector * low
bitvector occupying the least significant bits
RzILOpBitVector * high
bitvector occupying the most significant bits
value is a bitvector constant.
RzBitVector * value
value of bitvector
RzILOpBitVector * bv
unary operand
op structure for casting bitv
RzILOpBool * fill
If m = size val - length > 0 then m fill-bits are prepended to the most significant part of the vecto...
RzILOpBitVector * val
value to cast
ut32 length
new bits length
op structure for binary comparison ops ('a bitv -> 'a bitv -> bool)
RzILOpBitVector * x
index of operand 1
RzILOpBitVector * y
index of operand 2
op structure for lshift and rshift (bool -> 's bitv -> 'b bitv -> 's bitv)
RzILOpBitVector * x
index of operand 1
RzILOpBitVector * y
index of operand 2
RzILOpBool * fill_bit
index of fill bit
op structure for 's bitv -> bool [MSB] msb x is the most significant bit of x. [LSB] lsb x is the lea...
An IL op performing a pure computation, 'a pure.
Low-level VM to execute raw IL code.
void * rz_il_handler_append(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_shiftr(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_eq(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_sle(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_add(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_mod(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_shiftl(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_sdiv(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_smod(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_ule(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_cast(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_neg(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_logical_and(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_logical_xor(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_lsb(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_bitv(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_is_zero(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_mul(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_logical_or(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_logical_not(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_sub(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_msb(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)
void * rz_il_handler_div(RzILVM *vm, RzILOpBitVector *op, RzILTypePure *type)