⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c13.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
/* * C second pass -- tables */#include "c1.h"/* * Operator dope table-- see description in c0. */int opdope[] {	000000,	/* EOFC */	000000,	/* ; */	000000,	/* { */	000000,	/* } */	036000,	/* [ */	002000,	/* ] */	036000,	/* ( */	002000,	/* ) */	014201,	/* : */	007001,	/* , */	000000,	/* field selection */	000000,	/* reverse field selection */	000001,	/* temporary field selection */	000001,	/* int->ptr */	000001,	/* ptr->int */	000001,	/* long->ptr */	000001,	/* field assignment */	000001,	/* >> unsigned */	000001,	/* >> unsigned */	000000,	/* 19 */	000400,	/* name */	000400,	/* short constant */	000400,	/* string */	000400,	/* float */	000400,	/* double */	0000400,	/* long const */	000400,	/* long const <= 16 bits */	000400,	/* autoi, *r++ */	000400,	/* autod, *--r */	000000,	/* 29 */	034203,	/* ++pre */	034203,	/* --pre */	034203,	/* ++post */	034203,	/* --post */	034220,	/* !un */	034202,	/* &un */	034220,	/* *un */	034200,	/* -un */	034220,	/* ~un */	036001,	/* . (structure reference) */	030101,	/* + */	030001,	/* - */	032101,	/* * */	032001,	/* / */	032001,	/* % */	026061,	/* >> */	026061,	/* << */	020161,	/* & */	016161,	/* | */	016161,	/* ^ */	036001,	/* -> */	001000,	/* int -> double */	001000,	/* double -> int */	000001,	/* && */	000001,	/* || */	030001, /* &~ */	001000,	/* double -> long */	001000,	/* long -> double */	001000,	/* integer -> long */	000000,	/* long -> integer */	022005,	/* == */	022005,	/* != */	024005,	/* <= */	024005,	/* < */	024005,	/* >= */	024005,	/* > */	024005,	/* <p */	024005,	/* <=p */	024005,	/* >p */	024005,	/* >=p */	012213,	/* =+ */	012213,	/* =- */	012213,	/* =* */	012213,	/* =/ */	012213,	/* =% */	012253,	/* =>> */	012253,	/* =<< */	012253,	/* =& */	012253,	/* =| */	012253,	/* =^ */	012213,	/* = */	030001, /* & for tests */	032001,	/*  * (long) */	032001,	/*  / (long) */	032001,	/* % (long) */	012253,	/* =& ~ */	012213,	/* =* (long) */	012213,	/* / (long) */	012213,	/* % (long) */	000000,	/* 89 */	014201,	/* ? */	026061,	/* long << */	012253,	/* long =<< */	000101,	/* max */	000101,	/* maxp */	000101,	/* min */	000101,	/* minp */	000001,	/* , */	000000,	/* 98 */	000000,	/* 99 */	036001,	/* call */	036000,	/* mcall */	000000,	/* goto */	000000,	/* jump cond */	000000,	/* branch cond */	000400,	/* set nregs */	000000, /* 106 */	000000,	/* 107 */	000000,	/* 108 */	000000,	/* int->char */	000000,	/* force r0 */	000000,	/* 111 */	000000,	/* 112 */	000000,	/* 113 */	000000,	/* 114 */	000000,	/* structure assign */	000001,	/* struct assignment setup */};char	*opntab[] {	0,	0,	0,	0,	0,	0,	0,	0,	":",	",",	"field select",	0,	0,	"int->ptr",	"ptr->int",	"long->ptr",	"field assign",	">>",	">>",	0,	"name",	"short constant",	"string",	"float",	"double",	"long constant",	"long constant",	"*r++",	"*--r",	0,	"++pre",	"--pre",	"++post",	"--post",	"!un",	"&",	"*",	"-",	"~",	".",	"+",	"-",	"*",	"/",	"%",	">>",	"<<",	"&",	"|",	"^",	"->",	"int->double",	"double->int",	"&&",	"||",	"&~",	"double->long",	"long->double",	"integer->long",	"long->integer",	"==",	"!=",	"<=",	"<",	">=",	">",	"<p",	"<=p",	">p",	">=p",	"+=",	"-=",	"*=",	"/=",	"%=",	">>=",	"<<=",	"&=",	"|=",	"^=",	"=",	"& for tests",	"*",	"/",	"%",	"&= ~",	"*=",	"/=",	"%=",	0,	"?",	"<<",	"<<=",	"\\/",	"\\/",	"/\\",	"/\\",	0,	"call",	"call",	"call",	0,	"goto",	"jump cond",	"branch cond",	"set nregs",	"load value",	0,	0,	"int->char",	"force register",	"",	"",	"",	"",	"=structure",	"= (struct setup)",};/* * Strings for instruction tables. */char	mov[]	"mov";char	clr[]	"clr";char	cmp[]	"cmp";char	tst[]	"tst";char	add[]	"add";char	sub[]	"sub";char	inc[]	"inc";char	dec[]	"dec";char	mul[]	"mul";char	div[]	"div";char	asr[]	"asr";char	ash[]	"ash";char	asl[]	"asl";char	bic[]	"bic";char	bic1[]	"bic $1,";char	bit[]	"bit";char	bit1[]	"bit $1,";char	bis[]	"bis";char	bis1[]	"bis $1,";char	xor[]	"xor";char	neg[]	"neg";char	com[]	"com";char	stdol[]	"*$";char	ashc[]	"ashc";char	slmul[]	"lmul";char	sldiv[]	"ldiv";char	slrem[]	"lrem";char	almul[]	"almul";char	aldiv[]	"aldiv";char	alrem[]	"alrem";char	jeq[]	"jeq";char	jne[]	"jne";char	jle[]	"jle";char	jgt[]	"jgt";char	jlt[]	"jlt";char	jge[]	"jge";char	jlos[]	"jlos";char	jhi[]	"jhi";char	jlo[]	"jlo";char	jhis[]	"jhis";char	nop[]	"/nop";char	jbr[]	"jbr";/* * Instruction tables, accessed by * I (first operand) or I' (second) macros. */struct instab instab[] {	LOAD,	mov,	tst,	ASSIGN,	mov,	clr,	EQUAL,	cmp,	tst,	NEQUAL,	cmp,	tst,	LESSEQ,	cmp,	tst,	LESS,	cmp,	tst,	GREATEQ,cmp,	tst,	GREAT,	cmp,	tst,	LESSEQP,cmp,	tst,	LESSP,	cmp,	tst,	GREATQP,cmp,	tst,	GREATP,	cmp,	tst,	PLUS,	add,	inc,	ASPLUS,	add,	inc,	MINUS,	sub,	dec,	ASMINUS,sub,	dec,	INCBEF,	add,	inc,	DECBEF,	sub,	dec,	INCAFT,	add,	inc,	DECAFT,	sub,	dec,	TIMES,	mul,	mul,	ASTIMES,mul,	mul,	DIVIDE,	div,	div,	ASDIV,	div,	div,	MOD,	div,	div,	ASMOD,	div,	div,	PTOI,	div,	div,	RSHIFT,	ash,	asr,	ASRSH,	ash,	asr,	LSHIFT,	ash,	asl,	ASLSH,	ash,	asl,	AND,	bic,	bic1,	ANDN,	bic,	bic1,	ASANDN,	bic,	bic1,	TAND,	bit,	bit1,	OR,	bis,	bis1,	ASOR,	bis,	bis1,	EXOR,	xor,	xor,	ASXOR,	xor,	xor,	NEG,	neg,	neg,	COMPL,	com,	com,	CALL1,	stdol,	stdol,	CALL2,	"",	"",	LLSHIFT,ashc,	ashc,	ASLSHL,	ashc,	ashc,	LTIMES,	slmul,	slmul,	LDIV,	sldiv,	sldiv,	LMOD,	slrem,	slrem,	LASTIMES,almul,	almul,	LASDIV,	aldiv,	aldiv,	LASMOD,	alrem,	alrem,	ULSH,	ashc,	ashc,	ASULSH,	ashc,	ashc,	0,	0,	0};/* * Similar table for relationals. * The first string is for the positive * test, the second for the inverted one. * The '200+' entries are  * used in tests against 0 where a 'tst' * instruction is used; it clears the c-bit * the c-bit so ptr tests are funny. */struct instab branchtab[] {	EQUAL,	jeq,	jne,	NEQUAL,	jne,	jeq,	LESSEQ,	jle,	jgt,	LESS,	jlt,	jge,	GREATEQ,jge,	jlt,	GREAT,	jgt,	jle,	LESSEQP,jlos,	jhi,	LESSP,	jlo,	jhis,	GREATQP,jhis,	jlo,	GREATP,	jhi,	jlos,	200+EQUAL,	jeq,	jne,	200+NEQUAL,	jne,	jeq,	200+LESSEQ,	jle,	jgt,	200+LESS,	jlt,	jge,	200+GREATEQ,	jge,	jlt,	200+GREAT,	jgt,	jle,	200+LESSEQP,	jeq,	jne,	200+LESSP,	nop,	jbr,	200+GREATQP,	jbr,	nop,	200+GREATP,	jne,	jeq,	0,	0,	0 };

⌨️ 快捷键说明

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