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

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

?? asm.c

?? 非常好的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
			if (now_seg == SEG_TEXT)
				symbolP->StorageClass = 6;  /* Code label within a module */
			else
				symbolP->StorageClass = 3;
		}
		SetFlags(symbolP);
		if (symbolP->Flags & IS_TEXT) {
			symbolP->SectionNumber = SECTION_TEXT;
		}
		else if (symbolP->Flags & IS_DATA) {
			symbolP->SectionNumber = SECTION_DATA;
		}
	}
}

static void SetFlags(symbolS *coffS)
{
	if (now_seg == SEG_TEXT) {
		coffS->Flags |= IS_TEXT;
		coffS->Flags &= ~(IS_DATA | IS_BSS);
	}
	else if (now_seg == SEG_DATA) {
		coffS->Flags |= IS_DATA;
		coffS->Flags &= ~(IS_TEXT | IS_BSS);
	}
}

/*
 *          symbol_find_or_make()
 * If a symbol name does not exist, create it as undefined, and insert
 * it into the symbol table. Return a pointer to it.
 */
static symbolS *symbol_find_or_make(char *name)
{
	register symbolS *symbolP;
	symbolP = symbol_table_lookup(name);
	if (symbolP == NULL) {
		symbolP = symbol_new(name, N_UNDF,  0, &zero_address_frag);
		symbol_table_insert(symbolP);
	}
	return (symbolP);
}

/*
 *          frag_grow()
 *
 * Internal.
 * Try to augment current frag by nchars chars.
 * If there is no room, close of the current frag with a ".fill 0"
 * and begin a new frag. Unless the new frag has nchars chars available
 * do not return. Do not set up any fields of *now_frag.
 */
static void frag_grow(unsigned int nchars)
{
	if (obstack_room(&frags) < nchars) {
		unsigned int n, oldn;
		long oldc;
		frag_wane(frag_now);
		frag_new(0);
		oldn = (unsigned) -1;
		oldc = frags.chunk_size;
		frags.chunk_size = 2 * nchars;
		while ((n = obstack_room(&frags)) < nchars && n < oldn) {
			frag_wane(frag_now);
			frag_new(0);
			oldn = n;
		}
		frags.chunk_size = oldc;
	}
	else return;
	if (obstack_room(&frags) < nchars) {
		InternalError(1003);
	}
}
/* frag_new()
 * Call this to close off a completed frag, and start up a new (empty)
 * frag, in the same subsegment as the old frag.
 * [frchain_now remains the same but frag_now is updated.]
 * Because this calculates the correct value of fr_fix by
 * looking at the obstack 'frags', it needs to know how many
 * characters at the end of the old frag belong to (the maximal)
 * fr_var: the rest must belong to fr_fix.
 * It doesn't actually set up the old frag's fr_var: you may have
 * set fr_var == 1, but allocated 10 chars to the end of the frag:
 * in this case you pass old_frags_var_max_size == 10.
 * Make a new frag, initialising some components. Link new frag at end
 * of frchain_now.
 * input: old_frags_var_max_size Number of chars
 * (already allocated on obstack frags) in variable_length part of frag.
 */
static void frag_new(int old_frags_var_max_size)
{
	register fragS *former_last_fragP;
	register frchainS *frchP;
	long tmp;
	frag_now->fr_fix = (char *) (obstack_next_free(&frags)) -
		(frag_now->fr_literal) - old_frags_var_max_size;
	/* Fix up old frag's fr_fix. */
	obstack_finish(&frags);
	/* This will align the obstack so the */
	/* next struct we allocate on it will */
	/* begin at a correct boundary. */
	frchP = frchain_now;
	know(frchP);
	former_last_fragP = frchP->frch_last;
	know(former_last_fragP);
	know(former_last_fragP == frag_now);
	obstack_blank(&frags, SIZEOF_STRUCT_FRAG);
	/* We expect this will begin at a correct */
	/* boundary for a struct. */
	tmp = obstack_alignment_mask(&frags);
	obstack_alignment_mask(&frags) = 0; /* Turn off alignment */
	frag_now = (fragS *) obstack_finish(&frags);
	obstack_alignment_mask(&frags) = tmp;   /* Restore alignment */
	/* Just in case we don't get zero'd bytes */
//	memset(frag_now,0, SIZEOF_STRUCT_FRAG);
	/* Generally, frag_now->points to an address rounded up to next
	alignment. */
	/* However, characters will add to obstack frags IMMEDIATELY after the
	struct frag, */
	/* even if they are not starting at an alignment address. */
	former_last_fragP->fr_next = frag_now;
	frchP->frch_last = frag_now;
	frag_now->fr_next = NULL;
}                       /* frag_new() */
/* frag_more()
 * Start a new frag unless we have n more chars of room in the current frag.
 * Close off the old frag with a .fill 0.
 * Return the address of the 1st char to write into. Advance
 * frag_now_growth past the new chars.
 */
static char *frag_more(int nchars)
{
	register char *retval;
	frag_grow(nchars);
	retval = obstack_next_free(&frags);
	obstack_blank_fast(&frags, nchars);
	return (retval);
}                       /* frag_more() */
/*
 *          frag_var()
 * Start a new frag unless we have max_chars more chars of room in the current frag.
 * Close off the old frag with a .fill 0.
 *
 * Set up a machine_dependent relaxable frag, then start a new frag.
 * Return the address of the 1st char of the var part of the old frag
 * to write into.
 */
static char *frag_var(
	relax_stateT type,
	int max_chars,
	int var,
	relax_substateT subtype,
	symbolS *symbol,
	long int offset,
	char *opcode)
{
	register char *retval;
	frag_grow(max_chars);
	retval = obstack_next_free(&frags);
	obstack_blank_fast(&frags, max_chars);
	frag_now->fr_var = var;
	frag_now->fr_type = type;
	frag_now->fr_subtype = subtype;
	frag_now->fr_symbol = symbol;
	frag_now->fr_offset = offset;
	frag_now->fr_opcode = opcode;
	frag_new(max_chars);
	return (retval);
}                       /* frag_var() */
/*
 *  frag_wane() Reduce the variable end of a frag to a harmless state.
 */
static void frag_wane(fragS * fragP)
{
	fragP->fr_type = rs_fill;
	fragP->fr_offset = 0;
	fragP->fr_var = 0;
}
/*
 *          frag_align()
 * Make a frag for ".align foo,bar". Call is "frag_align (foo,bar);".
 * Foo & bar are absolute integers.
 * Call to close off the current frag with a ".align", then start a new
 * (so far empty) frag, in the same subsegment as the last frag.
 */
static void frag_align(int alignment, int fill_character)
{
	*(frag_var(rs_align, 1, 1, (relax_substateT) 0, (symbolS *) 0,
			(long) alignment, (char *) 0)) = fill_character;
}


/*
 * Summary of operand().
 * in:  InputPointer points to 1st char of operand, which may
 *  be a space.
 * out: A expressionS. X_seg determines how to understand the rest of the
 *  expressionS.
 *  The operand may have been empty: in this case X_seg == SEG_NONE.
 *  InputPointer -> (next non-blank) char after operand.
 */
static segT operand(register expressionS *expressionP)
{
	register char c;
	register char *name;/* points to name of symbol */
	register symbolS *symbolP;    /* Points to symbol */
	SKIP_WHITESPACE();  /* Leading whitespace is part of operand. */
	c = *InputPointer++;  /* InputPointer -> past char in c. */
	if (isdigit(c)) {
		register valueT number; /* offset or (absolute) value */
		register short int digit;   /* value of next digit in current radix */
		/* invented for humans only, hope */
		/* optimising compiler flushes it! */
		register short int radix;   /* 8, 10 or 16 */
		/* 0 means we saw start of a floating- */
		/* point constant. */
		register short int maxdig;  /* Highest permitted digit value. */
		register int too_many_digits;   /* If we see >= this number of */
		/* digits, assume it is a bignum. */
		register char *digit_2; /* -> 2nd digit of number. */
		int small;      /* TRUE if fits in 32 bits. */
		if (c == '0') { /* non-decimal radix */
			if ((c = *InputPointer++) == 'x' || c == 'X') {
				c = *InputPointer++;  /* read past "0x" or "0X" */
				maxdig = radix = 16;
				too_many_digits = 9;
			}
			else {
				/* If it says '0f' and the line ends or it DOESN'T look like
				a floating point #, its a local label ref.  DTRT */
				if (c == 'f' && (!*InputPointer ||
							(!index("+-.0123456789", *InputPointer)))) {
					maxdig = radix = 10;
					too_many_digits = 11;
					c = '0';
					InputPointer -= 2;
				}
				else {  /* By elimination, assume octal radix. */
					radix = 8;
					maxdig = 10;    /* Un*x sux. Compatibility. */
					too_many_digits = 11;
				}
			}
			/* c == char after "0" or "0x" or "0X" or "0e" etc. */
		}
		else {
			maxdig = radix = 10;
			too_many_digits = 11;
		}
/*
 * Most numbers fit into 32 bits, and we want this case to be fast.So we pretend it
   will fit into 32 bits. If, after making up a 32 bit number, we realise that we
   have scanned more digits than comfortably fit into 32 bits, we re-scan the digits
   coding them into a bignum. For decimal and octal numbers we are conservative:
   some numbers may be assumed bignums when in fact they do fit into 32 bits.Numbers
   of any radix can have excess leading zeros: we strive to recognise this and cast
   them back into 32 bits. The number we are looking for is expected to be positive,
   but if it fits into 32 bits as an unsigned number, we let it be a 32-bit
   number. The cavalier approach is for speed in ordinary cases.
 */
		digit_2 = InputPointer;
		for (number = 0; (digit = hex_value[c]) < maxdig; c = *InputPointer++) {
			number = number * radix + digit;
		}
		/* C contains character after number. */
		/* InputPointer -> char after C. */
		small = InputPointer - digit_2 < too_many_digits;
		if (!small) {
			InternalError(1004);
		}
		/* Here with number, in correct radix. c is the next char. Note
		that unlike Un*x, we allow "011f" "0x9f" to both mean the same
		as the (conventional) "9f". This is simply easier than checking
		for strict canonical form. Syntax sux! */
		expressionP->X_add_number = number;
		expressionP->X_seg = SEG_ABSOLUTE;
		expressionP->X_subtract_symbol = NULL;
		expressionP->X_add_symbol = NULL;
		InputPointer--;   /* Restore following character. */
		SKIP_WHITESPACE();  /* -> 1st char after operand. */
		know(*InputPointer != ' ');
		return (expressionP->X_seg);
	}
	else if (c == '.' && !is_part_of_name(*InputPointer)) {
		extern struct obstack frags;
		/* '.' is pseudo symbol with value of current location in
		current segment. . . */
		symbolP = symbol_new("L0\001",
							(unsigned char) (seg_N_TYPE[(int) now_seg]),
				(valueT) (obstack_next_free(&frags) - frag_now->fr_literal),
							frag_now);
		expressionP->X_add_number = 0;
		expressionP->X_add_symbol = symbolP;
		expressionP->X_seg = now_seg;
	}
	else if (is_name_beginner(c)) { /* here if did not begin with a digit */
		/* Identifier begins here. This is kludged for speed, so code is
		repeated. */
		name = --InputPointer;
		c = get_symbol_end();
		symbolP = symbol_table_lookup(name);
		if (symbolP) {
			/* If we have an absolute symbol, then we know it's value now. */
			register segT seg;
			seg = N_TYPE_seg[(int) symbolP->sy_type & N_TYPE];
			if ((expressionP->X_seg = seg) == SEG_ABSOLUTE) {
				expressionP->X_add_number = symbolP->SymbolValue;
			}
			else {
				expressionP->X_add_number = 0;
				expressionP->X_add_symbol = symbolP;
			}
		}
		else {
			expressionP->X_add_symbol
				= symbolP
				= symbol_new(name, N_UNDF,  0, &zero_address_frag);
			expressionP->X_add_number = 0;
			expressionP->X_seg = SEG_UNKNOWN;
			symbol_table_insert(symbolP);
		}
		*InputPointer = c;
		expressionP->X_subtract_symbol = NULL;
	}
	else if (c == '(') {/* didn't begin with digit & not a name */
		(void) expression(expressionP);
		/* Expression() will pass trailing whitespace */
		if (*InputPointer++ != ')') {
			InternalError(3061);
			InputPointer--;
		}
		/* here with InputPointer -> char after "(...)" */
	}
	else if (c == '~' || c == '-') {    /* unary operator: hope for
						SEG_ABSOLUTE */
		switch (operand(expressionP)) {
		case SEG_ABSOLUTE:
			/* InputPointer -> char after operand */
			if (c == '-') {
				expressionP->X_add_number = -expressionP->X_add_number;
/*
 * Notice: '-' may  overflow: no warning is given. This is compatible
 * with other people's assemblers. Sigh.
 */
			}
			else {
				expressionP->X_add_number = ~expressionP->X_add_number;
			}
			break;
		case SEG_TEXT:
		case SEG_DATA:
		case SEG_BSS:
		case SEG_PASS1:
		case SEG_UNKNOWN:
			if (c == '-') {
				expressionP->X_subtract_symbol = expressionP->X_add_symbol;
				expressionP->X_add_symbol = 0;
				expressionP->X_seg = SEG_DIFFERENCE;
				break;
			}
		default:       /* unary on non-absolute is unsuported */
			InternalError(3062);
			break;
			/* Expression undisturbed from operand(). */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品免费视频| 激情欧美一区二区三区在线观看| 91高清在线观看| 无码av免费一区二区三区试看 | 粉嫩av亚洲一区二区图片| 久久天堂av综合合色蜜桃网| 成人少妇影院yyyy| 亚洲欧洲制服丝袜| 欧美日韩精品一区二区三区蜜桃| 亚洲精品一区二区三区影院| 毛片不卡一区二区| 国产拍揄自揄精品视频麻豆| 91浏览器入口在线观看| 亚洲一区在线电影| 日韩精品在线一区二区| 国产精品自在欧美一区| 亚洲欧洲成人精品av97| 欧美亚洲一区二区三区四区| 久久爱另类一区二区小说| 中文字幕欧美日本乱码一线二线| 99在线视频精品| 日韩精品一二三| 国产目拍亚洲精品99久久精品| 91农村精品一区二区在线| 视频一区中文字幕国产| 国产性天天综合网| 欧美日韩国产经典色站一区二区三区| 久久电影网电视剧免费观看| 自拍偷拍亚洲综合| 精品国产伦一区二区三区观看体验 | 色狠狠色狠狠综合| 久久国产视频网| 亚洲欧美国产高清| 日韩免费观看高清完整版| 成人夜色视频网站在线观看| 日精品一区二区三区| 亚洲国产精品成人综合| 777午夜精品免费视频| 不卡区在线中文字幕| 久久精品av麻豆的观看方式| 亚洲免费高清视频在线| 国产欧美日韩在线视频| 欧美日韩三级在线| av影院午夜一区| 国产精品一区在线观看你懂的| 日韩精品色哟哟| 亚洲欧美日韩国产另类专区| 国产区在线观看成人精品| 51精品视频一区二区三区| 91蜜桃在线观看| 顶级嫩模精品视频在线看| 男人的j进女人的j一区| 一区二区三区精品视频在线| 欧美激情一二三区| 欧美精品一区二区蜜臀亚洲| 欧美另类一区二区三区| 色天天综合久久久久综合片| 成人性生交大片免费看视频在线| 美腿丝袜在线亚洲一区 | 国产精品视频看| 精品国产免费一区二区三区香蕉| 在线不卡中文字幕| 欧美亚洲高清一区| 色婷婷综合在线| av激情成人网| 99在线精品视频| 97精品视频在线观看自产线路二| 国产91精品一区二区| 国产激情一区二区三区桃花岛亚洲| 蜜桃久久av一区| 免费观看91视频大全| 日韩va欧美va亚洲va久久| 亚洲最快最全在线视频| 亚洲激情中文1区| 亚洲精品写真福利| 亚洲人成精品久久久久| 亚洲欧美激情插| 一区二区三区四区不卡在线 | 一区二区三区成人| 亚洲国产婷婷综合在线精品| 一区二区三区免费在线观看| 一区二区三区日韩| 亚洲国产成人av好男人在线观看| 亚洲高清免费观看| 日本午夜一本久久久综合| 麻豆精品国产传媒mv男同| 奇米一区二区三区av| 久久91精品国产91久久小草| 黄页网站大全一区二区| 国产精品一区不卡| 成人毛片视频在线观看| 成a人片国产精品| 91蜜桃网址入口| 69堂成人精品免费视频| 精品久久久久久久久久久院品网 | 欧美一区二区视频在线观看2022| 日韩欧美国产一区在线观看| wwwwxxxxx欧美| 国产精品国产三级国产a| 亚洲一区中文日韩| 老色鬼精品视频在线观看播放| 国产裸体歌舞团一区二区| 国产成人aaa| 91搞黄在线观看| 欧美变态tickling挠脚心| 国产日本欧洲亚洲| 一区二区三区在线免费播放| 蜜臀av一区二区在线免费观看| 粉嫩av一区二区三区在线播放| 色综合色狠狠天天综合色| 欧美一区二区三区日韩| 中文字幕av资源一区| 午夜激情久久久| 粉嫩在线一区二区三区视频| 欧美日韩激情在线| 欧美激情一区三区| 丝袜脚交一区二区| 成人自拍视频在线观看| 欧美性色黄大片| 久久精品人人做人人综合| 亚洲国产日韩av| 国产成人aaaa| 91精品中文字幕一区二区三区| 国产精品天天摸av网| 日韩成人精品在线| 色综合久久88色综合天天免费| 91精品国产综合久久小美女| 综合av第一页| 国产精品羞羞答答xxdd| 欧美日韩国产欧美日美国产精品| 中日韩av电影| 国产在线播精品第三| 欧美日韩黄色影视| 最新不卡av在线| 国产精品一二三四| 欧美一区二区视频观看视频| 综合av第一页| 大胆亚洲人体视频| 精品国产乱码久久久久久免费 | 亚洲五码中文字幕| 丁香婷婷综合色啪| 久久综合999| 日本中文一区二区三区| 一本在线高清不卡dvd| 国产欧美一区二区三区鸳鸯浴| 毛片一区二区三区| 91精品国产免费久久综合| 一区二区三区在线高清| 欧美日韩色综合| 久久精品国产色蜜蜜麻豆| 91色porny在线视频| 国产三区在线成人av| 久久不见久久见免费视频7| 3d动漫精品啪啪| 亚洲高清免费一级二级三级| 94色蜜桃网一区二区三区| 国产精品人成在线观看免费| 国产真实精品久久二三区| 日韩一区二区三区高清免费看看 | 国产亚洲精品aa| 九九九久久久精品| 欧美一级高清片在线观看| 日韩成人午夜精品| 制服.丝袜.亚洲.另类.中文| 日韩av不卡在线观看| 91精品蜜臀在线一区尤物| 视频一区视频二区中文字幕| 9191久久久久久久久久久| 天天综合网天天综合色| 在线不卡a资源高清| 亚洲国产成人tv| 欧美一区二区高清| 久久精品国产精品青草| 欧美精品一区二区在线观看| 麻豆精品新av中文字幕| 久久综合中文字幕| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产亚洲欧美日韩日本| 成人美女在线观看| 亚洲欧美日韩在线不卡| 欧美私模裸体表演在线观看| 午夜激情久久久| 精品成人在线观看| 国产成都精品91一区二区三| 自拍视频在线观看一区二区| 欧美亚洲国产一区二区三区va | 久久婷婷综合激情| 成人精品国产一区二区4080| 一区在线观看视频| 欧美性猛交xxxxxxxx| 日韩va亚洲va欧美va久久| 久久网这里都是精品| 99re这里都是精品| 午夜精品福利视频网站| 久久久久久日产精品| 色视频成人在线观看免| 日韩高清不卡在线| 国产三区在线成人av| 欧美亚洲国产怡红院影院| 精品综合久久久久久8888|