亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nasm.c

?? nasm匯編編譯器源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
                        if (l != -1) {
                           offs += l;
                           SET_CURR_OFFS (offs);
                        }
                        /*
                        * else l == -1 => invalid instruction, which will be
                        * flagged as an error on pass 2
                        */

                     } else { /* pass == 2 */
                        offs += assemble (location.segment, offs, sb, cpu,
                                       &output_ins, ofmt, report_error, &nasmlist);
                        SET_CURR_OFFS (offs);

                     }
               } /* not an EQU */
               cleanup_insn (&output_ins);
         }
         nasm_free (line);
         location.offset = offs = GET_CURR_OFFS;
      } /* end while (line = preproc->getline... */

      if (pass1==2 && global_offset_changed)
         report_error(ERR_NONFATAL, "phase error detected at end of assembly.");

      if (pass1 == 1) preproc->cleanup(1);

      if (pass1==1 && terminate_after_phase) {
         fclose(ofile);
         remove(outname);
         if (want_usage)
               usage();
         exit (1);
      }
      pass_cnt++;
      if (pass>1 && !global_offset_changed) {
   	 pass0++;
   	 if (pass0==2) pass = pass_max - 1;
      }	else if (!(optimizing>0)) pass0++;

   } /* for (pass=1; pass<=2; pass++) */

   preproc->cleanup(0);
   nasmlist.cleanup();
#if 1
   if (optimizing>0 && opt_verbose_info)	/*  -On and -Ov switches */
      fprintf(stdout,
                "info:: assembly required 1+%d+1 passes\n", pass_cnt-2);
#endif
} /* exit from assemble_file (...) */


static int getkw (char **directive, char **value)
{
    char *p, *q, *buf;
    
    buf = *directive;

    /*  allow leading spaces or tabs */
    while (*buf==' ' || *buf=='\t')
       buf++;

    if (*buf!='[')
    	return 0;

    p = buf;

    while (*p && *p != ']') p++;

    if (!*p)
	return 0;

    q = p++;

    while (*p && *p != ';') {
	if (!isspace(*p))
	    return 0;
	p++;
    }
    q[1] = '\0';

    *directive = p = buf+1;
    while (*buf && *buf!=' ' && *buf!=']' && *buf!='\t')
    	buf++;
    if (*buf==']') {
	*buf = '\0';
	*value = buf;
    } else {
	*buf++ = '\0';
        while (isspace(*buf)) buf++;   /* beppu - skip leading whitespace */
	*value = buf;
	while (*buf!=']') buf++;
	*buf++ = '\0';
    }
#if 0
    for (q=p; *q; q++)
	*q = tolower(*q);
#endif	
    if (!nasm_stricmp(p, "segment") || !nasm_stricmp(p, "section"))
    	return 1;
    if (!nasm_stricmp(p, "extern"))
    	return 2;
    if (!nasm_stricmp(p, "bits"))
    	return 3;
    if (!nasm_stricmp(p, "global"))
    	return 4;
    if (!nasm_stricmp(p, "common"))
    	return 5;
    if (!nasm_stricmp(p, "absolute"))
    	return 6;
    if (!nasm_stricmp(p, "debug"))
	return 7;
    if (!nasm_stricmp(p, "warning"))
    	return 8;
    if (!nasm_stricmp(p, "cpu"))
	return 9;
    if (!nasm_stricmp(p, "list"))    /* fbk 9/2/00 */
        return 10;
    return -1;
}

/**
 * gnu style error reporting
 * This function prints an error message to error_file in the
 * style used by GNU. An example would be:
 * file.asm:50: error: blah blah blah
 * where file.asm is the name of the file, 50 is the line number on 
 * which the error occurs (or is detected) and "error:" is one of
 * the possible optional diagnostics -- it can be "error" or "warning"
 * or something else.  Finally the line terminates with the actual 
 * error message.
 * 
 * @param severity the severity of the warning or error 
 * @param fmt the printf style format string
 */
static void report_error_gnu (int severity, const char *fmt, ...)
{
    va_list ap;

    if (is_suppressed_warning(severity))
	return;

    if (severity & ERR_NOFILE)
	fputs ("nasm: ", error_file);
    else {
	char * currentfile = NULL;
	long lineno = 0;
	src_get (&lineno, &currentfile);
	fprintf (error_file, "%s:%ld: ", currentfile, lineno);
	nasm_free (currentfile);
    }
    va_start (ap, fmt);
    report_error_common (severity, fmt, ap);
    va_end (ap);
}

/**
 * MS style error reporting
 * This function prints an error message to error_file in the
 * style used by Visual C and some other Microsoft tools. An example 
 * would be:
 * file.asm(50) : error: blah blah blah
 * where file.asm is the name of the file, 50 is the line number on 
 * which the error occurs (or is detected) and "error:" is one of
 * the possible optional diagnostics -- it can be "error" or "warning"
 * or something else.  Finally the line terminates with the actual 
 * error message.
 * 
 * @param severity the severity of the warning or error 
 * @param fmt the printf style format string
 */
static void report_error_vc (int severity, const char *fmt, ...)
{
    va_list ap;

    if (is_suppressed_warning (severity))
	return;

    if (severity & ERR_NOFILE)
	fputs ("nasm: ", error_file);
    else {
	char * currentfile = NULL;
	long lineno = 0;
	src_get (&lineno, &currentfile);
	fprintf (error_file, "%s(%ld) : ", currentfile, lineno);
	nasm_free (currentfile);
    }
    va_start (ap, fmt);
    report_error_common (severity, fmt, ap);
    va_end (ap);
}

/**
 * check for supressed warning
 * checks for suppressed warning or pass one only warning and we're 
 * not in pass 1
 *
 * @param severity the severity of the warning or error
 * @return true if we should abort error/warning printing
 */
static int is_suppressed_warning (int severity)
{
    /*
     * See if it's a suppressed warning.
     */
    return ((severity & ERR_MASK) == ERR_WARNING &&
	(severity & ERR_WARN_MASK) != 0 &&
	suppressed[ (severity & ERR_WARN_MASK) >> ERR_WARN_SHR ]) ||
    /*
     * See if it's a pass-one only warning and we're not in pass one.
     */
	((severity & ERR_PASS1) && pass0 == 2);
}

/**
 * common error reporting
 * This is the common back end of the error reporting schemes currently
 * implemented.  It prints the nature of the warning and then the 
 * specific error message to error_file and may or may not return.  It
 * doesn't return if the error severity is a "panic" or "debug" type.
 * 
 * @param severity the severity of the warning or error 
 * @param fmt the printf style format string
 */
static void report_error_common (int severity, const char *fmt, va_list args)
{
    switch (severity & ERR_MASK) {
      case ERR_WARNING:
	fputs ("warning: ", error_file); break;
      case ERR_NONFATAL:
	fputs ("error: ", error_file); break;
      case ERR_FATAL:
	fputs ("fatal: ", error_file); break;
      case ERR_PANIC:
	fputs ("panic: ", error_file); break;
      case ERR_DEBUG:
        fputs("debug: ", error_file); break;
    }

    vfprintf (error_file, fmt, args);
    fputc ('\n', error_file);

    if (severity & ERR_USAGE)
	want_usage = TRUE;

    switch (severity & ERR_MASK) {
      case ERR_WARNING: case ERR_DEBUG:
	/* no further action, by definition */
	break;
      case ERR_NONFATAL:
	/* hack enables listing(!) on errors */
        terminate_after_phase = TRUE;
	break;
      case ERR_FATAL:
	if (ofile) {
	    fclose(ofile);
	    remove(outname);
	}
	if (want_usage)
	    usage();
	exit(1);		       /* instantly die */
	break;			       /* placate silly compilers */
      case ERR_PANIC:
	fflush(NULL);
/*	abort();	*/	       /* halt, catch fire, and dump core */
	exit(3);
	break;
    }
}

static void usage(void)
{
    fputs("type `nasm -h' for help\n", error_file);
}

static void register_output_formats(void)
{
    ofmt = ofmt_register (report_error);
}

#define BUF_DELTA 512

static FILE *no_pp_fp;
static efunc no_pp_err;
static ListGen *no_pp_list;
static long no_pp_lineinc;

static void no_pp_reset (char *file, int pass, efunc error, evalfunc eval,
			 ListGen *listgen)
{
    src_set_fname(nasm_strdup(file));
    src_set_linnum(0);
    no_pp_lineinc = 1;
    no_pp_err = error;
    no_pp_fp = fopen(file, "r");
    if (!no_pp_fp)
	no_pp_err (ERR_FATAL | ERR_NOFILE,
		   "unable to open input file `%s'", file);
    no_pp_list = listgen;
    (void) pass;		       /* placate compilers */
    (void) eval;		       /* placate compilers */
}

static char *no_pp_getline (void)
{
    char *buffer, *p, *q;
    int bufsize;

    bufsize = BUF_DELTA;
    buffer = nasm_malloc(BUF_DELTA);
    src_set_linnum(src_get_linnum() + no_pp_lineinc);

    while (1) {   /* Loop to handle %line */

	p = buffer;
	while (1) {  /* Loop to handle long lines */
	    q = fgets(p, bufsize-(p-buffer), no_pp_fp);
	    if (!q)
		break;
	    p += strlen(p);
	    if (p > buffer && p[-1] == '\n')
		break;
	    if (p-buffer > bufsize-10) {
		int offset;
		offset = p - buffer;
		bufsize += BUF_DELTA;
		buffer = nasm_realloc(buffer, bufsize);
		p = buffer + offset;
	    }
	}

	if (!q && p == buffer) {
	    nasm_free (buffer);
	    return NULL;
	}

	/*
	 * Play safe: remove CRs, LFs and any spurious ^Zs, if any of
	 * them are present at the end of the line.
	 */
	buffer[strcspn(buffer, "\r\n\032")] = '\0';

	if (!strncmp(buffer, "%line", 5)) {
	    long ln;
	    int  li;
	    char *nm = nasm_malloc(strlen(buffer));
	    if (sscanf(buffer+5, "%ld+%d %s", &ln, &li, nm) == 3) {
		nasm_free( src_set_fname(nm) );
		src_set_linnum(ln);
		no_pp_lineinc = li;
		continue;
	    }
	    nasm_free(nm);
	}
	break;
    }

    no_pp_list->line (LIST_READ, buffer);

    return buffer;
}

static void no_pp_cleanup (int pass)
{
    fclose(no_pp_fp);
}

static unsigned long get_cpu (char *value)
{

    if (!strcmp(value, "8086")) return IF_8086;
    if (!strcmp(value, "186")) return IF_186;
    if (!strcmp(value, "286")) return IF_286;
    if (!strcmp(value, "386")) return IF_386;
    if (!strcmp(value, "486")) return IF_486;
    if (!strcmp(value, "586")    ||
    	!nasm_stricmp(value, "pentium") ) 	return IF_PENT;
    if (!strcmp(value, "686")  ||
    	!nasm_stricmp(value, "ppro") ||
    	!nasm_stricmp(value, "pentiumpro") ||
    	!nasm_stricmp(value, "p2")    ) 	return IF_P6;
    if (!nasm_stricmp(value, "p3")    ||
    	!nasm_stricmp(value, "katmai") ) 	return IF_KATMAI;
    if (!nasm_stricmp(value, "p4")    ||	/* is this right? -- jrc */
    	!nasm_stricmp(value, "willamette") ) 	return IF_WILLAMETTE;
    if (!nasm_stricmp(value, "prescott") )      return IF_PRESCOTT;
    if (!nasm_stricmp(value, "ia64") ||
	!nasm_stricmp(value, "ia-64") ||
	!nasm_stricmp(value, "itanium") ||
	!nasm_stricmp(value, "itanic") ||
	!nasm_stricmp(value, "merced") )	return IF_IA64;

    report_error (pass0<2 ? ERR_NONFATAL : ERR_FATAL, "unknown 'cpu' type");

    return IF_PLEVEL;	/* the maximum level */
}


static int get_bits (char *value)
{
    int i;

    if ((i = atoi(value)) == 16)  return i;   /* set for a 16-bit segment */
    else if (i == 32) {
	if (cpu < IF_386) {
	    report_error(ERR_NONFATAL,
	    	"cannot specify 32-bit segment on processor below a 386");
	    i = 16;
	}
    } else {
	report_error(pass0<2 ? ERR_NONFATAL : ERR_FATAL,
	   "`%s' is not a valid segment size; must be 16 or 32",
	   value);
	i = 16;
    }
    return i;
}

/* end of nasm.c */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合狠狠综合久久综合88| 国产精品全国免费观看高清 | 一级特黄大欧美久久久| 欧美一区二区日韩| 欧美私模裸体表演在线观看| www.av精品| 成人av电影在线观看| 成人综合在线观看| 99视频超级精品| 精品卡一卡二卡三卡四在线| www精品美女久久久tv| 亚洲伊人伊色伊影伊综合网| 夜夜爽夜夜爽精品视频| 国产99精品在线观看| 丁香一区二区三区| 一区二区欧美视频| 国产999精品久久久久久绿帽| 欧美人狂配大交3d怪物一区| 欧美一区二区美女| 亚洲主播在线观看| 色综合一区二区三区| 91成人网在线| 在线不卡一区二区| 久久综合色婷婷| 免费欧美日韩国产三级电影| 国产一区二区三区观看| 成人免费高清视频在线观看| 精品88久久久久88久久久| 国产精品麻豆视频| 国产成人综合网| 欧美视频一区二区三区| 洋洋成人永久网站入口| 91网站视频在线观看| 欧美一卡二卡在线| 午夜精品一区二区三区电影天堂 | 蜜臀va亚洲va欧美va天堂| 激情国产一区二区| 成人高清视频免费观看| 国产人伦精品一区二区| 亚洲成人黄色小说| av在线综合网| 18成人在线观看| 日韩和欧美一区二区| 99久免费精品视频在线观看| 国产精品久久网站| 激情欧美一区二区| 久久综合九色综合欧美98| 精品一区二区在线看| 欧美色图激情小说| 国产精品久久久久9999吃药| av网站一区二区三区| 亚洲视频小说图片| 国产成人av电影在线| 中文字幕一区二区三区在线播放 | 国产欧美一区二区精品性色超碰| 国产99精品在线观看| 伊人夜夜躁av伊人久久| 国产91色综合久久免费分享| 国产精品亲子伦对白| 99国产精品久| 中文字幕视频一区二区三区久| 91麻豆自制传媒国产之光| 午夜精品久久久久久久99水蜜桃| 欧美成人一级视频| 99精品在线观看视频| 天天综合色天天综合色h| 精品国产一区二区三区四区四 | 日本欧美大码aⅴ在线播放| 一本到高清视频免费精品| 亚洲视频一区在线观看| 欧美亚洲综合另类| 国产在线视频一区二区三区| 亚洲三级在线免费| 欧美大尺度电影在线| 日韩国产在线一| 国产女主播一区| 7878成人国产在线观看| 亚洲高清在线精品| 欧美日韩国产小视频| 国产成人高清在线| 日韩不卡一二三区| 日韩毛片在线免费观看| 日韩欧美亚洲国产另类| 91丨国产丨九色丨pron| 久久精品国产精品亚洲红杏| 日韩精品最新网址| 欧美在线观看视频在线| 亚洲国产精品久久人人爱| 国产欧美精品一区aⅴ影院 | 欧美精品一二三四| 成人黄色免费短视频| 免费在线看成人av| 一区二区欧美国产| 中文字幕字幕中文在线中不卡视频| 欧美va亚洲va国产综合| 欧美日韩中文字幕一区二区| 99久久综合99久久综合网站| 国精产品一区一区三区mba桃花| 亚洲福利电影网| 亚洲男同性视频| 欧美色偷偷大香| 91蜜桃视频在线| 91免费看视频| 不卡的av在线| 国产成人aaa| 国产白丝精品91爽爽久久| 另类综合日韩欧美亚洲| 日韩国产欧美三级| 午夜精品久久久久久久久久| 亚洲线精品一区二区三区八戒| 亚洲视频你懂的| ●精品国产综合乱码久久久久| 亚洲国产电影在线观看| 欧美在线短视频| 91视频国产观看| 97精品久久久午夜一区二区三区 | 精品免费视频一区二区| 欧美日韩国产不卡| 在线精品视频免费观看| 91一区二区三区在线播放| 97精品国产97久久久久久久久久久久| 国产福利精品一区| 大尺度一区二区| www.欧美.com| 色哦色哦哦色天天综合| 欧美视频一二三区| 91精品国产综合久久福利| 日韩欧美国产精品一区| 欧美tickling网站挠脚心| 久久午夜色播影院免费高清| 国产亚洲一本大道中文在线| 欧美日韩中文精品| 欧美日韩成人综合| 91精品午夜视频| 久久午夜色播影院免费高清 | 国产精品911| 天天亚洲美女在线视频| 美国一区二区三区在线播放| 美国三级日本三级久久99 | 天堂va蜜桃一区二区三区漫画版| 亚洲成精国产精品女| 人人精品人人爱| 国产91精品一区二区麻豆亚洲| 99久久久久久| 正在播放亚洲一区| 国产日韩成人精品| 一区二区在线观看视频| 日韩国产欧美在线播放| 丁香亚洲综合激情啪啪综合| 欧美性受极品xxxx喷水| 精品久久一二三区| 亚洲天堂精品在线观看| 另类综合日韩欧美亚洲| 91玉足脚交白嫩脚丫在线播放| 欧美一区二区三区免费视频| 国产精品婷婷午夜在线观看| 五月综合激情日本mⅴ| 成人手机在线视频| 欧美精品xxxxbbbb| 成人免费在线观看入口| 免费日本视频一区| 色婷婷精品久久二区二区蜜臂av| 日韩一区二区免费电影| 欧美一级夜夜爽| 中文字幕在线一区二区三区| 奇米777欧美一区二区| 99久久久精品免费观看国产蜜| 精品日韩在线观看| 亚洲国产色一区| 91网站视频在线观看| 久久精品亚洲乱码伦伦中文 | 国产欧美综合在线观看第十页| 亚洲激情av在线| 高清视频一区二区| 日韩女优av电影| 亚洲成人一二三| 91豆麻精品91久久久久久| 国产精品水嫩水嫩| 韩国女主播一区| 91精品在线一区二区| 亚洲午夜视频在线观看| av一二三不卡影片| 国产亚洲精品bt天堂精选| 久久黄色级2电影| 7777精品伊人久久久大香线蕉完整版 | 亚洲1区2区3区4区| 色综合 综合色| 中文字幕一区在线观看视频| 国产精品一区在线观看乱码| 日韩精品一区二区三区老鸭窝| 偷拍日韩校园综合在线| 欧美亚洲一区二区在线观看| 亚洲欧美日韩精品久久久久| 成人av资源站| 国产精品传媒入口麻豆| 99视频精品免费视频| 国产精品福利一区| 99精品国产热久久91蜜凸| 国产精品久久久久久久久果冻传媒| 国产成人精品免费在线|