69 const char *lname = op_goto->
lbl;
76 internal_hook(vm,
op);
RZ_API void rz_il_bool_free(RzILBool *bool_var)
RZ_API RZ_OWN RzILEvent * rz_il_event_pc_write_new(RZ_NONNULL const RzBitVector *old_pc, RZ_NONNULL const RzBitVector *new_pc)
RZ_API RZ_OWN RzILEvent * rz_il_event_var_write_new(RZ_NONNULL const char *name, RZ_NULLABLE const RzILVal *old_v, RZ_NONNULL const RzILVal *new_v)
RZ_API RZ_BORROW RzILEffectLabel * rz_il_vm_create_label(RZ_NONNULL RzILVM *vm, RZ_NONNULL const char *name, RZ_NONNULL RZ_BORROW RzBitVector *addr)
RZ_API void rz_il_vm_set_local_var(RZ_NONNULL RzILVM *vm, RZ_NONNULL const char *name, RZ_OWN RzILVal *val)
RZ_API void rz_il_vm_set_global_var(RZ_NONNULL RzILVM *vm, RZ_NONNULL const char *name, RZ_OWN RzILVal *val)
RZ_API RZ_BORROW RzILEffectLabel * rz_il_vm_find_label_by_name(RZ_NONNULL RzILVM *vm, RZ_NONNULL const char *lbl_name)
RZ_API RZ_BORROW RzILVal * rz_il_vm_get_var_value(RZ_NONNULL RzILVM *vm, RzILVarKind kind, const char *name)
RZ_API RZ_BORROW RzILVar * rz_il_vm_get_var(RZ_NONNULL RzILVM *vm, RzILVarKind kind, const char *name)
RZ_API bool rz_il_evaluate_effect(RZ_NONNULL RzILVM *vm, RZ_NONNULL RzILOpEffect *op)
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)
RZ_API RZ_NULLABLE RZ_OWN RzILVal * rz_il_evaluate_val(RZ_NONNULL RzILVM *vm, RZ_NONNULL RzILOpPure *op)
#define rz_return_val_if_fail(expr, val)
RZ_API RZ_OWN RzBitVector * rz_bv_dup(const RZ_NONNULL RzBitVector *bv)
RZ_API void rz_bv_free(RZ_NULLABLE RzBitVector *bv)
RZ_API RZ_OWN char * rz_bv_as_string(RZ_NONNULL RzBitVector *bv)
signatures of core theory opcodes
void(* RzILVmHook)(RzILVM *vm, RzILOpEffect *op)
#define RZ_LOG_WARN(fmtstr,...)
op structure for branch (bool -> 'a eff -> 'a eff -> 'a eff)
RZ_NONNULL RzILOpEffect * true_eff
effect for when condition evaluates to true
RZ_NONNULL RzILOpEffect * false_eff
effect for when condition evaluates to false
op structure for goto (label -> ctrl eff)
const char * lbl
name of the label, const one
op structure for Seq ('a eff -> 'a eff -> 'a eff)
RzILOpEffect * y
perform this second
RzILOpEffect * x
perform this first
op structure for set ('a var -> 'a pure -> data eff)
bool is_local
whether a global variable should be set or a local optionally created and set
const char * v
name of variable, const one
RzILOpPure * x
value to set the variable to
Definition of a variable inside the vm.
Low-level VM to execute raw IL code.
RzBitVector * pc
Program Counter of VM.
op structure for blk (label -> data eff -> ctrl eff -> unit eff)
RzILOpEffect * data_eff
index of data_eff
const char * label
name of the label, const one
RzILOpEffect * ctrl_eff
index of ctrl_eff
op structure for repeat (bool -> data eff -> data eff)
RzILOpBool * condition
index of BOOL condition
RzILOpEffect * data_eff
index of data effect
bool rz_il_handler_branch(RzILVM *vm, RzILOpEffect *op)
bool rz_il_handler_nop(RzILVM *vm, RzILOpEffect *op)
bool rz_il_handler_jmp(RzILVM *vm, RzILOpEffect *op)
static RzILEvent * il_event_new_write_from_var(RzILVM *vm, RzILVar *var, RzILVal *new_val)
static void perform_jump(RzILVM *vm, RZ_OWN RzBitVector *dst)
bool rz_il_handler_set(RzILVM *vm, RzILOpEffect *op)
bool rz_il_handler_goto(RzILVM *vm, RzILOpEffect *op)
bool rz_il_handler_empty(RzILVM *vm, RzILOpEffect *op)
bool rz_il_handler_seq(RzILVM *vm, RzILOpEffect *op)
static void rz_il_set(RzILVM *vm, const char *var_name, bool is_local, RZ_OWN RzILVal *val)
bool rz_il_handler_repeat(RzILVM *vm, RzILOpEffect *op)
bool rz_il_handler_blk(RzILVM *vm, RzILOpEffect *op)
@ RZ_IL_VAR_KIND_GLOBAL
global var, usually bound to a physical representation like a register.