コード例 #1
0
ファイル: emu.c プロジェクト: LuxAce/tiny8086
void byte_of_and(struct emuctx *ctx, byte val1, byte val2)
{
    byte result = val1 & val2;
    if (!signed_byte(val1) && !signed_byte(val2) && signed_byte(result)) set_of(ctx, YES) ;
    else if (signed_byte(val1) && signed_byte(val2) && !signed_byte(result)) set_of(ctx, YES) ;
    else set_of(ctx, NO) ;
}
コード例 #2
0
ファイル: emu.c プロジェクト: LuxAce/tiny8086
void byte_of_sub(struct emuctx *ctx, byte val1, byte val2)
{
    byte two_comp = (~val2)+1 ;
    byte result = val1 + two_comp;
    if (!signed_byte(val1) && !signed_byte(two_comp) && signed_byte(result)) set_of(ctx, YES) ;
    else if (signed_byte(val1) && signed_byte(two_comp) && !signed_byte(result)) set_of(ctx, YES) ;
    else set_of(ctx, NO) ;
}
コード例 #3
0
ファイル: emu.c プロジェクト: LuxAce/tiny8086
void word_of_sub(struct emuctx *ctx, word val1, word val2)
{
    word two_comp ;
    two_comp.w = (~val2.w) + 1 ;
    word result ;
    result.w = val1.w + two_comp.w;
    if (!signed_word(val1) && !signed_word(two_comp) && signed_word(result)) set_of(ctx, YES) ;
    else if (signed_word(val1) && signed_word(two_comp) && !signed_word(result)) set_of(ctx,YES) ;
    else set_of(ctx, NO) ;
}
コード例 #4
0
ファイル: dlg_p.c プロジェクト: Hensinzzx/DDD
atom()
#endif
{
	zzRULE;
	zzBLOCK(zztasp1);
	zzMake0;
	{
	register int i_prime;  
	anychar();
	zzaRet.label = set_of(zzaArg(zztasp1,1 ).letter);
	i_prime = zzaArg(zztasp1,1 ).letter + MIN_CHAR;
	if (case_insensitive && islower(i_prime))
	set_orel(toupper(i_prime)-MIN_CHAR,
	&(zzaRet.label));
	if (case_insensitive && isupper(i_prime))
	set_orel(tolower(i_prime)-MIN_CHAR,
	&(zzaRet.label));
	zzEXIT(zztasp1);
	return;
fail:
	zzEXIT(zztasp1);
	zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
	zzresynch(setwd3, 0x8);
	}
}
コード例 #5
0
ファイル: dlg_p.c プロジェクト: Hensinzzx/DDD
near_atom()
#endif
{
	zzRULE;
	zzBLOCK(zztasp1);
	zzMake0;
	{
	register int i;
	register int i_prime;
	anychar();
	zzaRet.letter=zzaArg(zztasp1,1 ).letter; zzaRet.label=set_of(zzaArg(zztasp1,1 ).letter);
	i_prime = zzaArg(zztasp1,1 ).letter + MIN_CHAR;
	if (case_insensitive && islower(i_prime))
	set_orel(toupper(i_prime)-MIN_CHAR,
	&(zzaRet.label));
	if (case_insensitive && isupper(i_prime))
	set_orel(tolower(i_prime)-MIN_CHAR,
	&(zzaRet.label));
	{
		zzBLOCK(zztasp2);
		zzMake0;
		{
		if ( (LA(1)==RANGE) ) {
			zzmatch(RANGE); zzCONSUME;
			anychar();
			if (case_insensitive){
				i_prime = zzaRet.letter+MIN_CHAR;
				zzaRet.letter = (islower(i_prime) ?
				toupper(i_prime) : i_prime)-MIN_CHAR;
				i_prime = zzaArg(zztasp2,2 ).letter+MIN_CHAR;
				zzaArg(zztasp2,2 ).letter = (islower(i_prime) ?
				toupper(i_prime) : i_prime)-MIN_CHAR;
			}
			/* check to see if range okay */
			if (zzaRet.letter > zzaArg(zztasp2,2 ).letter){
				error("invalid range  ", zzline);
			}
			for (i=zzaRet.letter; i<= (int)zzaArg(zztasp2,2 ).letter; ++i){
				set_orel(i,&(zzaRet.label));
				i_prime = i+MIN_CHAR;
				if (case_insensitive && islower(i_prime))
				set_orel(toupper(i_prime)-MIN_CHAR,
				&(zzaRet.label));
				if (case_insensitive && isupper(i_prime))
				set_orel(tolower(i_prime)-MIN_CHAR,
				&(zzaRet.label));
			}
		}
		zzEXIT(zztasp2);
		}
	}
	zzEXIT(zztasp1);
	return;
fail:
	zzEXIT(zztasp1);
	zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);
	zzresynch(setwd3, 0x4);
	}
}
コード例 #6
0
ファイル: ree.c プロジェクト: WojciechMigda/gcc
static struct df_link *
get_defs (rtx_insn *insn, rtx reg, vec<rtx_insn *> *dest)
{
  df_ref use;
  struct df_link *ref_chain, *ref_link;

  FOR_EACH_INSN_USE (use, insn)
    {
      if (GET_CODE (DF_REF_REG (use)) == SUBREG)
        return NULL;
      if (REGNO (DF_REF_REG (use)) == REGNO (reg))
	break;
    }

  gcc_assert (use != NULL);

  ref_chain = DF_REF_CHAIN (use);

  for (ref_link = ref_chain; ref_link; ref_link = ref_link->next)
    {
      /* Problem getting some definition for this instruction.  */
      if (ref_link->ref == NULL)
        return NULL;
      if (DF_REF_INSN_INFO (ref_link->ref) == NULL)
        return NULL;
      /* As global regs are assumed to be defined at each function call
	 dataflow can report a call_insn as being a definition of REG.
	 But we can't do anything with that in this pass so proceed only
	 if the instruction really sets REG in a way that can be deduced
	 from the RTL structure.  */
      if (global_regs[REGNO (reg)]
	  && !set_of (reg, DF_REF_INSN (ref_link->ref)))
	return NULL;
    }

  if (dest)
    for (ref_link = ref_chain; ref_link; ref_link = ref_link->next)
      dest->safe_push (DF_REF_INSN (ref_link->ref));

  return ref_chain;
}
コード例 #7
0
ファイル: dlg_p.c プロジェクト: Distrotech/cdrdao
atom()
#endif
{
  zzRULE;
  zzBLOCK(zztasp1);
  zzMake0;
  {
  register int i_prime;
  anychar();
  zzaRet.label = set_of(zzaArg(zztasp1,1 ).letter);
  i_prime = zzaArg(zztasp1,1 ).letter + MIN_CHAR;
  if (case_insensitive && islower(i_prime))
  set_orel(toupper(i_prime)-MIN_CHAR,
  &(zzaRet.label));
  if (case_insensitive && isupper(i_prime))
  set_orel(tolower(i_prime)-MIN_CHAR,
  &(zzaRet.label));
  zzEXIT(zztasp1);
  return;
  }
}
コード例 #8
0
ファイル: emu.c プロジェクト: LuxAce/tiny8086
void sbb_of_byte(struct emuctx *ctx, byte val1, byte val2)
{
    byte two_comp = (~val2)+1 ;
    if (get_cf(ctx))
    {
        byte result = val1 + two_comp + 0xFF ;
        two_comp = two_comp + 0xFF ;
        if (!signed_byte(val1) && !signed_byte(two_comp) && signed_byte(result)) set_of(ctx, YES) ;
        else if (signed_byte(val1) && signed_byte(two_comp) && !signed_byte(result)) set_of(ctx, YES) ;
        else set_of(ctx, NO) ;
                 
    }
    else
    {
        byte result = val1 + two_comp + 0xFF ;
        if (!signed_byte(val1) && !signed_byte(two_comp) && signed_byte(result)) set_of(ctx, YES) ;
        else if (signed_byte(val1) && signed_byte(two_comp) && !signed_byte(result)) set_of(ctx, YES) ;
        else set_of(ctx, NO) ;
    }
}
コード例 #9
0
ファイル: emu.c プロジェクト: LuxAce/tiny8086
void sbb_of_word(struct emuctx *ctx, word val1, word val2)
{
    word two_comp ;
    two_comp.w = (~val2.w) + 1 ;
    if (get_cf(ctx) == YES)
    {
        word result ;
        result.w = val1.w + two_comp.w + 0xFFFF ;
        two_comp.w = two_comp.w + 0xFFFF ;
        if (!signed_word(val1) && !signed_word(two_comp) && signed_word(result)) set_of(ctx, YES) ;
        else if (signed_word(val1) && signed_word(two_comp) && !signed_word(result)) set_of(ctx,YES) ;
        else set_of(ctx, NO) ;
    }
    else
    {
        word result;
        result.w = val1.w + two_comp.w ;
        if (!signed_word(val1) && !signed_word(two_comp) && signed_word(result)) set_of(ctx, YES) ;
        else if (signed_word(val1) && signed_word(two_comp) && !signed_word(result)) set_of(ctx,YES) ;
        else set_of(ctx, NO) ;
    }
}