Example #1
0
void		load_instru(t_vm *vm, t_champ *champ,
			    unsigned char *board)
{
  int		i;

  i = 0;
  while (op_tab[i].code != *champ->instru && op_tab[i].code != 0)
    i++;
  moving_PC(champ, board, 1);
  if (op_tab[i].code == 0)
    unknown_ope(champ, vm);
  else if (op_tab[i].code == 12)
    forking(vm, champ, board, 1);
  else if (op_tab[i].code == 15)
    forking(vm, champ, board, 0);
  else if (op_tab[i].code == 1)
    living(champ, board);
  else if (op_tab[i].code == 9)
    zjump(champ, board, vm);
  else
    {
      if (vm->debug == 1)
	print_ope(op_tab[i].mnemonique);
      champ->ope.nbr_cycles = op_tab[i].nbr_cycles;
      champ->ope.nbr_args = op_tab[i].nbr_args;
      champ->ope.code = op_tab[i].code;
      get_jump(champ, board, &op_tab[i]);
    }
}
Example #2
0
File: BM.C Project: xhbang/C100
int  BM(unsigned char text[], unsigned char pat[])
{
     int  jump_tab[256];
     int  t_len = strlen(text);
     int  p_len = strlen(pat);
     int  i, j, k;

     get_jump(pat, jump_tab); /* compute the jump table   */
     for (i = p_len - 1; i < t_len; ) { /* comp. downward */
          for (j=p_len-1, k=i; j >= 0 && text[k] == pat[j]; k--,j--)
               ;
          if (j < 0)          /* if pat[] exhausted ?     */
               return k + 1;  /* YES, pattern found.      */
          else                /* NO, update using jump_tab*/
               i += jump_tab[text[i]];
     }
     return NOT_FOUND;        /* text[] exhausted.        */
}