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

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

?? dag.c

?? 基于4個mips核的noc設計
?? C
?? 第 1 頁 / 共 2 頁
字號:
		      if (tp->u.sym->temporary)		      	addlocal(tp->u.sym);		      p = node(tp->op + sizeop(voidptype->size), NULL, NULL, tp->u.sym); } break;	default:assert(0);	}	tp->node = p;	return p;}static void list(Node p) {	if (p && p->link == NULL) {		if (forest) {			p->link = forest->link;			forest->link = p;		} else			p->link = p;		forest = p;	}}static void labelnode(int lab) {	assert(lab);	if (forest && forest->op == LABEL+V)		equatelab(findlabel(lab), forest->syms[0]);	else		list(newnode(LABEL+V, NULL, NULL, findlabel(lab)));	reset();}static void unlist(void) {	Node p;	assert(forest);	assert(forest != forest->link);	p = forest->link;	while (p->link != forest)		p = p->link;	p->link = forest->link;	forest = p;}Tree cvtconst(Tree p) {	Symbol q = constant(p->type, p->u.v);	Tree e;	if (q->u.c.loc == NULL)		q->u.c.loc = genident(STATIC, p->type, GLOBAL);	if (isarray(p->type)) {		e = simplify(ADDRG, atop(p->type), NULL, NULL);		e->u.sym = q->u.c.loc;	} else		e = idtree(q->u.c.loc);	return e;}void gencode(Symbol caller[], Symbol callee[]) {	Code cp;	Coordinate save;	if (prunetemps == -1)		prunetemps = !IR->wants_dag;	save = src;	if (assignargs) {		int i;		Symbol p, q;		cp = codehead.next->next;		codelist = codehead.next;		for (i = 0; (p = callee[i]) != NULL		         && (q = caller[i]) != NULL; i++)			if (p->sclass != q->sclass || p->type != q->type)				walk(asgn(p, idtree(q)), 0, 0);		codelist->next = cp;		cp->prev = codelist;	}	if (glevel && IR->stabsym) {		int i;		Symbol p, q;		for (i = 0; (p = callee[i]) != NULL		         && (q = caller[i]) != NULL; i++) {			(*IR->stabsym)(p);			if (p->sclass != q->sclass || p->type != q->type)				(*IR->stabsym)(q);		}		swtoseg(CODE);	}	cp = codehead.next;	for ( ; errcnt <= 0 && cp; cp = cp->next)		switch (cp->kind) {		case Address:  (*IR->address)(cp->u.addr.sym, cp->u.addr.base,			       	cp->u.addr.offset); break;		case Blockbeg: {			       	Symbol *p = cp->u.block.locals;			       	(*IR->blockbeg)(&cp->u.block.x);			       	for ( ; *p; p++)			       		if ((*p)->ref != 0.0)			       			(*IR->local)(*p);			       		else if (glevel) (*IR->local)(*p);			       } break;		case Blockend: (*IR->blockend)(&cp->u.begin->u.block.x); break;		case Defpoint: src = cp->u.point.src; break;		case Gen: case Jump:		case Label:    if (prunetemps)			       	cp->u.forest = prune(cp->u.forest);			       fixup(cp->u.forest);			       cp->u.forest = (*IR->gen)(cp->u.forest); break;		case Local:    (*IR->local)(cp->u.var); break;		case Switch:   break;		default: assert(0);		}	src = save;}static void fixup(Node p) {	for ( ; p; p = p->link)		switch (generic(p->op)) {		case JUMP:			if (specific(p->kids[0]->op) == ADDRG+P)				p->kids[0]->syms[0] =					equated(p->kids[0]->syms[0]);			break;		case LABEL: assert(p->syms[0] == equated(p->syms[0])); break;		case EQ: case GE: case GT: case LE: case LT: case NE:			assert(p->syms[0]);			p->syms[0] = equated(p->syms[0]);		}}static Symbol equated(Symbol p) {	{ Symbol q; for (q = p->u.l.equatedto; q; q = q->u.l.equatedto) assert(p != q); }	while (p->u.l.equatedto)		p = p->u.l.equatedto;	return p;}void emitcode(void) {	Code cp;	Coordinate save;	save = src;	cp = codehead.next;	for ( ; errcnt <= 0 && cp; cp = cp->next)		switch (cp->kind) {		case Address: break;		case Blockbeg: if (glevel && IR->stabblock) {			       	(*IR->stabblock)('{',  cp->u.block.level - LOCAL, cp->u.block.locals);			       	swtoseg(CODE);			       } break;		case Blockend: if (glevel && IR->stabblock) {			       	Code bp = cp->u.begin;			       	foreach(bp->u.block.identifiers, bp->u.block.level, typestab, NULL);			       	foreach(bp->u.block.types,       bp->u.block.level, typestab, NULL);			       	(*IR->stabblock)('}', bp->u.block.level - LOCAL, bp->u.block.locals);			       	swtoseg(CODE);			       } break;		case Defpoint: src = cp->u.point.src;			       if (glevel > 0 && IR->stabline) {			       	(*IR->stabline)(&cp->u.point.src); swtoseg(CODE); } break;		case Gen: case Jump:		case Label:    if (cp->u.forest)			       	(*IR->emit)(cp->u.forest); break;		case Local:    if (glevel && IR->stabsym) {			       	(*IR->stabsym)(cp->u.var);			       	swtoseg(CODE);			       } break;		case Switch:   {	int i;			       	defglobal(cp->u.swtch.table, LIT);			       	(*IR->defaddress)(equated(cp->u.swtch.labels[0]));			       	for (i = 1; i < cp->u.swtch.size; i++) {			       		long k = cp->u.swtch.values[i-1];			       		while (++k < cp->u.swtch.values[i])			       			assert(k < LONG_MAX),			       			(*IR->defaddress)(equated(cp->u.swtch.deflab));			       		(*IR->defaddress)(equated(cp->u.swtch.labels[i]));			       	}			       	swtoseg(CODE);			       } break;		default: assert(0);		}	src = save;}static Node undag(Node forest) {	Node p;	tail = &forest;	for (p = forest; p; p = p->link)		if (generic(p->op) == INDIR) {			assert(p->count >= 1);			visit(p, 1);			if (p->syms[2]) {				assert(p->syms[2]->u.t.cse);				p->syms[2]->u.t.cse = NULL;				addlocal(p->syms[2]);			}		} else if (iscall(p->op) && p->count >= 1)			visit(p, 1);		else {			assert(p->count == 0),			visit(p, 1);			*tail = p;			tail = &p->link;		}	*tail = NULL;	return forest;}static Node replace(Node p) {	if (p && (  generic(p->op) == INDIR		 && generic(p->kids[0]->op) == ADDRL		 && p->kids[0]->syms[0]->temporary		 && p->kids[0]->syms[0]->u.t.replace)) {		p = p->kids[0]->syms[0]->u.t.cse;		if (generic(p->op) == INDIR && isaddrop(p->kids[0]->op))			p = newnode(p->op, newnode(p->kids[0]->op, NULL, NULL,				p->kids[0]->syms[0]), NULL, NULL);		else if (generic(p->op) == ADDRG)			p = newnode(p->op, NULL, NULL, p->syms[0]);		else			assert(0);		p->count = 1;	} else if (p) {		p->kids[0] = replace(p->kids[0]);		p->kids[1] = replace(p->kids[1]);	}	return p;}static Node prune(Node forest) {	Node p, *tail = &forest;	int count = 0;	for (p = forest; p; p = p->link) {		if (count > 0) {			p->kids[0] = replace(p->kids[0]);			p->kids[1] = replace(p->kids[1]);		}		if ((  generic(p->op) == ASGN		    && generic(p->kids[0]->op) == ADDRL		    && p->kids[0]->syms[0]->temporary		    && p->kids[0]->syms[0]->u.t.cse == p->kids[1])) {			Symbol tmp = p->kids[0]->syms[0];			if (!tmp->defined)				(*IR->local)(tmp);			tmp->defined = 1;			if ((  generic(p->kids[1]->op) == INDIR			    && isaddrop(p->kids[1]->kids[0]->op)			    && p->kids[1]->kids[0]->syms[0]->sclass == REGISTER)			|| ((  generic(p->kids[1]->op) == INDIR			    && isaddrop(p->kids[1]->kids[0]->op)) && tmp->sclass == AUTO)			|| (generic(p->kids[1]->op) == ADDRG && tmp->sclass == AUTO)) {				tmp->u.t.replace = 1;				count++;				continue;	/* and omit the assignment */			}		}		/* keep the assignment and other roots */		*tail = p;		tail = &(*tail)->link;	}	assert(*tail == NULL);	return forest;}static Node visit(Node p, int listed) {	if (p)		if (p->syms[2])			p = tmpnode(p);		else if (p->count <= 1 && !iscall(p->op)		||       p->count == 0 &&  iscall(p->op)) {			p->kids[0] = visit(p->kids[0], 0);			p->kids[1] = visit(p->kids[1], 0);		}		else if (specific(p->op) == ADDRL+P || specific(p->op) == ADDRF+P) {			assert(!listed);			p = newnode(p->op, NULL, NULL, p->syms[0]);			p->count = 1;		}		else if (p->op == INDIR+B) {			p = newnode(p->op, p->kids[0], NULL, NULL);			p->count = 1;			p->kids[0] = visit(p->kids[0], 0);			p->kids[1] = visit(p->kids[1], 0);		}		else {			p->kids[0] = visit(p->kids[0], 0);			p->kids[1] = visit(p->kids[1], 0);			p->syms[2] = temporary(REGISTER, btot(p->op, opsize(p->op)));			assert(!p->syms[2]->defined);			p->syms[2]->ref = 1;			p->syms[2]->u.t.cse = p;			*tail = asgnnode(p->syms[2], p);			tail = &(*tail)->link;			if (!listed)				p = tmpnode(p);		};	return p;}static Node tmpnode(Node p) {	Symbol tmp = p->syms[2];	assert(tmp);	if (--p->count == 0)		p->syms[2] = NULL;	p = newnode(INDIR + ttob(tmp->type),		newnode(ADDRL + ttob(voidptype), NULL, NULL, tmp), NULL, NULL);	p->count = 1;	return p;}static Node asgnnode(Symbol tmp, Node p) {	p = newnode(ASGN + ttob(tmp->type),		newnode(ADDRL + ttob(voidptype), NULL, NULL, tmp), p, NULL);	p->syms[0] = intconst(tmp->type->size);	p->syms[1] = intconst(tmp->type->align);	return p;}/* printdag - print dag p on fd, or the node list if p == 0 */void printdag(Node p, int fd) {	FILE *f = fd == 1 ? stdout : stderr;	printed(0);	if (p == 0) {		if ((p = forest) != NULL)			do {				p = p->link;				printdag1(p, fd, 0);			} while (p != forest);	} else if (*printed(nodeid((Tree)p)))		fprint(f, "node'%d printed above\n", nodeid((Tree)p));	else		printdag1(p, fd, 0);}/* printdag1 - recursively print dag p */static void printdag1(Node p, int fd, int lev) {	int id, i;	if (p == 0 || *printed(id = nodeid((Tree)p)))		return;	*printed(id) = 1;	for (i = 0; i < NELEMS(p->kids); i++)		printdag1(p->kids[i], fd, lev + 1);	printnode(p, fd, lev);}/* printnode - print fields of dag p */static void printnode(Node p, int fd, int lev) {	if (p) {		FILE *f = fd == 1 ? stdout : stderr;		int i, id = nodeid((Tree)p);		fprint(f, "%c%d%s", lev == 0 ? '\'' : '#', id,			&"   "[id < 10 ? 0 : id < 100 ? 1 : 2]);		fprint(f, "%s count=%d", opname(p->op), p->count);		for (i = 0; i < NELEMS(p->kids) && p->kids[i]; i++)			fprint(f, " #%d", nodeid((Tree)p->kids[i]));		if (generic(p->op) == CALL && p->syms[0] && p->syms[0]->type)			fprint(f, " {%t}", p->syms[0]->type);		else			for (i = 0; i < NELEMS(p->syms) && p->syms[i]; i++)				if (p->syms[i]->name)					fprint(f, " %s", p->syms[i]->name);				else					fprint(f, " %p", p->syms[i]);		fprint(f, "\n");	}}/* typestab - emit stab entries for p */static void typestab(Symbol p, void *cl) {	if (!isfunc(p->type) && (p->sclass == EXTERN || p->sclass == STATIC) && IR->stabsym)		(*IR->stabsym)(p);	else if ((p->sclass == TYPEDEF || p->sclass == 0) && IR->stabtype)		(*IR->stabtype)(p);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av一本久道久久综合久久鬼色| 中文字幕av一区 二区| 一区二区三区视频在线看| 成人教育av在线| 最新国产の精品合集bt伙计| av网站免费线看精品| 亚洲女人****多毛耸耸8| eeuss影院一区二区三区| 亚洲色大成网站www久久九九| a4yy欧美一区二区三区| 一区二区视频在线| 91麻豆精品国产91久久久久久| 亚洲va欧美va人人爽午夜| 精品视频999| 精品在线免费观看| 国产精品视频yy9299一区| 欧美亚洲免费在线一区| 久久国产精品免费| 国产精品激情偷乱一区二区∴| 欧亚一区二区三区| 美女在线视频一区| 国产精品免费视频一区| 欧美日韩电影一区| 国产成人精品一区二区三区四区| 亚洲黄色av一区| 久久久久久久综合色一本| 91视频精品在这里| 久久精品72免费观看| 1区2区3区国产精品| 日韩一级片在线观看| 91免费版pro下载短视频| 日本vs亚洲vs韩国一区三区 | 亚洲男人的天堂av| 欧美成人一区二区三区 | 热久久国产精品| 亚洲女与黑人做爰| 国产欧美一区二区三区在线看蜜臀 | 国产精品丝袜一区| 日韩一区二区三区电影| 欧美丝袜丝nylons| 色综合久久综合中文综合网| 国产一级精品在线| 国产成人免费在线视频| 美女国产一区二区| 丝袜美腿亚洲色图| 日韩av电影一区| 日韩极品在线观看| 强制捆绑调教一区二区| 日产国产欧美视频一区精品 | 国产日韩综合av| 国产精品久久久久影院亚瑟| 久久精品网站免费观看| 日本一区二区成人| 国产精品传媒在线| 亚洲午夜一二三区视频| 亚洲国产cao| 免费一级欧美片在线观看| 免费观看91视频大全| 久久精品国产精品青草| 国产一区福利在线| 成人va在线观看| 色狠狠色狠狠综合| 日韩一区二区三区四区 | 欧美视频在线一区二区三区| 欧美电影在哪看比较好| 欧美tickling网站挠脚心| 日本一区二区三区视频视频| 亚洲精品va在线观看| 蜜臀99久久精品久久久久久软件| 国产精品羞羞答答xxdd| 欧美色手机在线观看| 亚洲精品一区二区三区蜜桃下载 | 亚洲欧美一区二区久久| 免费在线观看一区| 在线精品视频免费播放| 久久色成人在线| 五月天一区二区三区| 成人在线一区二区三区| 91精品国产综合久久久久| 国产精品免费av| 国产精品99久久久久久久女警| 欧美午夜精品一区二区三区| 久久精品人人做人人综合 | 日韩精品中文字幕在线不卡尤物| 中文字幕精品一区| 精品亚洲成a人在线观看| 欧美日韩国产欧美日美国产精品| 中文字幕欧美日韩一区| 韩国理伦片一区二区三区在线播放 | 一区二区三区四区不卡视频| 成人性生交大片| 国产午夜精品美女毛片视频| 另类小说图片综合网| 欧美一区二区女人| 日韩福利视频导航| 日韩三级高清在线| 日韩1区2区3区| 91精品国产入口在线| 日本在线播放一区二区三区| 在线播放中文一区| 老司机精品视频导航| 久久久久久97三级| jvid福利写真一区二区三区| 国产精品麻豆一区二区 | 成人av在线播放网址| 国产精品久久久久婷婷| 色哟哟国产精品| 亚洲午夜日本在线观看| 日韩亚洲电影在线| 国产高清不卡二三区| 亚洲色图一区二区| 91精品国模一区二区三区| 久久成人精品无人区| 国产日韩欧美精品一区| 欧美亚洲一区二区在线观看| 日本成人中文字幕在线视频| 久久久久久麻豆| 欧美日本精品一区二区三区| 国产酒店精品激情| 亚洲超碰精品一区二区| 2024国产精品| 欧美视频一二三区| 国产激情视频一区二区在线观看| 亚洲欧美国产高清| 久久久久久一级片| 欧美一区二区三区在线观看视频| 国产一区二区三区电影在线观看 | 久久亚洲一级片| 色哟哟精品一区| 丁香婷婷综合五月| 美女视频第一区二区三区免费观看网站| 精品福利二区三区| 欧美一卡在线观看| 欧美无砖专区一中文字| 91亚洲精华国产精华精华液| 国产一区二区调教| 蜜桃视频在线一区| 天堂午夜影视日韩欧美一区二区| 国产精品二区一区二区aⅴ污介绍| 精品国产污网站| 在线成人免费视频| 欧美日韩国产精选| 91精品久久久久久久99蜜桃| 色综合中文综合网| 中文字幕一区二区三区视频 | 欧美日韩久久久久久| 欧美自拍偷拍午夜视频| 91久久精品一区二区二区| 一本到不卡精品视频在线观看 | 欧美日韩午夜在线视频| 欧美另类videos死尸| 欧美r级在线观看| 日本一区二区不卡视频| 亚洲美女在线一区| 三级亚洲高清视频| 国产乱一区二区| 91蜜桃在线免费视频| 91精品国产综合久久香蕉麻豆| 欧美精品一区视频| 亚洲天堂av一区| 美女视频黄a大片欧美| 99久久精品国产毛片| 欧美精品久久99| 国产日韩av一区| 亚洲国产欧美一区二区三区丁香婷| 美女视频一区二区三区| 99久久久久久99| 日韩欧美一卡二卡| 亚洲蜜臀av乱码久久精品| 美女视频黄 久久| 日本高清不卡在线观看| 久久影视一区二区| 天天影视色香欲综合网老头| av亚洲产国偷v产偷v自拍| 日韩一区二区三区免费看| 亚洲欧洲制服丝袜| 成人午夜视频在线观看| 日韩一区二区三| 亚洲在线视频网站| 99久久国产综合精品色伊| 久久免费偷拍视频| 欧美bbbbb| 日韩欧美一区在线观看| 亚洲国产成人va在线观看天堂| 激情另类小说区图片区视频区| 欧美三级中文字幕| 亚洲一级二级在线| 色呦呦国产精品| 亚洲一区在线电影| 欧美色倩网站大全免费| 亚洲欧洲在线观看av| 成人久久视频在线观看| 亚洲国产精品高清| 国产成人a级片| 一区视频在线播放| 97久久久精品综合88久久| 亚洲一区自拍偷拍| 欧美日韩国产精选| 九九精品视频在线看| 日本一区二区三级电影在线观看|