table.c

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 870 行 · 第 1/2 页

C
870
字号
#ifndef lintstatic char	*sccsid = " @(#)table.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:	table.c		1.11		8/23/85**************************************************************************/# include "pass2.h"# define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG# define AWD SNAME|SOREG|SCON|STARNM|STARREG/* tbl */# define ANYSIGNED TPOINT|TINT|TLONG|TSHORT|TCHAR# define ANYUSIGNED TUNSIGNED|TULONG|TUSHORT|TUCHAR# define ANYFIXED ANYSIGNED|ANYUSIGNED# define TWORD TINT|TUNSIGNED|TPOINT|TLONG|TULONG# define NIAWD SNAME|SCON|STARNM/* tbl */struct optab  table[] = {PCONV,	INAREG|INTAREG,	SAREG|AWD,	TCHAR|TSHORT,	SANY,	TPOINT,		NAREG|NASL,	RESC1,		"	cvtZLl	AL,A1\n",PCONV,	INAREG|INTAREG,	SAREG|AWD,	TUCHAR|TUSHORT,	SANY,	TPOINT,		NAREG|NASL,	RESC1,		"	movzZLl	AL,A1\n",	/* the following entry is to fix a problem with	   the manner that the first pass handles the	   type of a shift expression                 */PCONV,	INAREG|INTAREG,	SAREG|AWD,	TINT|TUNSIGNED,	SANY,	TPOINT,		NAREG|NASL,	RLEFT,		"",#if defined(FORT) || defined(SPRECC)SCONV,	INTAREG|FORCC,	SAREG|AWD,	TDOUBLE,	SANY,	TFLOAT,		NAREG|NASL,	RESC1|RESCC,		"	cvtdf	AL,A1\n",SCONV,	INTAREG|FORCC,	SAREG|AWD,	ANYSIGNED|TUNSIGNED|TULONG,	SANY,	TFLOAT,		NAREG|NASL,	RESC1|RESCC,		"	cvtZLf	AL,TA1\n",SCONV,	INTAREG|FORCC,	SAREG|AWD,	TUCHAR|TUSHORT,	SANY,	TFLOAT,		NAREG|NASL,	RESC1|RESCC,		"	movzZLl	AL,A1\n	cvtlf	A1,TA1\n",#endifSCONV,	INTAREG|FORCC,	SAREG|AWD,	TUCHAR|TUSHORT,	SANY,	TFLOAT|TDOUBLE,		NAREG|NASL,	RESC1|RESCC,		"	movzZLl	AL,A1\n	cvtld	A1,A1\n",/* take care of redundant conversions introduced by reclaim() */SCONV,	INTAREG,	STAREG,	TWORD,	SANY,	TWORD,		0,	RLEFT,		"",SCONV,	INTAREG|FORCC,	SAREG|AWD,	TANY,	SANY,	TANY,		NAREG|NASL,	RESC1|RESCC,		"	ZA\n",INIT,	FOREFF,	SCON,	TANY,	SANY,	TWORD,		0,	RNOP,		"	.long	CL\n",INIT,	FOREFF,	SCON,	TANY,	SANY,	TSHORT|TUSHORT,		0,	RNOP,		"	.word	CL\n",INIT,	FOREFF,	SCON,	TANY,	SANY,	TCHAR|TUCHAR,		0,	RNOP,		"	.byte	CL\n",	/* for the use of fortran only */GOTO,	FOREFF,	SCON,	TANY,	SANY,	TANY,		0,	RNOP,		"	jbr	CL\n",GOTO,	FOREFF,	SNAME|SOREG,	TANY,	SANY,	TANY,		0,	RNOP,		"	jmp	*AL\n",GOTO,	FOREFF,	SAREG,	TANY,	SANY,	TANY,		0,	RNOP,		"	jmp	(AL)\n",STARG,	FORARG,	SCON|SOREG,	TANY,	SANY,	TANY,		0,	RNULL,		"	subl2	ZT,sp\nZS",STASG,	FOREFF,	SNAME|SOREG,	TANY,	SCON|SAREG,	TANY,		0,	RNOP,		"ZS",STASG,	INAREG,	SNAME|SOREG,	TANY,	SCON,	TANY,		NAREG,	RESC1,		"ZS	movl	AR,A1\n",STASG,	INAREG,	SNAME|SOREG,	TANY,	SAREG,	TANY,		0,	RRIGHT,		"	pushl	AR\nZS	movl	(sp)+,AR\n",FLD,	INAREG|INTAREG,	SANY,	TANY,	SFLD,	ANYSIGNED,		NAREG|NASR,	RESC1,		"	extv	$H,$S,AR,A1\n",FLD,	INAREG|INTAREG,	SANY,	TANY,	SFLD,	ANYUSIGNED,		NAREG|NASR,	RESC1,		"	extzv	$H,$S,AR,A1\n",FLD,	FORARG,	SANY,	TANY,	SFLD,	ANYSIGNED,		0,	RNULL,		"	extv	$H,$S,AR,-(sp)\n",FLD,	FORARG,	SANY,	TANY,	SFLD,	ANYUSIGNED,		0,	RNULL,		"	extzv	$H,$S,AR,-(sp)\n",OPLOG,	FORCC,	SAREG|AWD,	TWORD,	SAREG|AWD,	TWORD,		0,	RESCC,		"	cmpl	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TSHORT,	SAREG|AWD,	TSHORT,		0,	RESCC,		"	cmpw	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TUSHORT,	SAREG|AWD,	TUSHORT,		0,	RESCC,		"	cmpw	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TCHAR,	SAREG|AWD,	TCHAR,		0,	RESCC,		"	cmpb	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TUCHAR,	SAREG|AWD,	TUCHAR,		0,	RESCC,		"	cmpb	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TSHORT|TUSHORT,	SSCON,	TANY,		0,	RESCC,		"	cmpw	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TCHAR|TUCHAR,	SCCON,	TANY,		0,	RESCC,		"	cmpb	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TDOUBLE,	SAREG|AWD,	TDOUBLE,		0,	RESCC,		"	cmpd	AL,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TDOUBLE,	SAREG|AWD,	TFLOAT,		NAREG|NASR,	RESCC,		"	cvtfd	AR,A1\n	cmpd	AL,A1\nZP",OPLOG,	FORCC,	SAREG|AWD,	TFLOAT,	SAREG|AWD,	TDOUBLE,		NAREG|NASL,	RESCC,		"	cvtfd	AL,A1\n	cmpd	A1,AR\nZP",OPLOG,	FORCC,	SAREG|AWD,	TFLOAT,	SAREG|AWD,	TFLOAT,		0,	RESCC,		"	cmpf	AL,AR\nZP",CCODES,	INAREG|INTAREG,	SANY,	TANY,	SANY,	TANY,		NAREG,	RESC1,		"	movl	$1,A1\nZN",UNARY CALL,	INTAREG,	SCON,	TANY,	SANY,	TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,		NAREG|NASL,	RESC1,		"	calls	ZC,CL\n",UNARY CALL,	INTAREG,	SAREG,	TANY,	SANY,	TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,		NAREG|NASL,	RESC1,	/* should be 0 */		"	calls	ZC,(AL)\n",UNARY CALL,	INAREG|INTAREG,	SNAME,	TANY,	SANY,	TANY,		NAREG|NASL,	RESC1,	/* really reg 0 */		"	calls	ZC,*AL\n",UNARY CALL,	INAREG|INTAREG,	SSOREG,	TANY,	SANY,	TANY,		NAREG|NASL,	RESC1,	/* really reg 0 */		"	calls	ZC,*AL\n",ASG RS,	INAREG|FOREFF|FORCC,	SAREG,	TWORD,	SCON,	TINT,		0,	RLEFT|RESCC,		"	extzv	AR,ZU,AL,AL\n",ASG RS,	INAREG|FOREFF|FORCC,	SAREG,	TWORD,	SAREG,	ANYFIXED,		NAREG,	RLEFT|RESCC,		"	subl3	AR,$32,A1\n	extzv	AR,A1,AL,AL\n",ASG RS,	INAREG|FOREFF|FORCC,	SAREG,	TWORD,	SAREG|AWD,	TWORD,		NAREG,	RLEFT|RESCC,		"	subl3	AR,$32,A1\n	extzv	AR,A1,AL,AL\n",RS,	INAREG|INTAREG|FORCC,	SAREG,	TWORD,	SCON,	TINT,		NAREG|NASL,	RESC1|RESCC,		"	extzv	AR,ZU,AL,A1\n",ASG LS,	INAREG|FOREFF|FORCC,	SAREG|AWD,	TWORD,	SAREG|NIAWD,	ANYSIGNED|ANYUSIGNED,		0,	RLEFT|RESCC,		"	ashl	AR,AL,AL\n",ASG LS,	INAREG|FOREFF|FORCC,	SAREG|AWD,	TWORD,	SSOREG,	ANYSIGNED|ANYUSIGNED,		0,	RLEFT|RESCC,		"	ashl	AR,AL,AL\n",ASG LS,	INAREG|FOREFF|FORCC,	SAREG|AWD,	TWORD,	SOREG,	ANYSIGNED|ANYUSIGNED,		NAREG,	RLEFT|RESCC,		"	ZB	AR,A1\n	ashl	A1,AL,AL\n",LS,	INAREG|INTAREG|FORCC,	SAREG|AWD,	TWORD,	SAREG|NIAWD,	ANYSIGNED|ANYUSIGNED,		NAREG|NASL|NASR,	RESC1|RESCC,		"	ashl	AR,AL,A1\n",LS,	INAREG|INTAREG|FORCC,	SAREG|AWD,	TWORD,	SSOREG,	ANYSIGNED|ANYUSIGNED,		NAREG|NASL|NASR,	RESC1|RESCC,		"	ashl	AR,AL,A1\n",LS,	INAREG|INTAREG|FORCC,	SAREG|AWD,	TWORD,	SOREG,	ANYSIGNED|ANYUSIGNED,		NAREG|NASR,	RESC1|RESCC,		"	ZB	AR,A1\n	ashl	A1,AL,A1\n",INCR,	FOREFF,	AWD,	TANY,	SCON,	TANY,		0,	RLEFT,		"	ZE\n",DECR,	FOREFF,	AWD,	TANY,	SCON,	TANY,		0,	RLEFT,		"	ZE\n",INCR,	FOREFF,	SAREG,	TWORD,	SCON,	TANY,		0,	RLEFT,		"	ZE\n",DECR,	FOREFF,	SAREG,	TWORD,	SCON,	TANY,		0,	RLEFT,		"	ZE\n",/* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */INCR,	INAREG|INTAREG,	AWD,	TANY,	SCON,	TANY,		NAREG,	RESC1,		"	ZD\n",DECR,	INAREG|INTAREG,	AWD,	TANY,	SCON,	TANY,		NAREG,	RESC1,		"	ZD\n",INCR,	INAREG|INTAREG,	SAREG,	TWORD,	SCON,	TANY,		NAREG,	RESC1,		"	ZD\n",DECR,	INAREG|INTAREG,	SAREG,	TWORD,	SCON,	TANY,		NAREG,	RESC1,		"	ZD\n",ASSIGN,	INAREG|FOREFF|FORCC,	SAREG|AWD,	TDOUBLE,	SAREG|AWD,	TUCHAR|TUSHORT,		NAREG|NASR,	RLEFT|RESCC,		"	movzZRl	AR,A1\n	cvtld	A1,AL\n",ASSIGN,	INAREG|FOREFF|FORCC,	SAREG|AWD,	TFLOAT,	SAREG|AWD,	TUCHAR|TUSHORT,		NAREG|NASR,	RLEFT|RESCC,		"	movzZRl	AR,A1\n	cvtlf	A1,AL\n",ASSIGN,	INAREG|FOREFF|FORCC,	SAREG|AWD,	TANY,	SAREG|AWD,	TANY,		0,	RLEFT|RRIGHT|RESCC,		"	ZA\n",ASSIGN,	INAREG|FOREFF,	SFLD,	TANY,	SAREG|AWD,	TWORD,		0,	RRIGHT,		"	insv	AR,$H,$S,AL\n",

⌨️ 快捷键说明

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