Fix il vm aezi and aezs sync behavior (#3611)

This commit is contained in:
Heersin 2023-06-26 20:47:49 +08:00 committed by GitHub
parent 2239fa4402
commit c648b8ae10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 3 deletions

View file

@ -436,6 +436,9 @@ RZ_IPI void rz_core_analysis_il_reinit(RzCore *core) {
// initialize the program counter with the current offset
rz_reg_set_value_by_role(core->analysis->reg, RZ_REG_NAME_PC, core->offset);
rz_core_reg_update_flags(core);
// sync back to il vm
rz_analysis_il_vm_sync_from_reg(core->analysis->il_vm, core->analysis->reg);
}
}
@ -483,6 +486,7 @@ RZ_IPI bool rz_core_analysis_il_vm_set(RzCore *core, const char *var_name, ut64
}
if (val) {
rz_il_vm_set_global_var(vm->vm, var_name, val);
rz_analysis_il_vm_sync_to_reg(vm, core->analysis->reg);
}
return true;
}

View file

@ -602,7 +602,7 @@ VALIDATOR_PURE(fconvert) {
VALIDATOR_DESCEND(args->f, &sort);
VALIDATOR_ASSERT(sort.type == RZ_IL_TYPE_PURE_FLOAT, "operand of %s op is not a float.\n", rz_il_op_pure_code_stringify(op->code));
*sort_out = sort;
*sort_out = rz_il_sort_pure_float(args->format);
return true;
}

View file

@ -87,8 +87,6 @@
#define FMOD(rmode, flx, fly) rz_il_op_new_fdiv(rmode, flx, fly)
#define FPOW(rmode, flx, fly) rz_il_op_new_fpow(rmode, flx, fly)
#define FMAD(rmode, flx, fly, flz) rz_il_op_new_fmad(rmode, flx, fly, flz)
#define FNEQ(flx, fly) OR(FORDER(flx, fly), FORDER(DUP(flx), DUP(fly)))
#define FEQ(flx, fly) NOT(FNEQ(flx, fly))
#define IL_FALSE rz_il_op_new_b0()
#define IL_TRUE rz_il_op_new_b1()
@ -97,6 +95,9 @@
#define AND(x, y) rz_il_op_new_bool_and(x, y)
#define OR(x, y) rz_il_op_new_bool_or(x, y)
#define FNEQ(flx, fly) OR(FORDER(flx, fly), FORDER(DUP(flx), DUP(fly)))
#define FEQ(flx, fly) INV(FNEQ(flx, fly))
#define UNSIGNED(n, x) rz_il_op_new_unsigned(n, x)
#define SIGNED(n, x) rz_il_op_new_signed(n, x)
#define APPEND(high, low) rz_il_op_new_append(high, low)