⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvopt.c

📁 unix v6 的c compiler 很老了
💻 C
字号:
int	nofloat;int	peekc;int	obuf[259];int	tabflg;int	labno	1;main(argc, argv)char **argv;{/*	A1 -> A	A2    B	A     O	B1    C	B2    D	BE    L	BF    P	C1    E	C2    F	F     G	H     H	R     I	R1    J	S     K	I     M	M     N		*	+1		S	+2		C	+4		1	+8	z  -> 4	c     10	a     14	e     20	n     63	*	+0100*/	auto c,snlflg,nlflg,t,smode,m,ssmode;	extern fin;	smode = nlflg = snlflg = ssmode = 0;	if (argc>1)		if ((fin = open(argv[1], 0)) < 0) {			putchar('?\n');			return;		}	obuf[0] = 1;	if (argc>2) 		if ((obuf[0] = creat(argv[2], 0666)) < 0) {			putchar('?\n');			return;		}loop:	c = getc();	if (c!='\n' && c!='\t') nlflg = 0;	if (ssmode!=0 && c!='%') {		ssmode = 0;		printf(".data\nL%d:<", labno++);	}	switch(c) {	case '\0':		printf(".text; 0\n");		fflush(obuf);		return;	case ':':		if (!smode)			printf("=.+2; 0"); else			putchar(':');		goto loop;	case 'A':		if ((c=getc())=='1' || c=='2') {			putchar(c+'A'-'1');			goto loop;		}		putchar('O');		peekc = c;		goto loop;	case 'B':		switch (getc()) {		case '1':			putchar('C');			goto loop;		case '2':			putchar('D');			goto loop;		case 'E':			putchar('L');			goto loop;		case 'F':			putchar('P');			goto loop;		}		putchar('?');		goto loop;	case 'C':		putchar(getc()+'E'-'1');		goto loop;	case 'F':		putchar('G');		goto subtre;	case 'R':		if ((c=getc()) == '1')		putchar('J'); else {			putchar('I');			peekc = c;		}		goto loop;	case 'H':		putchar('H');		goto subtre;	case 'I':		putchar('M');		goto loop;	case 'S':		putchar('K');subtre:		snlflg = 1;		t = 'A';l1:		switch (c=getc()) {		case '*':			t++;			goto l1;		case 'S':			t =+ 2;			goto l1;		case 'C':			t =+ 4;			goto l1;		case '1':			t =+ 8;			goto l1;		case '2':			t =+ 16;			goto l1;		}		peekc = c;		putchar(t);		goto loop;	case '#':		if(getc()=='1')			putchar('#'); else			putchar('"');		goto loop;	case '%':		if (smode)			printf(".text;");		if (ssmode==0) {			if ((peekc=getc())=='[') {				peekc = 0;				printf(".data;");				while((c=getc())!=']')					putchar(c);				getc();				printf(";.text;");				goto loop;			}		}loop1:		switch (c=getc()) {		case ' ':		case '\t':			goto loop1;		case 'a':			m = 16;			t = flag();			goto pf;		case ',':			putchar(';');			goto loop1;		case 'i':			m = 12;			t = flag();			goto pf;		case 'z':			m = 4;			t = flag();			goto pf;		case 'r':			m = 9;			t = flag();			goto pf;		case '1':			m = 5;			t = flag();			goto pf;		case 'c':			t = 0;			m = 8;			goto pf;		case 'e':			t = flag();			m = 20;			goto pf;		case 'n':			t = flag();			m = 63;pf:			if ((c=getc())=='*')				m =+ 0100; else				peekc = c;			printf(".byte %o,%o", m, t);			goto loop1;		case '[':			printf("L%d=", labno++);			while ((c=getc())!=']')				putchar(c);			ssmode = 0;			smode = 0;			goto loop;		case '\n':			printf("\nL%d\n", labno);			ssmode = 1;			nlflg = 1;			smode = 1;			goto loop;		}		putchar(c);		goto loop1;	case '\t':		if (nlflg) {			nlflg = 0;			goto loop;		}		if (smode) {			tabflg++;			goto loop;		}		putchar('\t');		goto loop;	case '\n':		if (!smode)  {			putchar('\n');			goto loop;		}		if (nlflg) {			nlflg = 0;			printf("\\0>\n.text\n");			smode = 0;			goto loop;		}		if (!snlflg)			printf("\\n");		snlflg = 0;		printf(">\n<");		nlflg = 1;		goto loop;	case 'X':	case 'Y':	case 'T':		snlflg++;	}	putchar(c);	goto loop;}getc() {	auto t, ifcnt;	ifcnt = 0;gc:	if (peekc) {		t = peekc;		peekc = 0;	} else		t = getchar();	if (t==0)		return(0);	if (t=='{') {		ifcnt++;		t = getchar();	}	if (t=='}') {		t = getc();		if (--ifcnt==0)			if (t=='\n')				t = getc();	}	if (ifcnt && nofloat)		goto gc;	return(t);}flag() {	register c, f;	f = 0;l1:	switch(c=getc()) {	case 'w':		f = 1;		goto l1;	case 'i':		f = 2;		goto l1;	case 'b':		f = 3;		goto l1;	case 'f':		f = 4;		goto l1;	case 'd':		f = 5;		goto l1;	case 's':		f = 6;		goto l1;	case 'l':		f = 8;		goto l1;	case 'p':		f =+ 16;		goto l1;	}	peekc = c;	return(f);}putchar(c){	if (tabflg) {		tabflg = 0;		printf(">;.byte %o;<", c+0200);	} else		putc(c, obuf);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -