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

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

?? swt.c

?? 這是一個(gè)同樣來自貝爾實(shí)驗(yàn)室的和UNIX有著淵源的操作系統(tǒng), 其簡(jiǎn)潔的設(shè)計(jì)和實(shí)現(xiàn)易于我們學(xué)習(xí)和理解
?? C
字號(hào):
#include "gc.h"voidswit1(C1 *q, int nc, long def, Node *n){	Node tn;		regalloc(&tn, &regnode, Z);	swit2(q, nc, def, n, &tn);	regfree(&tn);}voidswit2(C1 *q, int nc, long def, Node *n, Node *tn){	C1 *r;	int i;	Prog *sp;	if(nc < 5) {		for(i=0; i<nc; i++) {			if(sval(q->val)) {				gopcode(OEQ, n, Z, nodconst(q->val));			} else {				gopcode(OSUB, nodconst(q->val), n, tn);				gopcode(OEQ, tn, Z, nodconst(0));			}			patch(p, q->label);			q++;		}		gbranch(OGOTO);		patch(p, def);		return;	}	i = nc / 2;	r = q+i;	if(sval(r->val)) {		gopcode(OGT, n, Z, nodconst(r->val));		sp = p;	} else {		gopcode(OSUB, nodconst(r->val), n, tn);		gopcode(OGT, tn, Z, nodconst(0));		sp = p;	}	gbranch(OGOTO);	p->as = ABEQ;	patch(p, r->label);	swit2(q, i, def, n, tn);	patch(sp, pc);	swit2(r+1, nc-i-1, def, n, tn);}voidbitload(Node *b, Node *n1, Node *n2, Node *n3, Node *nn){	int sh;	long v;	Node *l;	/*	 * n1 gets adjusted/masked value	 * n2 gets address of cell	 * n3 gets contents of cell	 */	l = b->left;	if(n2 != Z) {		regalloc(n1, l, nn);		reglcgen(n2, l, Z);		regalloc(n3, l, Z);		gopcode(OAS, n2, Z, n3);		gopcode(OAS, n3, Z, n1);	} else {		regalloc(n1, l, nn);		cgen(l, n1);	}	if(b->type->shift == 0 && typeu[b->type->etype]) {		v = ~0 + (1L << b->type->nbits);		gopcode(OAND, nodconst(v), Z, n1);	} else {		sh = 32 - b->type->shift - b->type->nbits;		if(sh > 0)			gopcode(OASHL, nodconst(sh), Z, n1);		sh += b->type->shift;		if(sh > 0)			if(typeu[b->type->etype])				gopcode(OLSHR, nodconst(sh), Z, n1);			else				gopcode(OASHR, nodconst(sh), Z, n1);	}}voidbitstore(Node *b, Node *n1, Node *n2, Node *n3, Node *nn){	long v;	Node nod, *l;	int sh;	/*	 * n1 has adjusted/masked value	 * n2 has address of cell	 * n3 has contents of cell	 */	l = b->left;	regalloc(&nod, l, Z);	v = ~0 + (1L << b->type->nbits);	gopcode(OAND, nodconst(v), Z, n1);	gopcode(OAS, n1, Z, &nod);	if(nn != Z)		gopcode(OAS, n1, Z, nn);	sh = b->type->shift;	if(sh > 0)		gopcode(OASHL, nodconst(sh), Z, &nod);	v <<= sh;	gopcode(OAND, nodconst(~v), Z, n3);	gopcode(OOR, n3, Z, &nod);	gopcode(OAS, &nod, Z, n2);	regfree(&nod);	regfree(n1);	regfree(n2);	regfree(n3);}longoutstring(char *s, long n){	long r;	if(suppress)		return nstring;	r = nstring;	while(n) {		string[mnstring] = *s++;		mnstring++;		nstring++;		if(mnstring >= NSNAME) {			gpseudo(ADATA, symstring, nodconst(0L));			p->from.offset += nstring - NSNAME;			p->reg = NSNAME;			p->to.type = D_SCONST;			memmove(p->to.sval, string, NSNAME);			mnstring = 0;		}		n--;	}	return r;}intmulcon(Node *n, Node *nn){	Node *l, *r, nod1, nod2;	Multab *m;	long v;	int o;	char code[sizeof(m->code)+2], *p;	if(typefd[n->type->etype])		return 0;	l = n->left;	r = n->right;	if(l->op == OCONST) {		l = r;		r = n->left;	}	if(r->op != OCONST)		return 0;	v = convvtox(r->vconst, n->type->etype);	if(v != r->vconst) {		if(debug['M'])			print("%L multiply conv: %lld\n", n->lineno, r->vconst);		return 0;	}	m = mulcon0(n, v);	if(!m) {		if(debug['M'])			print("%L multiply table: %lld\n", n->lineno, r->vconst);		return 0;	}	memmove(code, m->code, sizeof(m->code));	code[sizeof(m->code)] = 0;	p = code;	if(p[1] == 'i')		p += 2;	regalloc(&nod1, n, nn);	cgen(l, &nod1);	if(v < 0)		gopcode(ONEG, &nod1, Z, &nod1);	regalloc(&nod2, n, Z);loop:	switch(*p) {	case 0:		regfree(&nod2);		gopcode(OAS, &nod1, Z, nn);		regfree(&nod1);		return 1;	case '+':		o = OADD;		goto addsub;	case '-':		o = OSUB;	addsub:	/* number is r,n,l */		v = p[1] - '0';		r = &nod1;		if(v&4)			r = &nod2;		n = &nod1;		if(v&2)			n = &nod2;		l = &nod1;		if(v&1)			l = &nod2;		gopcode(o, l, n, r);		break;	default: /* op is shiftcount, number is r,l */		v = p[1] - '0';		r = &nod1;		if(v&2)			r = &nod2;		l = &nod1;		if(v&1)			l = &nod2;		v = *p - 'a';		if(v < 0 || v >= 32) {			diag(n, "mulcon unknown op: %c%c", p[0], p[1]);			break;		}		gopcode(OASHL, nodconst(v), l, r);		break;	}	p += 2;	goto loop;}voidsextern(Sym *s, Node *a, long o, long w){	long e, lw;	for(e=0; e<w; e+=NSNAME) {		lw = NSNAME;		if(w-e < lw)			lw = w-e;		gpseudo(ADATA, s, nodconst(0));		p->from.offset += o+e;		p->reg = lw;		p->to.type = D_SCONST;		memmove(p->to.sval, a->cstring+e, lw);	}}voidgextern(Sym *s, Node *a, long o, long w){	if(a->op == OCONST && typev[a->type->etype]) {		if(align(0, types[TCHAR], Aarg1))	/* isbigendian */			gpseudo(ADATA, s, nod32const(a->vconst>>32));		else			gpseudo(ADATA, s, nod32const(a->vconst));		p->from.offset += o;		p->reg = 4;		if(align(0, types[TCHAR], Aarg1))	/* isbigendian */			gpseudo(ADATA, s, nod32const(a->vconst));		else			gpseudo(ADATA, s, nod32const(a->vconst>>32));		p->from.offset += o + 4;		p->reg = 4;		return;	}	gpseudo(ADATA, s, a);	p->from.offset += o;	p->reg = w;	if(p->to.type == D_OREG)		p->to.type = D_CONST;}void	zname(Biobuf*, Sym*, int);char*	zaddr(char*, Adr*, int);void	zwrite(Biobuf*, Prog*, int, int);void	outhist(Biobuf*);voidoutcode(void){	struct { Sym *sym; short type; } h[NSYM];	Prog *p;	Sym *s;	int sf, st, t, sym;	if(debug['S']) {		for(p = firstp; p != P; p = p->link)			if(p->as != ADATA && p->as != AGLOBL)				pc--;		for(p = firstp; p != P; p = p->link) {			print("%P\n", p);			if(p->as != ADATA && p->as != AGLOBL)				pc++;		}	}	outhist(&outbuf);	for(sym=0; sym<NSYM; sym++) {		h[sym].sym = S;		h[sym].type = 0;	}	sym = 1;	for(p = firstp; p != P; p = p->link) {	jackpot:		sf = 0;		s = p->from.sym;		while(s != S) {			sf = s->sym;			if(sf < 0 || sf >= NSYM)				sf = 0;			t = p->from.name;			if(h[sf].type == t)			if(h[sf].sym == s)				break;			s->sym = sym;			zname(&outbuf, s, t);			h[sym].sym = s;			h[sym].type = t;			sf = sym;			sym++;			if(sym >= NSYM)				sym = 1;			break;		}		st = 0;		s = p->to.sym;		while(s != S) {			st = s->sym;			if(st < 0 || st >= NSYM)				st = 0;			t = p->to.name;			if(h[st].type == t)			if(h[st].sym == s)				break;			s->sym = sym;			zname(&outbuf, s, t);			h[sym].sym = s;			h[sym].type = t;			st = sym;			sym++;			if(sym >= NSYM)				sym = 1;			if(st == sf)				goto jackpot;			break;		}		zwrite(&outbuf, p, sf, st);	}	firstp = P;	lastp = P;}voidzwrite(Biobuf *b, Prog *p, int sf, int st){	char bf[100], *bp;	long l;	bf[0] = p->as;	bf[1] = p->reg;	l = p->lineno;	bf[2] = l;	bf[3] = l>>8;	bf[4] = l>>16;	bf[5] = l>>24;	bp = zaddr(bf+6, &p->from, sf);	bp = zaddr(bp, &p->to, st);	Bwrite(b, bf, bp-bf);}voidouthist(Biobuf *b){	Hist *h;	char *p, *q, *op, c;	Prog pg;	int n;	pg = zprog;	pg.as = AHISTORY;	c = pathchar();	for(h = hist; h != H; h = h->link) {		p = h->name;		op = 0;		/* on windows skip drive specifier in pathname */		if(systemtype(Windows) && p && p[1] == ':'){			p += 2;			c = *p;		}		if(p && p[0] != c && h->offset == 0 && pathname){			/* on windows skip drive specifier in pathname */			if(systemtype(Windows) && pathname[1] == ':') {				op = p;				p = pathname+2;				c = *p;			} else if(pathname[0] == c){				op = p;				p = pathname;			}		}		while(p) {			q = utfrune(p, c);			if(q) {				n = q-p;				if(n == 0){					n = 1;	/* leading "/" */					*p = '/';	/* don't emit "\" on windows */				}				q++;			} else {				n = strlen(p);				q = 0;			}			if(n) {				Bputc(b, ANAME);				Bputc(b, D_FILE);				Bputc(b, 1);				Bputc(b, '<');				Bwrite(b, p, n);				Bputc(b, 0);			}			p = q;			if(p == 0 && op) {				p = op;				op = 0;			}		}		pg.lineno = h->line;		pg.to.type = zprog.to.type;		pg.to.offset = h->offset;		if(h->offset)			pg.to.type = D_CONST;		zwrite(b, &pg, 0, 0);	}}voidzname(Biobuf *b, Sym *s, int t){	char *n, bf[7];	ulong sig;	n = s->name;	if(debug['T'] && t == D_EXTERN && s->sig != SIGDONE && s->type != types[TENUM] && s != symrathole){		sig = sign(s);		bf[0] = ASIGNAME;		bf[1] = sig;		bf[2] = sig>>8;		bf[3] = sig>>16;		bf[4] = sig>>24;		bf[5] = t;		bf[6] = s->sym;		Bwrite(b, bf, 7);		s->sig = SIGDONE;	}	else{		bf[0] = ANAME;		bf[1] = t;	/* type */		bf[2] = s->sym;	/* sym */		Bwrite(b, bf, 3);	}	Bwrite(b, n, strlen(n)+1);}char*zaddr(char *bp, Adr *a, int s){	long l;	Ieee e;	bp[0] = a->type;	bp[1] = a->reg;	bp[2] = s;	bp[3] = a->name;	bp += 4;	switch(a->type) {	default:		diag(Z, "unknown type %d in zaddr", a->type);	case D_NONE:	case D_REG:	case D_FREG:	case D_CREG:		break;	case D_OREG:	case D_CONST:	case D_BRANCH:		l = a->offset;		bp[0] = l;		bp[1] = l>>8;		bp[2] = l>>16;		bp[3] = l>>24;		bp += 4;		break;	case D_SCONST:		memmove(bp, a->sval, NSNAME);		bp += NSNAME;		break;	case D_FCONST:		ieeedtod(&e, a->dval);		l = e.l;		bp[0] = l;		bp[1] = l>>8;		bp[2] = l>>16;		bp[3] = l>>24;		bp += 4;		l = e.h;		bp[0] = l;		bp[1] = l>>8;		bp[2] = l>>16;		bp[3] = l>>24;		bp += 4;		break;	}	return bp;}longalign(long i, Type *t, int op){	long o;	Type *v;	int w;	o = i;	w = 1;	switch(op) {	default:		diag(Z, "unknown align opcode %d", op);		break;	case Asu2:	/* padding at end of a struct */		w = SZ_LONG;		if(packflg)			w = packflg;		break;	case Ael1:	/* initial allign of struct element */		for(v=t; v->etype==TARRAY; v=v->link)			;		w = ewidth[v->etype];		if(w <= 0 || w >= SZ_LONG)			w = SZ_LONG;		if(packflg)			w = packflg;		break;	case Ael2:	/* width of a struct element */		o += t->width;		break;	case Aarg0:	/* initial passbyptr argument in arg list */		if(typesuv[t->etype]) {			o = align(o, types[TIND], Aarg1);			o = align(o, types[TIND], Aarg2);		}		break;	case Aarg1:	/* initial allign of parameter */		w = ewidth[t->etype];		if(w <= 0 || w >= SZ_LONG) {			w = SZ_LONG;			break;		}		o += SZ_LONG - w;	/* big endian adjustment */		w = 1;		break;	case Aarg2:	/* width of a parameter */		o += t->width;		w = SZ_LONG;		break;	case Aaut3:	/* total allign of automatic */		o = align(o, t, Ael1);		o = align(o, t, Ael2);		break;	}	o = round(o, w);	if(debug['A'])		print("align %s %ld %T = %ld\n", bnames[op], i, t, o);	return o;}longmaxround(long max, long v){	v += SZ_LONG-1;	if(v > max)		max = round(v, SZ_LONG);	return max;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品72免费观看| 国产一区二区不卡| 日本一区二区综合亚洲| 色老头久久综合| 国产在线一区二区| 亚洲第一二三四区| 国产精品免费视频观看| 日韩一区二区三区视频在线| 91丨porny丨在线| 国产尤物一区二区| 视频在线观看国产精品| 中文字幕一区二区三区视频| 日韩一区二区高清| 欧美写真视频网站| 91丨九色丨蝌蚪丨老版| 国产老妇另类xxxxx| 日韩国产精品91| 蜜臀久久久99精品久久久久久| 中文字幕一区二区三区蜜月| 欧美成人精品福利| 91麻豆精品国产91久久久久久| a美女胸又www黄视频久久| 激情六月婷婷久久| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久精品72免费观看| 亚洲一区二区免费视频| 亚洲人成人一区二区在线观看| 久久久久成人黄色影片| 日韩精品影音先锋| 日韩一级黄色大片| 日韩一二在线观看| 91精品国产免费| 欧美浪妇xxxx高跟鞋交| 欧美日韩一卡二卡| 欧美日韩国产a| 欧美日韩国产大片| 欧美剧情电影在线观看完整版免费励志电影 | 在线成人小视频| 欧美三区在线视频| 欧美日本一道本在线视频| 欧美性色综合网| 欧美午夜电影一区| 欧美在线啊v一区| 欧美午夜影院一区| 欧美日韩在线精品一区二区三区激情 | 亚洲男帅同性gay1069| 综合欧美亚洲日本| 亚洲视频一区在线观看| 亚洲私人影院在线观看| 亚洲美女偷拍久久| 一区二区三区成人| 婷婷六月综合亚洲| 蜜臀av一级做a爰片久久| 美腿丝袜亚洲色图| 国产黑丝在线一区二区三区| 粗大黑人巨茎大战欧美成人| 成人久久久精品乱码一区二区三区 | 欧美年轻男男videosbes| 欧美精品xxxxbbbb| 日韩精品一区二| 久久麻豆一区二区| 亚洲天堂av老司机| 亚洲大片在线观看| 极品少妇一区二区三区精品视频| 国产专区欧美精品| 不卡的av电影| 欧美日韩国产经典色站一区二区三区| 欧美一区二区三区免费视频| 久久久99久久| 亚洲女同女同女同女同女同69| 亚洲va欧美va人人爽午夜| 毛片av一区二区| 成人蜜臀av电影| 欧美日韩不卡视频| 久久久久久久久久久久久夜| 亚洲品质自拍视频网站| 日韩高清不卡一区二区| 国产精品一卡二卡在线观看| 91小视频免费观看| 欧美一区二区三区白人| 中文字幕免费一区| 亚洲高清不卡在线观看| 国产精品一卡二卡在线观看| 在线影院国内精品| 久久午夜电影网| 一区二区欧美视频| 经典三级视频一区| 欧亚一区二区三区| 久久久www免费人成精品| 亚洲综合免费观看高清在线观看| 六月丁香婷婷色狠狠久久| 99久久精品国产网站| 91精品国产综合久久蜜臀| 亚洲欧洲三级电影| 久久精品久久久精品美女| 色素色在线综合| 国产性色一区二区| 日韩在线一区二区| 91麻豆精品秘密| 国产亚洲一本大道中文在线| 亚洲3atv精品一区二区三区| 成人永久看片免费视频天堂| 在线播放亚洲一区| 国产综合一区二区| 欧美久久久一区| 亚洲精品日日夜夜| 成人污视频在线观看| 精品久久久久久久久久久久久久久久久 | 99re66热这里只有精品3直播 | a美女胸又www黄视频久久| 日韩精品一区在线| 亚洲一区二区三区中文字幕| 成人精品小蝌蚪| 欧美不卡一区二区| 首页国产欧美日韩丝袜| 色老综合老女人久久久| 国产精品理论在线观看| 久草这里只有精品视频| 337p亚洲精品色噜噜噜| 亚洲午夜精品17c| 一本色道**综合亚洲精品蜜桃冫 | 一区二区三区欧美久久| 岛国精品在线播放| 26uuu另类欧美| 久草这里只有精品视频| 欧美一级高清片| 天天射综合影视| 欧美无人高清视频在线观看| 亚洲丝袜另类动漫二区| a4yy欧美一区二区三区| 欧美国产精品一区| 福利视频网站一区二区三区| 久久男人中文字幕资源站| 久久99久久99小草精品免视看| 欧美欧美欧美欧美首页| 视频一区在线视频| 91精品在线一区二区| 91视视频在线直接观看在线看网页在线看 | 中文欧美字幕免费| 岛国精品一区二区| 国产精品久久久久久亚洲毛片| 粗大黑人巨茎大战欧美成人| 中文字幕av一区二区三区高 | 欧美私模裸体表演在线观看| 亚洲影院免费观看| 欧美老女人在线| 久久精品久久99精品久久| 精品国产乱码久久久久久蜜臀| 久久99精品久久久久| 久久久久久久综合色一本| 国产白丝网站精品污在线入口| 亚洲国产高清不卡| 99久久精品国产网站| 一区二区三区四区激情| 欧美日韩高清一区| 精品在线免费观看| 久久精品视频一区二区三区| 成人福利视频在线| 亚洲一区在线观看网站| 91精品国产综合久久久久| 国产综合成人久久大片91| 国产精品午夜春色av| 欧美影片第一页| 久久成人麻豆午夜电影| 欧美激情一区二区三区四区| 99久久99久久精品免费观看| 一区二区三区久久| 日韩西西人体444www| 国产成人精品免费在线| 亚洲免费色视频| 日韩欧美国产一区二区在线播放| 国产91精品在线观看| 亚洲自拍偷拍麻豆| 久久综合色之久久综合| 91年精品国产| 人人精品人人爱| 1024亚洲合集| 日韩精品中文字幕在线不卡尤物| 国产99一区视频免费| 亚洲二区在线观看| 久久九九影视网| 欧美手机在线视频| 国产成人自拍网| 亚洲高清免费视频| 欧美激情在线观看视频免费| 欧美亚洲高清一区| 懂色中文一区二区在线播放| 亚洲一区二区精品久久av| 久久精品亚洲麻豆av一区二区 | 久久国产精品一区二区| 国产精品国产馆在线真实露脸| 欧美一区二区三区精品| av午夜精品一区二区三区| 日日骚欧美日韩| 亚洲三级视频在线观看| 精品欧美乱码久久久久久1区2区| 日本精品裸体写真集在线观看| 国产在线国偷精品产拍免费yy| 亚洲高清久久久| 综合欧美一区二区三区|