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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? c21.c

?? UNIX v6源代碼 這幾乎是最經(jīng)典的unix版本 unix操作系統(tǒng)設(shè)計(jì)和萊昂氏unix源代碼分析都是用的該版
?? 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);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类中文字幕网| 99re66热这里只有精品3直播| 久久久精品天堂| 91亚洲资源网| 国产成人综合视频| 日韩有码一区二区三区| 中国色在线观看另类| 91精品欧美一区二区三区综合在| 成熟亚洲日本毛茸茸凸凹| 婷婷夜色潮精品综合在线| 国产精品沙发午睡系列990531| 欧美一区二区三区视频在线| 色美美综合视频| 成人禁用看黄a在线| 国产乱子伦一区二区三区国色天香| 亚洲成a人v欧美综合天堂| 亚洲日本丝袜连裤袜办公室| 亚洲精品一区二区三区精华液 | 日韩精品一区二区三区中文精品| 91视频国产资源| 国产美女视频一区| 美国十次综合导航| 日韩精品91亚洲二区在线观看| ...av二区三区久久精品| 国产精品午夜在线| 国产欧美日本一区视频| 久久亚洲影视婷婷| 中文字幕中文乱码欧美一区二区| 久久夜色精品一区| 久久伊人中文字幕| 久久久久久亚洲综合影院红桃| 日韩久久久精品| 日韩免费一区二区| 日韩色在线观看| 欧美一二区视频| 日韩小视频在线观看专区| 欧美日本在线看| 欧美日本一区二区| 欧美精品高清视频| 欧美一区二区二区| 日韩欧美一二三四区| 精品国产一区二区三区av性色 | 欧美伊人久久久久久午夜久久久久| 丁香另类激情小说| 成人18视频日本| 91在线丨porny丨国产| 色婷婷狠狠综合| 欧美日韩精品一区视频| 欧美电影一区二区| 日韩欧美黄色影院| 久久久久久久久久久电影| 中文字幕免费一区| 亚洲三级电影网站| 午夜电影一区二区三区| 久久国产精品露脸对白| 国产成人免费视| 91视视频在线直接观看在线看网页在线看| 91视视频在线观看入口直接观看www | 国产一区二区三区av电影| 国产精品综合一区二区| 丁香六月久久综合狠狠色| 91色九色蝌蚪| 欧美日韩一区高清| 日韩欧美中文字幕制服| 国产三级一区二区三区| 亚洲欧美综合另类在线卡通| 亚洲少妇30p| 日韩av在线免费观看不卡| 激情综合网激情| voyeur盗摄精品| 欧美三级韩国三级日本三斤| 精品嫩草影院久久| 国产精品毛片大码女人| 亚洲高清免费在线| 国产一区二区三区国产| 色八戒一区二区三区| 日韩欧美国产系列| 欧美高清在线精品一区| 亚洲国产日韩a在线播放| 国产麻豆91精品| 欧美怡红院视频| 国产偷v国产偷v亚洲高清| 一区二区免费看| 国内成人自拍视频| 日本高清成人免费播放| 日韩小视频在线观看专区| 亚洲视频一二三| 九九精品视频在线看| 色婷婷av久久久久久久| 久久―日本道色综合久久| 亚洲一区二区视频| 国产成人av一区二区三区在线| 欧美中文一区二区三区| 国产欧美日韩亚州综合| 免费成人在线影院| 91丝袜美女网| 国产亚洲精品免费| 蜜臀久久久久久久| 91麻豆福利精品推荐| 久久久久青草大香线综合精品| 亚洲午夜国产一区99re久久| 国产成人免费xxxxxxxx| 欧美另类z0zxhd电影| 最新国产成人在线观看| 黑人精品欧美一区二区蜜桃| 91.com视频| 一个色综合av| 不卡一区二区在线| 久久一区二区视频| 久久精品999| 91精品国产欧美一区二区18| 亚洲色大成网站www久久九九| 国产尤物一区二区在线| 日韩西西人体444www| 亚洲一区二区高清| 色综合亚洲欧洲| 国产精品久久久久久亚洲伦| 国产自产高清不卡| 欧美不卡一区二区三区四区| 亚洲一区二区三区在线看| av爱爱亚洲一区| 欧美国产精品一区二区三区| 国产精品主播直播| 精品国产乱码久久久久久久久| 亚洲成人激情综合网| 欧美日韩亚洲不卡| 亚洲影视资源网| 在线亚洲欧美专区二区| 中文字幕一区二区在线观看| 福利91精品一区二区三区| 国产日韩欧美高清在线| 国产成人一区在线| 国产精品美女久久久久久| 国产91精品一区二区麻豆亚洲| 久久久一区二区三区| 国产一区二区调教| 亚洲国产经典视频| av资源站一区| 亚洲人成精品久久久久| 99re8在线精品视频免费播放| 国产精品白丝在线| 在线免费观看日本一区| 亚洲图片一区二区| 在线播放中文字幕一区| 奇米一区二区三区| 精品国产亚洲一区二区三区在线观看| 亚洲精品国产一区二区精华液| 在线亚洲一区二区| 三级久久三级久久久| 欧美日高清视频| 精品在线一区二区三区| 国产欧美日韩精品a在线观看| 成人午夜看片网址| 亚洲精品你懂的| 69久久夜色精品国产69蝌蚪网 | av一区二区三区| 亚洲夂夂婷婷色拍ww47| 在线播放一区二区三区| 久久成人羞羞网站| 中文字幕va一区二区三区| 91麻豆精品一区二区三区| 亚洲一区二区精品久久av| 欧美一二三区在线| 盗摄精品av一区二区三区| 一区二区三区在线视频免费观看| 欧美色大人视频| 精品在线观看免费| 亚洲欧洲在线观看av| 欧美三级电影一区| 国产一区999| 夜色激情一区二区| 久久只精品国产| 欧美性生活影院| 国内精品不卡在线| 一区二区三区在线免费观看| 日韩丝袜美女视频| 成人h版在线观看| 亚洲成av人影院| 国产喂奶挤奶一区二区三区| 在线一区二区观看| 国产精品 欧美精品| 亚洲高清中文字幕| 国产欧美日韩不卡免费| 欧美人伦禁忌dvd放荡欲情| 国产盗摄一区二区三区| 亚洲福利视频导航| 国产精品无遮挡| 91精品婷婷国产综合久久性色| av一区二区久久| 久久精品国产一区二区| 伊人色综合久久天天| 久久久精品免费免费| 欧美日韩一区二区三区不卡| 国产成人综合亚洲网站| 日本不卡不码高清免费观看| 亚洲图片你懂的| 久久久国际精品| 欧美一卡2卡3卡4卡| 日本韩国欧美三级| 国产成人av电影免费在线观看|