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

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

?? c21.c

?? UNIX版本6的源代碼
?? C
字號:
#/* * C object code improver-- second part */#include "c2h.c"rmove(){	register struct node *p;	register char *cp;	register int r;	int r1, flt;	for (p=first.forw; p!=0; p = p->forw) {	if (debug) {		for (r=0; r<2*NREG; r++)			if (regs[r][0])				printf("%d: %s\n", r, regs[r]);		printf("-\n");	}	flt = 0;	switch (p->op) {	case MOVF:	case MOVFO:	case MOVOF:		flt = NREG;	case MOV:		if (p->subop==BYTE)			goto badmov;		dualop(p);		if ((r = findrand(regs[RT1], flt)) >= 0) {			if (r == flt+isreg(regs[RT2]) && p->forw->op!=CBR) {				p->forw->back = p->back;				p->back->forw = p->forw;				redunm++;				continue;			}		}		repladdr(p, 0, flt);		r = isreg(regs[RT1]);		r1 = isreg(regs[RT2]);		dest(regs[RT2], flt);		if (r >= 0)			if (r1 >= 0)				savereg(r1+flt, regs[r+flt]);			else				savereg(r+flt, regs[RT2]);		else			if (r1 >= 0)				savereg(r1+flt, regs[RT1]);			else				setcon(regs[RT1], regs[RT2]);		source(regs[RT1]);		setcc(regs[RT2]);		continue;	case ADDF:	case SUBF:	case DIVF:	case MULF:		flt = NREG;	case ADD:	case SUB:	case BIC:	case BIS:	case MUL:	case DIV:	case ASH:	badmov:		dualop(p);		repladdr(p, 0, flt);		source(regs[RT1]);		dest(regs[RT2], flt);		if (p->op==DIV && (r = isreg(regs[RT2])>=0))			regs[r+1][0] = 0;		ccloc[0] = 0;		continue;	case CLRF:	case NEGF:		flt = NREG;	case CLR:	case COM:	case INC:	case DEC:	case NEG:	case ASR:	case ASL:	case SXT:		singop(p);		dest(regs[RT1], flt);		if (p->op==CLR && flt==0)			if ((r = isreg(regs[RT1])) >= 0)				savereg(r, "$0");			else				setcon("$0", regs[RT1]);		setcc(regs[RT1]);		continue;	case TSTF:		flt = NREG;	case TST:		singop(p);		repladdr(p, 0, flt);		source(regs[RT1]);		if (equstr(regs[RT1], ccloc)) {			p->back->forw = p->forw;			p->forw->back = p->back;			p = p->back;			nrtst++;			nchange++;		}		continue;	case CMPF:		flt = NREG;	case CMP:	case BIT:		dualop(p);		source(regs[RT1]);		source(regs[RT2]);		repladdr(p, 1, flt);		ccloc[0] = 0;		continue;	case CBR:	case CFCC:		ccloc[0] = 0;		continue;	case JBR:		redunbr(p);	default:		clearreg();	}	}}jumpsw(){	register struct node *p, *p1;	register t;	int nj;	t = 0;	nj = 0;	for (p=first.forw; p!=0; p = p->forw)		p->refc = ++t;	for (p=first.forw; p!=0; p = p1) {		p1 = p->forw;		if (p->op == CBR && p1->op==JBR && p->ref && p1->ref		 && abs(p->refc - p->ref->refc) > abs(p1->refc - p1->ref->refc)) {			p->subop = revbr[p->subop];			t = p1->ref;			p1->ref = p->ref;			p->ref = t;			t = p1->labno;			p1->labno = p->labno;			p->labno = t;			nrevbr++;			nj++;		}	}	return(nj);}addsob(){	register struct node *p, *p1;	for (p = &first; (p1 = p->forw)!=0; p = p1) {		if (p->op==DEC && isreg(p->code)>=0		 && p1->combop==(CBR|JNE<<8)) {			if (p->refc < p1->ref->refc)				continue;			if (p->refc - p1->ref->refc > 50)				continue;			p->labno = p1->labno;			p->combop = SOB;			p1->forw->back = p;			p->forw = p1->forw;			nsob++;		}	}}abs(x){	return(x<0? -x: x);}equop(ap1, p2)struct node *ap1, *p2;{	register char *cp1, *cp2;	register struct node *p1;	p1 = ap1;	if (p1->combop != p2->combop)		return(0);	if (p1->op>0 && p1->op<MOV)		return(0);	cp1 = p1->code;	cp2 = p2->code;	if (cp1==0 && cp2==0)		return(1);	if (cp1==0 || cp2==0)		return(0);	while (*cp1 == *cp2++)		if (*cp1++ == 0)			return(1);	return(0);}decref(ap){	register struct node *p;	p = ap;	if (--p->refc <= 0) {		nrlab++;		p->back->forw = p->forw;		p->forw->back = p->back;	}}nonlab(ap)struct node *ap;{	register struct node *p;	p = ap;	while (p && p->op==LABEL)		p = p->forw;	return(p);}alloc(an){	register int n;	register char *p;	n = an;	n++;	n =& ~01;	if (lasta+n >= lastr) {		if (sbrk(2000) == -1) {			write(2, "Optimizer: out of space\n", 14);			exit(1);		}		lastr =+ 2000;	}	p = lasta;	lasta =+ n;	return(p);}clearreg(){	register int i;	for (i=0; i<2*NREG; i++)		regs[i][0] = '\0';	conloc[0] = 0;	ccloc[0] = 0;}savereg(ai, as)char *as;{	register char *p, *s, *sp;	sp = p = regs[ai];	s = as;	if (source(s))		return;	while (*p++ = *s) {		if (s[0]=='(' && s[1]=='r' && s[2]<'5') {			*sp = 0;			return;		}		if (*s++ == ',')			break;	}	*--p = '\0';}dest(as, flt)char *as;{	register char *s;	register int i;	s = as;	if ((i = isreg(s)) >= 0)		regs[i+flt][0] = 0;	while ((i = findrand(s, flt)) >= 0)		regs[i][0] = 0;	while (*s) {		if ((*s=='(' && (*(s+1)!='r' || *(s+2)!='5')) || *s++=='*') {			for (i=flt; i<flt+NREG; i++) {				if (regs[i][0] != '$')					regs[i][0] = 0;				conloc[0] = 0;			}			return;		}	}}singop(ap)struct node *ap;{	register char *p1, *p2;	p1 = ap->code;	p2 = regs[RT1];	while (*p2++ = *p1++);	regs[RT2][0] = 0;}dualop(ap)struct node *ap;{	register char *p1, *p2;	register struct node *p;	p = ap;	p1 = p->code;	p2 = regs[RT1];	while (*p1 && *p1!=',')		*p2++ = *p1++;	*p2++ = 0;	p2 = regs[RT2];	*p2 = 0;	if (*p1++ !=',')		return;	while (*p2++ = *p1++);}findrand(as, flt)char *as;{	register int i;	for (i = flt; i<NREG+flt; i++) {		if (equstr(regs[i], as))			return(i);	}	return(-1);}isreg(as)char *as;{	register char *s;	s = as;	if (s[0]=='r' && s[1]>='0' && s[1]<='4' && s[2]==0)		return(s[1]-'0');	return(-1);}check(){	register struct node *p, *lp;	lp = &first;	for (p=first.forw; p!=0; p = p->forw) {		if (p->back != lp)			abort();		lp = p;	}}source(ap)char *ap;{	register char *p1, *p2;	p1 = ap;	p2 = p1;	if (*p1==0)		return(0);	while (*p2++);	if (*p1=='-' && *(p1+1)=='('	 || *p1=='*' && *(p1+1)=='-' && *(p1+2)=='('	 || *(p2-2)=='+') {		while (*p1 && *p1++!='r');		if (*p1>='0' && *p1<='4')			regs[*p1 - '0'][0] = 0;		return(1);	}	return(0);}repladdr(p, f, flt)struct node *p;{	register r;	int r1;	register char *p1, *p2;	static char rt1[50], rt2[50];	if (f)		r1 = findrand(regs[RT2], flt);	else		r1 = -1;	r = findrand(regs[RT1], flt);	if (r1 >= NREG)		r1 =- NREG;	if (r >= NREG)		r =- NREG;	if (r>=0 || r1>=0) {		p2 = regs[RT1];		for (p1 = rt1; *p1++ = *p2++;);		if (regs[RT2][0]) {			p1 = rt2;			*p1++ = ',';			for (p2 = regs[RT2]; *p1++ = *p2++;);		} else			rt2[0] = 0;		if (r>=0) {			rt1[0] = 'r';			rt1[1] = r + '0';			rt1[2] = 0;			nsaddr++;		}		if (r1>=0) {			rt2[1] = 'r';			rt2[2] = r1 + '0';			rt2[3] = 0;			nsaddr++;		}		p->code = copy(rt1, rt2);	}}movedat(){	register struct node *p1, *p2;	struct node *p3;	register seg;	struct node data;	struct node *datp;	if (first.forw == 0)		return;	datp = &data;	for (p1 = first.forw; p1!=0; p1 = p1->forw) {		if (p1->op == DATA) {			p2 = p1->forw;			while (p2 && p2->op!=TEXT)				p2 = p2->forw;			if (p2==0)				break;			p3 = p1->back;			p1->back->forw = p2->forw;			p2->forw->back = p3;			p2->forw = 0;			datp->forw = p1;			p1->back = datp;			p1 = p3;			datp = p2;		}	}	if (data.forw) {		datp->forw = first.forw;		first.forw->back = datp;		data.forw->back = &first;		first.forw = data.forw;	}	seg = -1;	for (p1 = first.forw; p1!=0; p1 = p1->forw) {		if (p1->op==TEXT||p1->op==DATA||p1->op==BSS) {			if (p1->op == seg || p1->forw&&p1->forw->op==seg) {				p1->back->forw = p1->forw;				p1->forw->back = p1->back;				p1 = p1->back;				continue;			}			seg = p1->op;		}	}}redunbr(ap)struct node *ap;{	register struct node *p, *p1;	register char *ap1;	char *ap2;	if ((p1 = p->ref) == 0)		return;	p1 = nonlab(p1);	if (p1->op==TST) {		singop(p1);		savereg(RT2, "$0");	} else if (p1->op==CMP)		dualop(p1);	else		return;	if (p1->forw->op!=CBR)		return;	ap1 = findcon(RT1);	ap2 = findcon(RT2);	p1 = p1->forw;	if (compare(p1->subop, ap1, ap2)) {		nredunj++;		nchange++;		decref(p->ref);		p->ref = p1->ref;		p->labno = p1->labno;		p->ref->refc++;	}}findcon(i){	register char *p;	register r;	p = regs[i];	if (*p=='$')		return(p);	if ((r = isreg(p)) >= 0)		return(regs[r]);	if (equstr(p, conloc))		return(conval);	return(p);}compare(op, acp1, acp2)char *acp1, *acp2;{	register char *cp1, *cp2;	register n1;	int n2;	struct { int i;};	cp1 = acp1;	cp2 = acp2;	if (*cp1++ != '$' || *cp2++ != '$')		return(0);	n1 = 0;	while (*cp2 >= '0' && *cp2 <= '7') {		n1 =<< 3;		n1 =+ *cp2++ - '0';	}	n2 = n1;	n1 = 0;	while (*cp1 >= '0' && *cp1 <= '7') {		n1 =<< 3;		n1 =+ *cp1++ - '0';	}	if (*cp1=='+')		cp1++;	if (*cp2=='+')		cp2++;	do {		if (*cp1++ != *cp2)			return(0);	} while (*cp2++);	cp1 = n1;	cp2 = n2;	switch(op) {	case JEQ:		return(cp1 == cp2);	case JNE:		return(cp1 != cp2);	case JLE:		return(cp1.i <= cp2.i);	case JGE:		return(cp1.i >= cp2.i);	case JLT:		return(cp1.i < cp2.i);	case JGT:		return(cp1.i > cp2.i);	case JLO:		return(cp1 < cp2);	case JHI:		return(cp1 > cp2);	case JLOS:		return(cp1 <= cp2);	case JHIS:		return(cp1 >= cp2);	}	return(0);}setcon(ar1, ar2)char *ar1, *ar2;{	register char *cl, *cv, *p;	cl = ar2;	cv = ar1;	if (*cv != '$')		return;	if (!natural(cl))		return;	p = conloc;	while (*p++ = *cl++);	p = conval;	while (*p++ = *cv++);}equstr(ap1, ap2)char *ap1, *ap2;{	char *p1, *p2;	p1 = ap1;	p2 = ap2;	do {		if (*p1++ != *p2)			return(0);	} while (*p2++);	return(1);}setcc(ap)char *ap;{	register char *p, *p1;	p = ap;	if (!natural(p)) {		ccloc[0] = 0;		return;	}	p1 = ccloc;	while (*p1++ = *p++);}natural(ap)char *ap;{	register char *p;	p = ap;	if (*p=='*' || *p=='(' || *p=='-'&&*(p+1)=='(')		return(0);	while (*p++);	p--;	if (*--p == '+' || *p ==')' && *--p != '5')		return(0);	return(1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲与欧洲av电影| 欧美日韩一区二区三区视频| 欧美不卡一二三| 日本麻豆一区二区三区视频| 日韩欧美中文字幕精品| 日韩精品一区第一页| 日韩亚洲欧美中文三级| 美腿丝袜亚洲三区| 欧美精品一区二区三区高清aⅴ | 99久久国产综合精品色伊 | 久久综合给合久久狠狠狠97色69| 国产一区二区主播在线| 国产欧美日韩激情| 制服丝袜亚洲色图| 午夜欧美视频在线观看| 91精品国产综合久久精品app| 日本不卡一区二区三区高清视频| 欧美成人精精品一区二区频| 国产精品正在播放| 亚洲男人的天堂在线观看| 欧美日韩一区二区三区高清| 热久久免费视频| 日本一区二区三区免费乱视频| 色综合色综合色综合| 日本最新不卡在线| 中文子幕无线码一区tr| 欧美中文字幕久久| 国产一区在线不卡| 一区二区三区日韩欧美精品| 精品国产免费久久| 99久久婷婷国产综合精品电影| 亚洲成人av一区二区| 亚洲精品一区二区三区福利| 99精品国产一区二区三区不卡| 亚瑟在线精品视频| 国产三级精品三级| 91精品国产入口| 99久久99久久精品免费观看| 日本不卡视频在线| 中文字幕佐山爱一区二区免费| 日韩三级视频在线看| 91丨porny丨国产| 精品夜夜嗨av一区二区三区| 亚洲情趣在线观看| 久久九九久久九九| 51精品视频一区二区三区| av中文字幕亚洲| 激情欧美一区二区三区在线观看| 一区二区成人在线视频| 国产无人区一区二区三区| 欧美日韩国产一区二区三区地区| 国产v综合v亚洲欧| 另类综合日韩欧美亚洲| 婷婷综合在线观看| 亚洲精品视频免费看| 久久女同互慰一区二区三区| 欧美日韩精品久久久| 91网站视频在线观看| 国产精品99久久久久久有的能看 | 精品欧美一区二区在线观看| 欧洲亚洲国产日韩| 99在线精品一区二区三区| 久久99国产精品免费网站| 欧美a级一区二区| 奇米精品一区二区三区四区| 亚洲免费在线看| 中文字幕一区二区三区不卡 | 高清国产午夜精品久久久久久| 日韩国产在线一| ㊣最新国产の精品bt伙计久久| 久久九九国产精品| 久久精品免视看| 欧美本精品男人aⅴ天堂| 欧美精品久久久久久久久老牛影院| 91视频免费播放| 99久久国产免费看| www.日韩av| 97久久精品人人做人人爽50路| 国产99久久久精品| 成人晚上爱看视频| www.亚洲人| 一本色道久久综合精品竹菊| 91在线精品一区二区| proumb性欧美在线观看| 99久久免费精品| 91女厕偷拍女厕偷拍高清| 99视频在线精品| 色一情一乱一乱一91av| 欧美性猛片xxxx免费看久爱| 欧美日韩午夜在线视频| 91麻豆精品国产91久久久资源速度| 欧美日本一道本在线视频| 91精品国产综合久久久久久| 日韩精品一区二区三区在线观看| 欧美一区二区三区精品| 久久久综合九色合综国产精品| 日韩欧美综合一区| 国产亚洲欧美一区在线观看| 中文字幕一区二区在线播放| 一区二区三区欧美| 日韩高清在线一区| 国产精品88888| jlzzjlzz亚洲日本少妇| 在线一区二区观看| 日韩一卡二卡三卡四卡| 久久精品亚洲国产奇米99| 国产精品国产三级国产普通话蜜臀 | 亚洲国产日韩a在线播放性色| 午夜精彩视频在线观看不卡| 国产美女久久久久| 99精品在线观看视频| 欧美中文字幕一区二区三区亚洲| 日韩欧美综合一区| 国产精品久久久久久久久久久免费看 | 蜜臀av一区二区在线观看| 国产精品99久久久久久宅男| 色综合天天性综合| 制服.丝袜.亚洲.中文.综合| 亚洲bt欧美bt精品777| 国产一区视频网站| 色天天综合色天天久久| 日韩精品专区在线| 国产精品久久久久久久久图文区 | 欧美二区在线观看| 欧美国产激情一区二区三区蜜月| 亚洲大尺度视频在线观看| 激情综合亚洲精品| 91行情网站电视在线观看高清版| 日韩欧美一级在线播放| 国产精品久久久久久久久免费丝袜 | 精品美女一区二区三区| 亚洲欧美视频一区| 久久国产成人午夜av影院| 91年精品国产| 精品国产123| 亚洲午夜国产一区99re久久| 国产成人在线看| 911精品国产一区二区在线| 国产精品美女一区二区| 麻豆成人av在线| 欧美性极品少妇| 亚洲三级在线播放| 国产在线精品一区二区| 欧美日韩国产小视频| 国产精品久久三| 狠狠网亚洲精品| 91精品午夜视频| 一区二区三区蜜桃| jiyouzz国产精品久久| 久久久欧美精品sm网站 | 免费在线观看日韩欧美| caoporm超碰国产精品| 久久久久久久久99精品| 三级欧美在线一区| 在线观看视频91| 亚洲欧美日韩中文字幕一区二区三区 | 专区另类欧美日韩| 99在线精品视频| 国产日韩影视精品| 国产一区二区三区在线看麻豆| 在线不卡一区二区| 亚洲国产精品久久久久婷婷884| 成人国产在线观看| 欧美激情一区不卡| 波多野结衣在线一区| 国产精品色噜噜| 成人黄色在线看| 国产精品嫩草影院com| 成人午夜在线视频| 亚洲欧美综合另类在线卡通| www.亚洲在线| 亚洲日本va午夜在线影院| 成人国产精品免费观看| 亚洲一级电影视频| 日本精品视频一区二区三区| 亚洲欧美经典视频| 在线视频一区二区三| 一区二区中文视频| 97精品电影院| 亚洲综合色丁香婷婷六月图片| 欧美在线观看禁18| 秋霞午夜鲁丝一区二区老狼| 日韩一级免费一区| 极品瑜伽女神91| 久久综合一区二区| 日韩精品一区二区三区中文精品| 日韩激情一区二区| 国产精品国产自产拍高清av| 欧美一级日韩免费不卡| 在线观看日韩av先锋影音电影院| 韩国精品久久久| 精品在线亚洲视频| 久久福利资源站| 日本成人在线看| 五月综合激情婷婷六月色窝| 国产精品福利av| 日韩美女主播在线视频一区二区三区| av成人免费在线观看| 亚洲成人动漫在线免费观看| 日韩一区二区三区视频|