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 + -
显示快捷键?