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

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

?? order.c

?? <B>Digital的Unix操作系統VAX 4.2源碼</B>
?? C
字號:
#ifndef lintstatic char	*sccsid = " @(#)order.c	1.3	(ULTRIX)	1/16/86";#endif lint/************************************************************************ *									* *			Copyright (c) 1986 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**	David Metsky		14-Jan-86** 001	Replaced old version with BSD 4.3 version as part of upgrade.**	Based on:	order.c		1.6		4/2/85**************************************************************************/# include "pass2.h"int maxargs = { -1 };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;	if( q->in.op == INCR && 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) TWORD t; 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 int o, ty, sul, sur, r;	int szr;	NODE *temp;	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 ||#if defined(FORT) || defined(SPRECC)		    p->in.type==FLOAT ||#endif		    p->in.type==DOUBLE ||		    ISPTR(p->in.type) ||		    ISARY(p->in.type)) )			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;	szr = szty( p->in.right->in.type );	if( szty( p->in.type ) > szr && szr >= 1 ) {		/* implicit conversion in rhs */		szr = szty( p->in.type );		sur = max( szr, sur );	}	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 MUL:	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) ){			temp = p->in.left;			p->in.left = p->in.right;			p->in.right = temp;			sul = p->in.left->in.su;			sur = p->in.right->in.su;			szr = szty( p->in.right->in.type );			if( szty( p->in.type ) > szr && szr >= 1 ) {				/* implicit conversion in rhs */				szr = szty( p->in.type );				sur = max( szr, sur );				}			}		break;		}	/* binary op, computed by left, then right, then do op */	p->in.su = max(sul,szr+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 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 ||	    rt == FLOAT || (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 ||#ifndef SPRECC	    rt == FLOAT ||#endif	    ( 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" );	/*NOTREACHED*/	}int crslab = 99999;  /* VAX */getlab(){	return( crslab-- );	}deflab( l ){	printf( "L%d:\n", l );	}genargs( p ) register NODE *p; {	register NODE *pasg;	register align;	register size;	/* generate code for the arguments */	/*  first, do the arguments on the right */	while( p->in.op == CM ){		genargs( p->in.right );		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;			canon( p );  /* turn it into an oreg */			if( p->in.op != OREG ){				offstar( p->in.left );				canon( p );				if( p->in.op != OREG ){					offstar( p->in.left );					canon( p );					if( p->in.op != OREG ) cerror( "stuck starg" );					}				}			}		pasg = talloc();		pasg->in.op = STARG;		pasg->in.rall = NOPREF;		pasg->stn.stsize = size;		pasg->stn.stalign = align;		pasg->in.left = p; 		order( pasg, FORARG );		return;		}	/* ordinary case */	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一区二区三区免费野_久草精品视频
欧美成人午夜电影| 一区二区三区四区激情| 日韩电影一区二区三区四区| youjizz久久| 久久影视一区二区| 国内不卡的二区三区中文字幕| 日本高清成人免费播放| 亚洲视频一区在线| 欧美在线视频你懂得| 亚洲图片欧美色图| 欧美美女视频在线观看| 日韩电影在线观看网站| 欧美一级夜夜爽| 国产成人午夜99999| 欧美国产精品v| 色偷偷久久一区二区三区| 亚洲精品视频免费看| 欧美日韩亚洲不卡| 久久精品理论片| 国产精品久久久久久久久搜平片 | 亚洲美女偷拍久久| 色欧美88888久久久久久影院| 亚洲视频一区在线| 制服.丝袜.亚洲.另类.中文| 国内精品伊人久久久久av影院| 国产欧美日韩一区二区三区在线观看| 国模冰冰炮一区二区| 国产亚洲1区2区3区| 欧美主播一区二区三区| 日本麻豆一区二区三区视频| 国产午夜亚洲精品午夜鲁丝片 | 国产精品77777| 亚洲国产三级在线| 国产欧美一区视频| 欧美日韩视频专区在线播放| 国产suv一区二区三区88区| 一区二区三区国产精华| 久久午夜羞羞影院免费观看| 一本一道久久a久久精品 | 欧美午夜精品久久久久久孕妇| 精品夜夜嗨av一区二区三区| 一区二区三区成人| 国产精品私人影院| 久久九九99视频| 日韩一区二区精品在线观看| 91久久一区二区| 色婷婷综合久久久| 91亚洲精品乱码久久久久久蜜桃| 国产真实精品久久二三区| 久久国产欧美日韩精品| 爽好多水快深点欧美视频| 一级日本不卡的影视| 国产精品久久久久久久久搜平片 | 北条麻妃一区二区三区| 国产一区二区三区在线观看免费视频| 在线观看91视频| 久久精品国产精品亚洲综合| 亚洲成人免费在线观看| 亚洲乱码国产乱码精品精98午夜| 国产精品不卡一区二区三区| 亚洲欧美另类久久久精品2019| 一区二区三区国产| 奇米影视在线99精品| 国内精品国产三级国产a久久| 粉嫩aⅴ一区二区三区四区五区| 成人精品国产免费网站| 欧美三级午夜理伦三级中视频| 欧美一区二区三区人| 精品国产污污免费网站入口| 国产欧美精品区一区二区三区 | 日韩欧美精品在线| 国产精品美日韩| 蜜臀av一级做a爰片久久| 成人黄色在线看| 日韩精品一区二区三区在线播放| 中文字幕av一区二区三区高| 日本欧美一区二区三区| 91视频免费观看| 国产欧美一区二区精品婷婷| 亚洲国产精品尤物yw在线观看| 国产精品18久久久久久久久久久久| 日本电影欧美片| 中文字幕一区在线观看| 久久国产婷婷国产香蕉| 欧美精品久久一区| 一区二区三区免费看视频| 国产成人夜色高潮福利影视| 日韩精品一区二区三区swag| 亚洲激情av在线| 一本久久a久久精品亚洲| 国产亚洲综合色| 韩国三级在线一区| 日韩欧美国产综合| 麻豆91在线观看| 精品国产百合女同互慰| 久久99国产精品免费| 精品久久五月天| 国产91高潮流白浆在线麻豆 | 91精品国产乱码| 丝袜a∨在线一区二区三区不卡 | 在线观看日韩电影| 亚洲另类色综合网站| 91免费视频网址| 亚洲一区二区欧美激情| 欧美日本在线一区| 毛片av一区二区三区| 久久久久久久一区| 成人免费视频视频在线观看免费| 国产精品丝袜久久久久久app| 国产福利一区在线观看| 亚洲丝袜精品丝袜在线| 91黄视频在线观看| 另类欧美日韩国产在线| 中文在线一区二区| 91国偷自产一区二区开放时间 | 国产成人精品免费网站| 国产精品毛片久久久久久久| 欧美日韩综合色| 国内不卡的二区三区中文字幕 | 国产精品麻豆欧美日韩ww| 在线看不卡av| 精品中文字幕一区二区| 亚洲天堂免费看| 日韩一区二区三区av| thepron国产精品| 久久99精品国产麻豆婷婷洗澡| 亚洲视频免费观看| 精品久久久久香蕉网| 欧美艳星brazzers| 99视频国产精品| 国产一区二区影院| 美女国产一区二区| 亚洲国产aⅴ天堂久久| 国产精品久久久久婷婷| 久久一区二区视频| 日韩一区二区三区视频在线| 91视视频在线观看入口直接观看www| 日本美女一区二区三区视频| 一区二区三区精品在线| 国产精品家庭影院| 国产校园另类小说区| 精品日韩在线观看| 欧美一区二区视频免费观看| 91.com视频| 欧美一级艳片视频免费观看| 91精品福利在线一区二区三区| 99精品一区二区三区| 色综合久久天天综合网| 成人黄色国产精品网站大全在线免费观看| 奇米色一区二区| 久久99蜜桃精品| 国产米奇在线777精品观看| 国精品**一区二区三区在线蜜桃| 久久成人免费电影| 国内精品国产成人国产三级粉色| 国精产品一区一区三区mba视频| 国内外成人在线| 9i看片成人免费高清| 日本道免费精品一区二区三区| 色综合久久天天| 日韩精品综合一本久道在线视频| 精品盗摄一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 日韩专区欧美专区| 国内外成人在线| 在线观看视频一区二区| 精品嫩草影院久久| 亚洲男人天堂av| 国产麻豆视频一区| 一本大道久久精品懂色aⅴ| 欧美一区二区三区在线观看| 国产午夜精品在线观看| 亚洲人xxxx| 国产99久久久精品| 欧美视频中文一区二区三区在线观看| 日韩欧美国产电影| 亚洲美腿欧美偷拍| 成人免费毛片片v| 日韩欧美你懂的| 日一区二区三区| 不卡av在线免费观看| 日韩精品一区二区三区视频播放| 亚洲精品国产一区二区三区四区在线| 五月婷婷综合激情| 色欧美日韩亚洲| 国产精品网曝门| 国产在线不卡一卡二卡三卡四卡| 欧美日韩大陆一区二区| 亚洲天天做日日做天天谢日日欢 | 3d动漫精品啪啪一区二区竹菊| 日韩久久一区二区| 成人免费观看男女羞羞视频| 在线看国产一区二区| 日韩一区二区三区四区| 精品国产91洋老外米糕| 国产精品久久免费看| 中文字幕一区二区三区在线观看| 国产欧美日本一区二区三区| 亚洲成人av在线电影| 99精品欧美一区二区三区小说|