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

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

?? order.c

?? <B>Digital的Unix操作系統VAX 4.2源碼</B>
?? C
字號:
#ifndef lintstatic	char	*sccsid = "@(#)order.c	4.1	(ULTRIX)	7/3/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1984 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//************************************************************************		Modification History**	Jon Reeves, 03-May-1989 for Sid Maxwell* 003	Reduce complex expressions in procedure calls to avoid*	"stuck starg" messages.  Code from BSD 4.3.* *	Lu Anne Van de Pas, Mar-2,1986* vdp002 - added support for doing f floating arithmetic in f float *	when the fflag is set. **	Rich Phillips, 7-11-84* RAP001 - Fix bug where register arrays are accessed with an illegal*	   register number because someone changed an oreg to a reg. The*	   problem occurred when structures of length 4 were passed as*	   parameters. Problem showed up in tshape, fixed in genargs.*************************************************************************/# include "mfile2"int maxargs = { -1 };extern int fflag;				/*vdp002*/ stoasg( p, o ) register NODE *p; {	/* should the assignment op p be stored,	   given that it lies as the right operand of o	   (or the left, if o==UNARY MUL) *//*	if( p->in.op == INCR || p->in.op == DECR ) return;	if( o==UNARY MUL && p->in.left->in.op == REG && !isbreg(p->in.left->tn.rval) ) SETSTO(p,INAREG); */	}deltest( p ) register NODE *p; {	/* should we delay the INCR or DECR operation p */	p = p->in.left;	return( p->in.op == REG || p->in.op == NAME || p->in.op == OREG );	}autoincr( p ) NODE *p; {	register NODE *q = p->in.left, *r;	if( q->in.op == INCR && (r=q->in.left)->in.op == REG &&	    ISPTR(q->in.type) && p->in.type == DECREF(q->in.type) &&	    tlen(p) == q->in.right->tn.lval ) return(1);	return(0);	}mkadrs(p) register NODE *p; {	register o;	o = p->in.op;	if( asgop(o) ){		if( p->in.left->in.su >= p->in.right->in.su ){			if( p->in.left->in.op == UNARY MUL ){				SETSTO( p->in.left->in.left, INTEMP );				}			else if( p->in.left->in.op == FLD && p->in.left->in.left->in.op == UNARY MUL ){				SETSTO( p->in.left->in.left->in.left, INTEMP );				}			else { /* should be only structure assignment */				SETSTO( p->in.left, INTEMP );				}			}		else SETSTO( p->in.right, INTEMP );		}	else {		if( p->in.left->in.su > p->in.right->in.su ){			SETSTO( p->in.left, INTEMP );			}		else {			SETSTO( p->in.right, INTEMP );			}		}	}notoff( t, r, off, cp) CONSZ off; char *cp; {	/* is it legal to make an OREG or NAME entry which has an	/* offset of off, (from a register of r), if the	/* resulting thing had type t *//*	if( r == R0 ) return( 1 );  /* NO */	return(0);  /* YES */	}# define max(x,y) ((x)<(y)?(y):(x))sucomp( p ) register NODE *p; {	/* set the su field in the node to the sethi-ullman	   number, or local equivalent */	register o, ty, sul, sur, r;	o = p->in.op;	ty = optype( o );	p->in.su = szty( p->in.type );   /* 2 for float or double, else 1 */;	if( ty == LTYPE ){		if( o == OREG ){			r = p->tn.rval;			/* oreg cost is (worst case) 1 + number of temp registers used */			if( R2TEST(r) ){				if( R2UPK1(r)!=100 && istreg(R2UPK1(r)) ) ++p->in.su;				if( istreg(R2UPK2(r)) ) ++p->in.su;				}			else {				if( istreg( r ) ) ++p->in.su;				}			}		if( p->in.su == szty(p->in.type) &&		   (p->in.op!=REG || !istreg(p->tn.rval)) &&		   (p->in.type==INT || p->in.type==UNSIGNED || 		   (fflag && p->in.type==FLOAT) ||	  /*vdp002*/		   p->in.type==DOUBLE) )			p->in.su = 0;		return;		}	else if( ty == UTYPE ){		switch( o ) {		case UNARY CALL:		case UNARY STCALL:			p->in.su = fregs;  /* all regs needed */			return;		default:			p->in.su =  p->in.left->in.su + (szty( p->in.type ) > 1 ? 2 : 0) ;			return;			}		}	/* If rhs needs n, lhs needs m, regular su computation */	sul = p->in.left->in.su;	sur = p->in.right->in.su;	if( o == ASSIGN ){		/* computed by doing right, then left (if not in mem), then doing it */		p->in.su = max(sur,sul+1);		return;		}	if( o == CALL || o == STCALL ){		/* in effect, takes all free registers */		p->in.su = fregs;		return;		}	if( o == STASG ){		/* right, then left */		p->in.su = max( max( 1+sul, sur), fregs );		return;		}	if( asgop(o) ){		/* computed by doing right, doing left address, doing left, op, and store */		p->in.su = max(sur,sul+2);/*		if( o==ASG MUL || o==ASG DIV || o==ASG MOD) p->in.su = max(p->in.su,fregs); */		return;		}	switch( o ){	case ANDAND:	case OROR:	case QUEST:	case COLON:	case COMOP:		p->in.su = max( max(sul,sur), 1);		return;	case PLUS:	case OR:	case ER:		/* commutative ops; put harder on left */		if( p->in.right->in.su > p->in.left->in.su && !istnode(p->in.left) ){			register NODE *temp;			temp = p->in.left;			p->in.left = p->in.right;			p->in.right = temp;			}		break;		}	/* binary op, computed by left, then right, then do op */	p->in.su = max(sul,szty(p->in.right->in.type)+sur);/*	if( o==MUL||o==DIV||o==MOD) p->in.su = max(p->in.su,fregs); */	}int radebug = 0;rallo( p, down ) NODE *p; {	/* do register allocation */	register o, type, down1, down2, ty;	if( radebug ) printf( "rallo( %o, %d )\n", p, down );	down2 = NOPREF;	p->in.rall = down;	down1 = ( down &= ~MUSTDO );	ty = optype( o = p->in.op );	type = p->in.type;	if( type == DOUBLE || type == FLOAT ){		if( o == FORCE ) down1 = R0|MUSTDO;		}	else switch( o ) {	case ASSIGN:			down1 = NOPREF;		down2 = down;		break;/*	case MUL:	case DIV:	case MOD:		down1 = R3|MUSTDO;		down2 = R5|MUSTDO;		break;	case ASG MUL:	case ASG DIV:	case ASG MOD:		p->in.left->in.rall = down1 = R3|MUSTDO;		if( p->in.left->in.op == UNARY MUL ){			rallo( p->in.left->in.left, R4|MUSTDO );			}		else if( p->in.left->in.op == FLD  && p->in.left->in.left->in.op == UNARY MUL ){			rallo( p->in.left->in.left->in.left, R4|MUSTDO );			}		else rallo( p->in.left, R3|MUSTDO );		rallo( p->in.right, R5|MUSTDO );		return; */	case CALL:	case STASG:	case EQ:	case NE:	case GT:	case GE:	case LT:	case LE:	case NOT:	case ANDAND:	case OROR:		down1 = NOPREF;		break;	case FORCE:			down1 = R0|MUSTDO;		break;		}	if( ty != LTYPE ) rallo( p->in.left, down1 );	if( ty == BITYPE ) rallo( p->in.right, down2 );	}offstar( p ) register NODE *p; {	if( p->in.op == PLUS ) {		if( p->in.left->in.su == fregs ) {			order( p->in.left, INTAREG|INAREG );			return;		} else if( p->in.right->in.su == fregs ) {			order( p->in.right, INTAREG|INAREG );			return;		}		if( p->in.left->in.op==LS && 		  (p->in.left->in.left->in.op!=REG || tlen(p->in.left->in.left)!=sizeof(int) ) ) {			order( p->in.left->in.left, INTAREG|INAREG );			return;		}		if( p->in.right->in.op==LS &&		  (p->in.right->in.left->in.op!=REG || tlen(p->in.right->in.left)!=sizeof(int) ) ) {			order( p->in.right->in.left, INTAREG|INAREG );			return;		}		if( p->in.type == (PTR|CHAR) || p->in.type == (PTR|UCHAR) ) {			if( p->in.left->in.op!=REG || tlen(p->in.left)!=sizeof(int) ) {				order( p->in.left, INTAREG|INAREG );				return;			}			else if( p->in.right->in.op!=REG || tlen(p->in.right)!=sizeof(int) ) {				order(p->in.right, INTAREG|INAREG);				return;			}		}	}	if( p->in.op == PLUS || p->in.op == MINUS ){		if( p->in.right->in.op == ICON ){			p = p->in.left;			order( p , INTAREG|INAREG);			return;			}		}	if( p->in.op == UNARY MUL && !canaddr(p) ) {		offstar( p->in.left );		return;	}	order( p, INTAREG|INAREG );	}setincr( p ) register NODE *p; {	p = p->in.left;	if( p->in.op == UNARY MUL ){		offstar( p );		return( 1 );		}	return( 0 );	}setbin( p ) register NODE *p; {	register ro, rt;	rt = p->in.right->in.type;	ro = p->in.right->in.op;	if( canaddr( p->in.left ) && !canaddr( p->in.right ) ) { /* address rhs */		if( ro == UNARY MUL ) {			offstar( p->in.right->in.left );			return(1);		} else {			order( p->in.right, INAREG|INTAREG|SOREG );			return(1);		}	}	if( !istnode( p->in.left) ) { /* try putting LHS into a reg *//*		order( p->in.left, logop(p->in.op)?(INAREG|INBREG|INTAREG|INTBREG|SOREG):(INTAREG|INTBREG|SOREG) );*/		order( p->in.left, INAREG|INTAREG|INBREG|INTBREG|SOREG );		return(1);		}	else if( ro == UNARY MUL && rt != CHAR && rt != UCHAR ){		offstar( p->in.right->in.left );		return(1);		}	else if( rt == CHAR || rt == UCHAR || rt == SHORT || rt == USHORT || (ro != REG &&			ro != NAME && ro != OREG && ro != ICON ) ){		order( p->in.right, INAREG|INBREG );		return(1);		}/*	else if( logop(p->in.op) && rt==USHORT ){  /* must get rhs into register *//*		order( p->in.right, INAREG );		return( 1 );		} */	return(0);	}setstr( p ) register NODE *p; { /* structure assignment */	if( p->in.right->in.op != REG ){		order( p->in.right, INTAREG );		return(1);		}	p = p->in.left;	if( p->in.op != NAME && p->in.op != OREG ){		if( p->in.op != UNARY MUL ) cerror( "bad setstr" );		order( p->in.left, INTAREG );		return( 1 );		}	return( 0 );	}setasg( p ) register NODE *p; {	/* setup for assignment operator */	if( !canaddr(p->in.right) ) {		if( p->in.right->in.op == UNARY MUL )			offstar(p->in.right->in.left);		else			order( p->in.right, INAREG|INBREG|SOREG );		return(1);		}	if( p->in.left->in.op == UNARY MUL ) {		offstar( p->in.left->in.left );		return(1);		}	if( p->in.left->in.op == FLD && p->in.left->in.left->in.op == UNARY MUL ){		offstar( p->in.left->in.left->in.left );		return(1);		}/* FLD patch */	if( p->in.left->in.op == FLD && !(p->in.right->in.type==INT || p->in.right->in.type==UNSIGNED)) {		order( p->in.right, INAREG);		return(1);		}/* end of FLD patch */	return(0);	}setasop( p ) register NODE *p; {	/* setup for =ops */	register rt, ro;	rt = p->in.right->in.type;	ro = p->in.right->in.op;	if( ro == UNARY MUL && rt != CHAR ){		offstar( p->in.right->in.left );		return(1);		}	if( ( rt == CHAR || rt == SHORT || rt == UCHAR || rt == USHORT ||	    ( ro != REG && ro != ICON && ro != NAME && ro != OREG ) ) ){		order( p->in.right, INAREG|INBREG );		return(1);		}/*	if( (p->in.op == ASG LS || p->in.op == ASG RS) && ro != ICON && ro != REG ){		order( p->in.right, INAREG );		return(1);		} */	p = p->in.left;	if( p->in.op == FLD ) p = p->in.left;	switch( p->in.op ){	case REG:	case ICON:	case NAME:	case OREG:		return(0);	case UNARY MUL:		if( p->in.left->in.op==OREG )			return(0);		else			offstar( p->in.left );		return(1);		}	cerror( "illegal setasop" );	}int crslab = 9999;  /* Honeywell */getlab(){	return( crslab-- );	}deflab( l ){	printf( "L%d:\n", l );	}genargs( p, ptemp ) register NODE *p, *ptemp; {	register NODE *pasg;	register align;	register size;	register TWORD type;	int count;	/* generate code for the arguments */	/*  first, do the arguments on the right */	while( p->in.op == CM ){		genargs( p->in.right, ptemp );		p->in.op = FREE;		p = p->in.left;		}	if( p->in.op == STARG ){ /* structure valued argument */		size = p->stn.stsize;		align = p->stn.stalign;		if( p->in.left->in.op == ICON ){			p->in.op = FREE;			p= p->in.left;			}		else {			/* make it look beautiful... */			p->in.op = UNARY MUL;			/*RAP001 (first of a couple for this fix)				Change the type field so indexing will be				used where possible, otherwise tlen, called				from oreg2 never knows the true length. This				improves the code a little. The next change				avoids the out of bounds reference in tshape.			*/			switch (size){			case 1:				p->in.type =  CHAR;				break;			case 2:				p->in.type = SHORT;				break;			case 4:				p->in.type = LONG;				break;			}				canon( p );  /* turn it into an oreg */			for( count = 0; p->in.op != OREG && count < 10; ++count ){				offstar( p->in.left );				canon( p );				}			if( p->in.op != OREG ) cerror( "stuck starg" );			}		/*RAP001			Don't go through complicated structure passing if what's			being passed is 1,2, or 4 bytes long. Better code will			be used for these cases if we go to ordinary. 			If we don't, when the length is 4, the oreg will use			indexing, which will cause an out of bounds reference			to the register arrays in tshape later because the 			oreg would be changed to a reg for some reason.		*/		if ((size == 1 || size == 2 || size == 4 ) && p->in.op == OREG )			goto ordinary; 		ptemp->tn.lval = 0;	/* all moves to (sp) */		pasg = talloc();		pasg->in.op = STASG;		pasg->stn.stsize = size;		pasg->stn.stalign = align;		pasg->in.right = p;		pasg->in.left = tcopy( ptemp );		/* the following line is done only with the knowledge		that it will be undone by the STASG node, with the		offset (lval) field retained */		if( p->in.op == OREG ) p->in.op = REG;  /* only for temporaries */ 		order( pasg, FORARG );		ptemp->tn.lval += size;		return;		}	/* ordinary case */ordinary:	/* label added in RAP001 change */	order( p, FORARG );	}argsize( p ) register NODE *p; {	register t;	t = 0;	if( p->in.op == CM ){		t = argsize( p->in.left );		p = p->in.right;		}	if( p->in.type == DOUBLE || p->in.type == FLOAT ){		SETOFF( t, 4 );		return( t+8 );		}	else if( p->in.op == STARG ){ 		SETOFF( t, 4 );  /* alignment */ 		return( t + ((p->stn.stsize+3)/4)*4 );  /* size */		}	else {		SETOFF( t, 4 );		return( t+4 );		}	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
捆绑调教一区二区三区| 韩国精品久久久| 欧美精品一区二区三区视频| 成人黄动漫网站免费app| 天天影视色香欲综合网老头| 国产欧美日韩另类视频免费观看| 欧美性xxxxxx少妇| 高清不卡一区二区在线| 日韩高清一区在线| 亚洲欧美另类图片小说| 国产亚洲一本大道中文在线| 欧美挠脚心视频网站| 91理论电影在线观看| 激情综合色播激情啊| 日韩av中文字幕一区二区三区| 中文字幕一区二区三区不卡| 欧美精品一区二区三区视频| 欧美一区二区三区视频在线观看| 色老汉av一区二区三区| 成人激情免费视频| 九色综合狠狠综合久久| 日本午夜精品一区二区三区电影| 亚洲第一狼人社区| 亚洲免费观看高清完整版在线观看| 久久久国产一区二区三区四区小说 | 成人动漫在线一区| 国产麻豆成人精品| 精品一区二区在线观看| 麻豆精品一区二区| 日韩高清一区二区| 奇米888四色在线精品| 亚洲成av人片一区二区梦乃| 亚洲自拍都市欧美小说| 亚洲欧美日韩国产综合在线| 成人免费一区二区三区在线观看| 欧美极品xxx| 日本一区二区视频在线观看| 国产欧美一区二区精品婷婷| 久久久综合视频| 久久久不卡网国产精品一区| 精品91自产拍在线观看一区| 欧美精品一区二区久久婷婷| 2020国产精品| 国产欧美精品国产国产专区| 中文字幕+乱码+中文字幕一区| 国产日韩av一区| 中文字幕永久在线不卡| 中文字幕亚洲一区二区va在线| 国产精品成人免费精品自在线观看 | 欧美日韩国产综合一区二区三区| 欧美性猛交xxxxxxxx| 欧美日韩亚洲高清一区二区| 欧美精品成人一区二区三区四区| 6080午夜不卡| 欧美电影免费观看高清完整版在 | 国产拍欧美日韩视频二区| 国产精品五月天| 亚洲天堂a在线| 亚洲1区2区3区视频| 免费观看久久久4p| 粉嫩蜜臀av国产精品网站| 97se亚洲国产综合自在线 | 国产清纯美女被跳蛋高潮一区二区久久w | 正在播放一区二区| 精品国产一区久久| 国产精品麻豆视频| 亚洲午夜视频在线观看| 蜜桃av一区二区三区电影| 国产精品一区二区三区99| 成人av电影免费在线播放| 色94色欧美sute亚洲13| 欧美一区二区性放荡片| 久久新电视剧免费观看| 综合中文字幕亚洲| 日韩va欧美va亚洲va久久| 国产不卡视频在线播放| 在线观看国产一区二区| 制服丝袜日韩国产| 中文字幕乱码亚洲精品一区| 亚洲电影第三页| 国产精品88av| 欧美日本一区二区三区| 国产欧美日韩三区| 日韩电影在线看| 成人aaaa免费全部观看| 717成人午夜免费福利电影| 国产精品乱码久久久久久| 午夜精品一区二区三区免费视频| 国产激情一区二区三区四区| 欧美主播一区二区三区| 久久先锋影音av鲁色资源| 亚洲资源在线观看| 成人黄色免费短视频| 91精品国产美女浴室洗澡无遮挡| 国产精品美女久久久久久久 | 午夜视频久久久久久| 国产传媒一区在线| 欧美精品久久久久久久多人混战 | 久久精品久久综合| 91麻豆免费观看| 国产日韩欧美激情| 视频在线在亚洲| 91亚洲永久精品| 久久久久久久一区| 日本三级亚洲精品| 欧美亚洲国产一卡| 国产精品成人一区二区三区夜夜夜| 久久66热re国产| 欧美一区二区三区日韩| 亚洲综合清纯丝袜自拍| 成人黄色软件下载| 久久精品男人天堂av| 蜜臀久久99精品久久久画质超高清| 欧美性一二三区| 亚洲少妇屁股交4| av网站一区二区三区| 久久免费视频一区| 精品一二三四区| 欧美一级在线视频| 亚洲国产精品影院| 欧美视频一区二区三区在线观看| 亚洲欧洲精品天堂一级| 成人三级伦理片| 国产三级三级三级精品8ⅰ区| 免费成人在线播放| 欧美日韩国产中文| 五月综合激情网| 91高清在线观看| 尤物av一区二区| 色狠狠av一区二区三区| 中文字幕一区二区三区精华液| 成人黄色a**站在线观看| 国产精品无圣光一区二区| 国产成人精品网址| 亚洲人快播电影网| 日韩欧美国产精品| 欧美色窝79yyyycom| 亚洲色图欧美偷拍| 91丝袜美腿高跟国产极品老师 | 成年人网站91| 亚洲综合免费观看高清在线观看| 欧美一级淫片007| 成人手机电影网| 亚洲va韩国va欧美va| 7777精品伊人久久久大香线蕉| 91精品久久久久久蜜臀| 精彩视频一区二区| 亚洲美女视频在线观看| 精品卡一卡二卡三卡四在线| 99精品视频在线观看免费| 亚瑟在线精品视频| 国产欧美日本一区视频| 欧美疯狂做受xxxx富婆| 懂色av中文字幕一区二区三区| 亚洲国产精品精华液网站| 欧美一区二区三区视频在线观看| 成人亚洲一区二区一| 日韩成人dvd| 中文字幕一区二区三区四区| 日韩欧美第一区| 在线区一区二视频| 国产福利91精品一区| 日韩精品免费专区| 国产精品不卡一区二区三区| 日韩欧美一级在线播放| 91网上在线视频| 国产99精品国产| 青青国产91久久久久久| 亚洲激情第一区| 久久九九久久九九| 欧美一区二区三区四区在线观看 | 99久精品国产| 激情综合一区二区三区| 亚洲超丰满肉感bbw| 日韩一区在线播放| 26uuu久久综合| 这里只有精品免费| 一本到一区二区三区| 高清在线不卡av| 美女精品一区二区| 午夜激情一区二区| 亚洲图片另类小说| 中文乱码免费一区二区| 日韩精品一区二区三区蜜臀| 欧美性大战久久久| 91激情五月电影| 99re成人精品视频| 成人av高清在线| 国产二区国产一区在线观看| 久久99精品久久久久| 日韩**一区毛片| 亚洲va韩国va欧美va| 亚洲小少妇裸体bbw| 亚洲精品日韩专区silk| 专区另类欧美日韩| 中文字幕一区二区三中文字幕| 国产亚洲短视频| 久久久亚洲国产美女国产盗摄| 日韩欧美综合一区| 欧美大片在线观看一区二区|