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

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

?? c20.c

?? UNIX v6源代碼 這幾乎是最經典的unix版本 unix操作系統設計和萊昂氏unix源代碼分析都是用的該版
?? C
字號:
#/* *	 C object code improver */#include "c2h.c"struct optab optab[] {	"jbr",	JBR,	"jeq",	CBR | JEQ<<8,	"jne",	CBR | JNE<<8,	"jle",	CBR | JLE<<8,	"jge",	CBR | JGE<<8,	"jlt",	CBR | JLT<<8,	"jgt",	CBR | JGT<<8,	"jlo",	CBR | JLO<<8,	"jhi",	CBR | JHI<<8,	"jlos",	CBR | JLOS<<8,	"jhis",	CBR | JHIS<<8,	"jmp",	JMP,	".globl",EROU,	"mov",	MOV,	"clr",	CLR,	"com",	COM,	"inc",	INC,	"dec",	DEC,	"neg",	NEG,	"tst",	TST,	"asr",	ASR,	"asl",	ASL,	"sxt",	SXT,	"cmp",	CMP,	"add",	ADD,	"sub",	SUB,	"bit",	BIT,	"bic",	BIC,	"bis",	BIS,	"mul",	MUL,	"ash",	ASH,	"xor",	XOR,	".text",TEXT,	".data",DATA,	".bss",	BSS,	".even",EVEN,	"movf",	MOVF,	"movof",MOVOF,	"movfo",MOVFO,	"addf",	ADDF,	"subf",	SUBF,	"divf",	DIVF,	"mulf",	MULF,	"clrf",	CLRF,	"cmpf",	CMPF,	"negf",	NEGF,	"tstf",	TSTF,	"cfcc",	CFCC,	"sob",	SOB,	"jsr",	JSR,	".end",	END,	0,	0};char	revbr[] { JNE, JEQ, JGT, JLT, JGE, JLE, JHIS, JLOS, JHI, JLO };int	isn	20000;main(argc, argv)char **argv;{	register int niter, maxiter, isend;	extern end;	extern fin, fout;	int nflag;	if (argc>1 && argv[1][0]=='+') {		argc--;		argv++;		debug++;	}	if (argc>1 && argv[1][0]=='-') {		argc--;		argv++;		nflag++;	}	if (argc>1) {		if ((fin = open(argv[1], 0)) < 0) {			printf("C2: can't find %s\n", argv[1]);			exit(1);		}	} else		fin = dup(0);	if (argc>2) {		if ((fout = creat(argv[2], 0666)) < 0) {			fout = 1;			printf("C2: can't create %s\n", argv[2]);			exit(1);		}	} else		fout = dup(1);	lasta = firstr = lastr = sbrk(2);	maxiter = 0;	opsetup();	do {		isend = input();		movedat();		niter = 0;		do {			refcount();			do {				iterate();				clearreg();				niter++;			} while (nchange);			comjump();			rmove();		} while (nchange || jumpsw());		addsob();		output();		if (niter > maxiter)			maxiter = niter;		lasta = firstr;	} while (isend);	flush();	fout = 2;	if (nflag) {		printf("%d iterations\n", maxiter);		printf("%d jumps to jumps\n", nbrbr);		printf("%d inst. after jumps\n", iaftbr);		printf("%d jumps to .+2\n", njp1);		printf("%d redundant labels\n", nrlab);		printf("%d cross-jumps\n", nxjump);		printf("%d code motions\n", ncmot);		printf("%d branches reversed\n", nrevbr);		printf("%d redundant moves\n", redunm);		printf("%d simplified addresses\n", nsaddr);		printf("%d loops inverted\n", loopiv);		printf("%d redundant jumps\n", nredunj);		printf("%d common seqs before jmp's\n", ncomj);		printf("%d skips over jumps\n", nskip);		printf("%d sob's added\n", nsob);		printf("%d redundant tst's\n", nrtst);		printf("%d literals eliminated\n", nlit);		printf("%dK core\n", ((lastr+01777)>>10)&077);		flush();	}	exit(0);}input(){	register struct node *p, *lastp;	register int op;	lastp = &first;	for (;;) {		op = getline();		switch (op.op) {			case LABEL:			p = alloc(sizeof first);			if (line[0] == 'L') {				p->combop = LABEL;				p->labno = getnum(line+1);				p->code = 0;			} else {				p->combop = DLABEL;				p->labno = 0;				p->code = copy(line);			}			break;			case JBR:		case CBR:		case JMP:		case JSW:			p = alloc(sizeof first);			p->combop = op;			if (*curlp=='L' && (p->labno = getnum(curlp+1)))				p->code = 0;			else {				p->labno = 0;				p->code = copy(curlp);			}			break;		default:			p = alloc(sizeof first);			p->combop = op;			p->labno = 0;			p->code = copy(curlp);			break;		}		p->forw = 0;		p->back = lastp;		lastp->forw = p;		lastp = p;		p->ref = 0;		if (op==EROU)			return(1);		if (op==END)			return(0);	}}getline(){	register char *lp;	register c;	lp = line;	while (c = getchar()) {		if (c==':') {			*lp++ = 0;			return(LABEL);		}		if (c=='\n') {			*lp++ = 0;			return(oplook());		}		*lp++ = c;	}	*lp++ = 0;	return(END);}getnum(ap)char *ap;{	register char *p;	register n, c;	p = ap;	n = 0;	while ((c = *p++) >= '0' && c <= '9')		n = n*10 + c - '0';	if (*--p != 0)		return(0);	return(n);}output(){	register struct node *t;	register struct optab *op;	register int byte;	t = &first;	while (t = t->forw) switch (t->op) {	case END:		return;	case LABEL:		printf("L%d:", t->labno);		continue;	case DLABEL:		printf("%s:", t->code);		continue;	default:		if ((byte = t->subop) == BYTE)			t->subop = 0;		for (op = optab; op->opstring!=0; op++) 			if (op->opcode == t->combop) {				printf("%s", op->opstring);				if (byte==BYTE)					printf("b");				break;			}		if (t->code) {			reducelit(t);			printf("\t%s\n", t->code);		} else if (t->op==JBR || t->op==CBR)			printf("\tL%d\n", t->labno);		else			printf("\n");		continue;	case JSW:		printf("L%d\n", t->labno);		continue;	case SOB:		printf("sob	%s,L%d\n", t->code, t->labno);		continue;	case 0:		if (t->code)			printf("%s", t->code);		printf("\n");		continue;	}}/* * Notice addresses of the form * $xx,xx(r) * and replace them with (pc),xx(r) *     -- Thanx and a tip of the Hatlo hat to Bliss-11. */reducelit(at)struct node *at;{	register char *c1, *c2;	char *c2s;	register struct node *t;	t = at;	if (*t->code != '$')		return;	c1 = t->code;	while (*c1 != ',')		if (*c1++ == '\0')			return;	c2s = c1;	c1++;	if (*c1=='*')		c1++;	c2 = t->code+1;	while (*c1++ == *c2++);	if (*--c1!='(' || *--c2!=',')		return;	t->code = copy("(pc)", c2s);	nlit++;}copy(ap)char *ap;{	register char *p, *np;	char *onp;	register n;	int na;	na = nargs();	p = ap;	n = 0;	if (*p==0)		return(0);	do		n++;	while (*p++);	if (na>1) {		p = (&ap)[1];		while (*p++)			n++;	}	onp = np = alloc(n);	p = ap;	while (*np++ = *p++);	if (na>1) {		p = (&ap)[1];		np--;		while (*np++ = *p++);	}	return(onp);}opsetup(){	register struct optab *optp, **ophp;	register char *p;	for (optp = optab; p = optp->opstring; optp++) {		ophp = &ophash[(((p[0]<<3)+(p[1]<<1)+p[2])&077777) % OPHS];		while (*ophp++)			if (ophp > &ophash[OPHS])				ophp = ophash;		*--ophp = optp;	}}oplook(){	register struct optab *optp;	register char *lp, *op;	static char tmpop[32];	struct optab **ophp;	op = tmpop;	for (lp = line; *lp && *lp!=' ' && *lp!='\t';)		*op++ = *lp++;	*op++ = 0;	while (*lp=='\t' || *lp==' ')		lp++;	curlp = lp;	ophp = &ophash[(((tmpop[0]<<3)+(tmpop[1]<<1)+tmpop[2])&077777) % OPHS];	while (optp = *ophp) {		op = optp->opstring;		lp = tmpop;		while (*lp == *op++)			if (*lp++ == 0)				return(optp->opcode);		if (*lp++=='b' && *lp++==0 && *--op==0)			return(optp->opcode + (BYTE<<8));		ophp++;		if (ophp >= &ophash[OPHS])			ophp = ophash;	}	if (line[0]=='L') {		lp = &line[1];		while (*lp)			if (*lp<'0' || *lp++>'9')				return(0);		curlp = line;		return(JSW);	}	curlp = line;	return(0);}refcount(){	register struct node *p, *lp;	static struct node *labhash[LABHS];	register struct node **hp;	for (hp = labhash; hp < &labhash[LABHS];)		*hp++ = 0;	for (p = first.forw; p!=0; p = p->forw)		if (p->op==LABEL) {			labhash[p->labno % LABHS] = p;			p->refc = 0;		}	for (p = first.forw; p!=0; p = p->forw) {		if (p->op==JBR || p->op==CBR || p->op==JSW) {			p->ref = 0;			lp = labhash[p->labno % LABHS];			if (lp==0 || p->labno!=lp->labno)			for (lp = first.forw; lp!=0; lp = lp->forw) {				if (lp->op==LABEL && p->labno==lp->labno)					break;			}			if (lp) {				hp = nonlab(lp)->back;				if (hp!=lp) {					p->labno = hp->labno;					lp = hp;				}				p->ref = lp;				lp->refc++;			}		}	}	for (p = first.forw; p!=0; p = p->forw)		if (p->op==LABEL && p->refc==0		 && (lp = nonlab(p))->op && lp->op!=JSW)			decref(p);}iterate(){	register struct node *p, *rp, *p1;	nchange = 0;	for (p = first.forw; p!=0; p = p->forw) {		if ((p->op==JBR||p->op==CBR||p->op==JSW) && p->ref) {			rp = nonlab(p->ref);			if (rp->op==JBR && rp->labno && p!=rp) {				nbrbr++;				p->labno = rp->labno;				decref(p->ref);				rp->ref->refc++;				p->ref = rp->ref;				nchange++;			}		}		if (p->op==CBR && (p1 = p->forw)->op==JBR) {			rp = p->ref;			do				rp = rp->back;			while (rp->op==LABEL);			if (rp==p1) {				decref(p->ref);				p->ref = p1->ref;				p->labno = p1->labno;				p1->forw->back = p;				p->forw = p1->forw;				p->subop = revbr[p->subop];				nchange++;				nskip++;			}		}		if (p->op==JBR || p->op==JMP) {			while (p->forw && p->forw->op!=LABEL				&& p->forw->op!=EROU && p->forw->op!=END) {				nchange++;				iaftbr++;				if (p->forw->ref)					decref(p->forw->ref);				p->forw = p->forw->forw;				p->forw->back = p;			}			rp = p->forw;			while (rp && rp->op==LABEL) {				if (p->ref == rp) {					p->back->forw = p->forw;					p->forw->back = p->back;					p = p->back;					decref(rp);					nchange++;					njp1++;					break;				}				rp = rp->forw;			}			xjump(p);			p = codemove(p);		}	}}xjump(ap){	register int *p1, *p2, *p3;	int nxj;	nxj = 0;	p1 = ap;	if ((p2 = p1->ref)==0)		return(0);	for (;;) {		while ((p1 = p1->back) && p1->op==LABEL);		while ((p2 = p2->back) && p2->op==LABEL);		if (!equop(p1, p2) || p1==p2)			return(nxj);		p3 = insertl(p2);		p1->combop = JBR;		p1->ref = p3;		p1->labno = p3->labno;		p1->code = 0;		nxj++;		nxjump++;		nchange++;	}}insertl(ap)struct node *ap;{	register struct node *lp, *op;	op = ap;	if (op->op == LABEL) {		op->refc++;		return(op);	}	if (op->back->op == LABEL) {		op = op->back;		op->refc++;		return(op);	}	lp = alloc(sizeof first);	lp->combop = LABEL;	lp->labno = isn++;	lp->ref = 0;	lp->code = 0;	lp->refc = 1;	lp->back = op->back;	lp->forw = op;	op->back->forw = lp;	op->back = lp;	return(lp);}codemove(ap)struct node *ap;{	register struct node *p1, *p2, *p3;	struct node *t, *tl;	int n;	p1 = ap;	if (p1->op!=JBR || (p2 = p1->ref)==0)		return(p1);	while (p2->op == LABEL)		if ((p2 = p2->back) == 0)			return(p1);	if (p2->op!=JBR && p2->op!=JMP)		goto ivloop;	p2 = p2->forw;	p3 = p1->ref;	while (p3) {		if (p3->op==JBR || p3->op==JMP) {			if (p1==p3)				return(p1);			ncmot++;			nchange++;			p1->back->forw = p2;			p1->forw->back = p3;			p2->back->forw = p3->forw;			p3->forw->back = p2->back;			p2->back = p1->back;			p3->forw = p1->forw;			decref(p1->ref);			return(p2);		} else			p3 = p3->forw;	}	return(p1);ivloop:	if (p1->forw->op!=LABEL)		return(p1);	p3 = p2 = p2->forw;	n = 16;	do {		if ((p3 = p3->forw) == 0 || p3==p1 || --n==0)			return(p1);	} while (p3->op!=CBR || p3->labno!=p1->forw->labno);	do 		if ((p1 = p1->back) == 0)			return(ap);	while (p1!=p3);	p1 = ap;	tl = insertl(p1);	p3->subop = revbr[p3->subop];	decref(p3->ref);	p2->back->forw = p1;	p3->forw->back = p1;	p1->back->forw = p2;	p1->forw->back = p3;	t = p1->back;	p1->back = p2->back;	p2->back = t;	t = p1->forw;	p1->forw = p3->forw;	p3->forw = t;	p2 = insertl(p1->forw);	p3->labno = p2->labno;	p3->ref = p2;	decref(tl);	if (tl->refc<=0)		nrlab--;	loopiv++;	nchange++;	return(p3);}comjump(){	register struct node *p1, *p2, *p3;	for (p1 = first.forw; p1!=0; p1 = p1->forw)		if (p1->op==JBR && (p2 = p1->ref) && p2->refc > 1)			for (p3 = p1->forw; p3!=0; p3 = p3->forw)				if (p3->op==JBR && p3->ref == p2)					backjmp(p1, p3);}backjmp(ap1, ap2)struct node *ap1, *ap2;{	register struct node *p1, *p2, *p3;	p1 = ap1;	p2 = ap2;	for(;;) {		while ((p1 = p1->back) && p1->op==LABEL);		p2 = p2->back;		if (equop(p1, p2)) {			p3 = insertl(p1);			p2->back->forw = p2->forw;			p2->forw->back = p2->back;			p2 = p2->forw;			decref(p2->ref);			p2->labno = p3->labno;			p2->ref = p3;			nchange++;			ncomj++;		} else			return;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天操天天色综合| 青青草精品视频| 国产精品嫩草影院com| 久久亚洲二区三区| 亚洲精品一区二区三区在线观看| 欧美一级久久久| 欧美一级专区免费大片| 欧美tickle裸体挠脚心vk| 精品久久久久香蕉网| 久久久久久久性| 久久这里只有精品6| 免费av成人在线| 久久成人久久鬼色| 激情综合色丁香一区二区| 国产在线看一区| 懂色av一区二区三区蜜臀| eeuss鲁片一区二区三区在线看| www.亚洲精品| 欧美色手机在线观看| 欧美一区二区三区在线看| 欧美大度的电影原声| 亚洲国产精品t66y| 亚洲欧美一区二区久久| 婷婷开心激情综合| 国产精品一区2区| 91捆绑美女网站| 欧美日韩高清一区二区三区| 欧美大片在线观看一区| 日本一区二区动态图| 亚洲一区二区欧美日韩| 日本v片在线高清不卡在线观看| 国产在线播放一区三区四| 北岛玲一区二区三区四区| 欧美日韩一级大片网址| 久久综合九色综合久久久精品综合| 国产精品午夜电影| 亚洲电影你懂得| 国产主播一区二区三区| 99久久99久久精品国产片果冻 | 91在线国内视频| 中文字幕中文字幕一区| 洋洋av久久久久久久一区| 综合av第一页| 伊人夜夜躁av伊人久久| 奇米一区二区三区av| 国产精品123区| 欧美日韩综合在线| 久久亚洲欧美国产精品乐播| 一区二区三区日韩欧美| 国产综合色视频| 欧美中文字幕亚洲一区二区va在线| 日韩精品一区在线观看| 亚洲欧美日韩国产成人精品影院| 日韩国产精品久久久| 99久久国产综合精品女不卡| 日韩一区二区三区视频在线 | 亚洲综合小说图片| 国产中文字幕一区| 在线精品视频免费播放| 国产日韩欧美亚洲| 天天免费综合色| 一本久久a久久精品亚洲| 精品女同一区二区| 性久久久久久久久| 99re亚洲国产精品| 国产亚洲自拍一区| 奇米影视在线99精品| 在线观看不卡视频| 国产精品丝袜一区| 久久99久久久久久久久久久| 91国偷自产一区二区三区观看| 久久精品夜色噜噜亚洲a∨| 日韩精品一区第一页| 91国产精品成人| 国产日韩欧美一区二区三区综合 | 国产一二三精品| 欧美色精品在线视频| 亚洲人精品午夜| www.久久精品| 国产欧美1区2区3区| 另类小说视频一区二区| 欧美日韩成人一区| 亚洲一二三四区不卡| 91视视频在线观看入口直接观看www| 久久综合九色欧美综合狠狠| 日韩vs国产vs欧美| 欧洲在线/亚洲| √…a在线天堂一区| 成人免费毛片app| 久久久99久久| 国产自产v一区二区三区c| 日韩电影一二三区| 欧美视频在线一区二区三区| 亚洲精品国产品国语在线app| 99久久精品一区二区| 中文字幕va一区二区三区| 国产a视频精品免费观看| 精品国产电影一区二区| 麻豆免费精品视频| 日韩视频一区二区三区在线播放| 爽爽淫人综合网网站| 欧美日韩国产天堂| 日本三级亚洲精品| 91精品国产麻豆国产自产在线| 亚洲成人动漫av| 在线91免费看| 日本亚洲一区二区| 日韩手机在线导航| 韩日欧美一区二区三区| 久久久久国色av免费看影院| 国产精品88888| 国产女人aaa级久久久级| 成人综合婷婷国产精品久久| 国产精品高潮久久久久无| 91亚洲永久精品| 亚洲伊人伊色伊影伊综合网 | 中文字幕一区二区三区不卡| 不卡电影一区二区三区| 亚洲精品少妇30p| 欧美日韩一区二区在线观看视频 | 亚洲国产精品久久久久秋霞影院| 欧美视频你懂的| 亚洲成年人影院| 欧美成人一区二区三区 | 欧美一区二区三区四区久久| 日本中文字幕不卡| 久久久久国产免费免费| 97久久精品人人做人人爽50路| 尤物av一区二区| 4438亚洲最大| 国产精品一级片在线观看| 1024国产精品| 欧美久久久久久蜜桃| 精品一区二区三区av| 国产精品天美传媒沈樵| 欧美午夜片在线观看| 卡一卡二国产精品 | 亚洲r级在线视频| 精品日韩一区二区| www.欧美色图| 免费在线看成人av| 国产精品乱人伦| 欧美日韩国产欧美日美国产精品| 韩国三级中文字幕hd久久精品| 中文字幕一区av| 欧美狂野另类xxxxoooo| 成人在线一区二区三区| 天天综合日日夜夜精品| 国产欧美一区二区在线观看| 欧洲国产伦久久久久久久| 精品午夜久久福利影院 | 亚洲一区二区在线观看视频| 日韩毛片在线免费观看| 亚洲天堂2014| 午夜欧美在线一二页| 国产精品综合av一区二区国产馆| 日本成人中文字幕在线视频| 麻豆高清免费国产一区| 国产美女久久久久| 91蜜桃网址入口| 7777精品伊人久久久大香线蕉超级流畅| 91丝袜美女网| 欧美精品一二三区| 中文字幕亚洲电影| 亚洲人123区| 久久www免费人成看片高清| 国产高清成人在线| 91麻豆国产自产在线观看| 日韩欧美国产综合在线一区二区三区| 亚洲手机成人高清视频| 亚洲成av人在线观看| 91福利社在线观看| 中文字幕亚洲成人| 亚洲国产视频一区二区| 国产在线精品一区二区夜色| 日本韩国一区二区三区视频| 国产精品美女久久久久av爽李琼| 欧洲激情一区二区| 成人av综合在线| 国模套图日韩精品一区二区 | 精品国产免费一区二区三区四区| 91久久国产综合久久| 不卡视频免费播放| 国产精品亚洲第一区在线暖暖韩国| 午夜激情久久久| 亚洲五码中文字幕| 日韩美女久久久| 欧美在线制服丝袜| 亚洲美女区一区| 国产91丝袜在线观看| 精品国产免费人成在线观看| 日本中文在线一区| 在线播放91灌醉迷j高跟美女 | 成人欧美一区二区三区小说 | 免费人成在线不卡| 亚洲一区二区偷拍精品| 亚洲三级电影网站| 国产精品白丝jk白祙喷水网站| 麻豆精品在线看| 麻豆精品蜜桃视频网站|