62 memset(vs, 0,
sizeof(*vs));
134 RZ_LOG_ERROR(
"Attempted to bind value to non-existent variable \"%s\"\n",
name);
136 RZ_LOG_ERROR(
"Attempted to bind mis-sorted value to variable \"%s\"\n",
name);
RZ_API void Ht_() free(HtName_(Ht) *ht)
RZ_API RzILSortPure rz_il_value_get_sort(RZ_NONNULL RzILVal *val)
RZ_API void rz_il_value_free(RZ_NULLABLE RzILVal *val)
return memset(p, 0, total)
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
#define rz_return_val_if_fail(expr, val)
#define RZ_LOG_ERROR(fmtstr,...)
RZ_API RzPVector * rz_pvector_new(RzPVectorFree free)
static void ** rz_pvector_push(RzPVector *vec, void *x)
static bool rz_il_sort_pure_eq(RzILSortPure a, RzILSortPure b)
Holds a set of variable definitions and their current contents This is meant only as a low-level cont...
Definition of a variable inside the vm.
RzILSortPure sort
"type" of the variable
static void val_ht_free(HtPPKv *kv)
RZ_API RZ_BORROW RzILVar * rz_il_var_set_create_var(RzILVarSet *vs, const char *name, RzILSortPure sort)
RZ_API void rz_il_variable_free(RZ_NULLABLE RzILVar *var)
RZ_API bool rz_il_var_set_bind(RzILVarSet *vs, const char *name, RZ_OWN RzILVal *val)
RZ_API bool rz_il_var_set_init(RzILVarSet *vs)
RZ_API void rz_il_var_set_reset(RzILVarSet *vs)
RZ_API RZ_OWN RzPVector * rz_il_var_set_get_all(RzILVarSet *vs)
const char * rz_il_var_kind_name(RzILVarKind kind)
RZ_API RZ_BORROW RzILVar * rz_il_var_set_get(RzILVarSet *vs, const char *name)
RZ_API RZ_OWN RzILVar * rz_il_variable_new(RZ_NONNULL const char *name, RzILSortPure sort)
RZ_API RZ_BORROW RzILVal * rz_il_var_set_get_value(RzILVarSet *vs, const char *name)
static void var_ht_free(HtPPKv *kv)
RZ_API void rz_il_var_set_fini(RzILVarSet *vs)
static bool vars_collect_cb(void *user, const void *k, const void *v)
RZ_API RZ_OWN RZ_NULLABLE RzILVal * rz_il_var_set_remove_var(RzILVarSet *vs, const char *name)
@ RZ_IL_VAR_KIND_GLOBAL
global var, usually bound to a physical representation like a register.
@ RZ_IL_VAR_KIND_LOCAL
local var, defined and assigned by set ops, mutable and useable across effects.
@ RZ_IL_VAR_KIND_LOCAL_PURE
local pure var, bound only by let expressions, scope is limited to the let's pure body,...