void exec_opc(t_proc_list **lst, t_proc_list **exec_proc, t_vm *vm) { if (vm->cycles != 0 && vm->cycles == (*lst)->proc->wex) { if (ft_codage_erase(vm->mem, (*lst)->proc) || ft_param_erase(vm->mem, (*lst)->proc)) { if ((*lst)->proc->opc == 1 || (*lst)->proc->opc == 9 || (*lst)->proc->opc == 12 || (*lst)->proc->opc == 15) (*lst)->proc->codage = read_value(vm->mem, (*lst)->proc->prevpc + 1, 1); else (*lst)->proc->codage = read_value(vm->mem, (*lst)->proc->prevpc + 2, 1); reset_param(&((*lst)->proc->par_list)); (*lst)->proc->exec = 1; (*lst)->proc->pc = (*lst)->proc->prevpc; get_opc(lst, vm); } ft_exec(lst, exec_proc, vm); (*lst)->proc->exec = 1; reset_param(&((*lst)->proc->par_list)); (*lst)->proc->opc = 0; (*lst)->proc->wex = 0; (*lst)->proc->codage = 0; } }
short Reset::process(SqlciEnv * sqlci_env) { short retcode = 0; switch (type) { case CONTROL_: retcode = reset_control(sqlci_env); break; case DEFINE_: retcode = reset_define(sqlci_env); break; case PARAM_: retcode = reset_param(sqlci_env); break; case PATTERN_: retcode = reset_pattern(sqlci_env); break; case PREPARED_: retcode = reset_prepared(sqlci_env); break; default: break; } return retcode; }
void instr_sti(t_list *list, t_game *game, t_fork *fork) { (void)list; reset_param(fork); recup_flag(fork, game); put_arg_particular(fork, game); fork->fptr = &exec_sti; fork->nb_cycle_end_instr = NB_CYCLE_STI; }
void instr_lld(t_list *list, t_game *game, t_fork *fork) { (void)list; reset_param(fork); recup_flag(fork, game); put_arg(fork, game); fork->fptr = &exec_lld; fork->nb_cycle_end_instr = NB_CYCLE_LLD; }
void instr_zjmp(t_list *list, t_game *game, t_fork *fork) { char c; (void)list; c = 1; reset_param(fork); while (c < 3) { decal_in_the_int(&fork->first_arg, game->map[(fork->pc + c) % MEM_SIZE]); c = c + 1; } fork->nb_cycle_end_instr = NB_CYCLE_LIVE; fork->fptr = &exec_zjmp; }
void instr_fork(t_list *list, t_game *game, t_fork *fork) { char i; (void)list; i = 1; reset_param(fork); while (i < 3) { decal_in_the_int(&fork->first_arg, game->map[(fork->pc + i) % MEM_SIZE]); i = i + 1; } fork->fptr = &exec_fork; fork->nb_cycle_end_instr = NB_CYCLE_FORK; }