Пример #1
0
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;
	}
}
Пример #2
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
}
Пример #5
0
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;
}
Пример #6
0
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;
}