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

📄 dagcheck.md

📁 lcc,一个可变目标c语言编译器的源码
💻 MD
字号:
%{#include "c.h"typedef Node NODEPTR_TYPE;#define OP_LABEL(p)     (specific((p)->op))#define LEFT_CHILD(p)   ((p)->kids[0])#define RIGHT_CHILD(p)  ((p)->kids[1])#define STATE_LABEL(p)  ((p)->x.state)#define PANIC	   error%}%term CNSTF=17 CNSTI=21 CNSTP=23 CNSTU=22%term ARGB=41 ARGF=33 ARGI=37 ARGP=39 ARGU=38%term ASGNB=57 ASGNF=49 ASGNI=53 ASGNP=55 ASGNU=54%term INDIRB=73 INDIRF=65 INDIRI=69 INDIRP=71 INDIRU=70%term CVFF=113 CVFI=117%term CVIF=129 CVII=133 CVIU=134%term CVPP=151 CVPU=150%term CVUI=181 CVUP=183 CVUU=182%term NEGF=193 NEGI=197%term CALLB=217 CALLF=209 CALLI=213 CALLP=215 CALLU=214 CALLV=216%term RETF=241 RETI=245 RETP=247 RETU=246 RETV=248%term ADDRGP=263%term ADDRFP=279%term ADDRLP=295%term ADDF=305 ADDI=309 ADDP=311 ADDU=310%term SUBF=321 SUBI=325 SUBP=327 SUBU=326%term LSHI=341 LSHU=342%term MODI=357 MODU=358%term RSHI=373 RSHU=374%term BANDI=389 BANDU=390%term BCOMI=405 BCOMU=406%term BORI=421 BORU=422%term BXORI=437 BXORU=438%term DIVF=449 DIVI=453 DIVU=454%term MULF=465 MULI=469 MULU=470%term EQF=481 EQI=485 EQU=486%term GEF=497 GEI=501 GEU=502%term GTF=513 GTI=517 GTU=518%term LEF=529 LEI=533 LEU=534%term LTF=545 LTI=549 LTU=550%term NEF=561 NEI=565 NEU=566%term JUMPV=584%term LABELV=600%%stmt: INDIRB(P) ""stmt: INDIRF(P) ""stmt: INDIRI(P) ""stmt: INDIRU(P) ""stmt: INDIRP(P) ""stmt: CALLF(P) ""stmt: CALLI(P) ""stmt: CALLU(P) ""stmt: CALLP(P) ""stmt: V ""bogus: I "" 1bogus: U "" 1bogus: P "" 1bogus: F "" 1bogus: B "" 1bogus: V "" 1I: bogus "" 1U: bogus "" 1P: bogus "" 1F: bogus "" 1B: bogus "" 1V: bogus "" 1F: CNSTF ""I: CNSTI ""P: CNSTP ""U: CNSTU ""V: ARGB(B) ""V: ARGF(F) ""V: ARGI(I) ""V: ARGU(U) ""V: ARGP(P) ""V: ASGNB(P,B) ""V: ASGNF(P,F) ""V: ASGNI(P,I) ""V: ASGNU(P,U) ""V: ASGNP(P,P) ""B: INDIRB(P) ""F: INDIRF(P) ""I: INDIRI(P) ""U: INDIRU(P) ""P: INDIRP(P) ""I: CVII(I) ""I: CVUI(U) ""I: CVFI(F) ""U: CVIU(I) ""U: CVUU(U) ""U: CVPU(P) ""F: CVIF(I) ""F: CVFF(F) ""P: CVUP(U) ""P: CVPP(P) ""F: NEGF(F) ""I: NEGI(I) ""V: CALLB(P,P) ""F: CALLF(P) ""I: CALLI(P) ""U: CALLU(P) ""P: CALLP(P) ""V: CALLV(P) ""V: RETF(F) ""V: RETI(I) ""V: RETU(U) ""V: RETP(P) ""V: RETV ""P: ADDRGP ""P: ADDRFP ""P: ADDRLP ""F: ADDF(F,F) ""I: ADDI(I,I) ""P: ADDP(P,I) ""P: ADDP(I,P) ""P: ADDP(U,P) ""P: ADDP(P,U) ""U: ADDU(U,U) ""F: SUBF(F,F) ""I: SUBI(I,I) ""P: SUBP(P,I) ""P: SUBP(P,U) ""U: SUBU(U,U) ""I: LSHI(I,I) ""U: LSHU(U,I) ""I: MODI(I,I) ""U: MODU(U,U) ""I: RSHI(I,I) ""U: RSHU(U,I) ""U: BANDU(U,U) ""I: BANDI(I,I) ""U: BCOMU(U) ""I: BCOMI(I) ""I: BORI(I,I) ""U: BORU(U,U) ""U: BXORU(U,U) ""I: BXORI(I,I) ""F: DIVF(F,F) ""I: DIVI(I,I) ""U: DIVU(U,U) ""F: MULF(F,F) ""I: MULI(I,I) ""U: MULU(U,U) ""V: EQF(F,F) ""V: EQI(I,I) ""V: EQU(U,U) ""V: GEF(F,F) ""V: GEI(I,I) ""V: GEU(U,U) ""V: GTF(F,F) ""V: GTI(I,I) ""V: GTU(U,U) ""V: LEF(F,F) ""V: LEI(I,I) ""V: LEU(U,U) ""V: LTF(F,F) ""V: LTI(I,I) ""V: LTU(U,U) ""V: NEF(F,F) ""V: NEI(I,I) ""V: NEU(U,U) ""V: JUMPV(P) ""V: LABELV ""%%static void reduce(NODEPTR_TYPE p, int goalnt) {	int i, sz = opsize(p->op), rulenumber = _rule(p->x.state, goalnt);	short *nts = _nts[rulenumber];	NODEPTR_TYPE kids[10];	assert(rulenumber);	_kids(p, rulenumber, kids);	for (i = 0; nts[i]; i++)		reduce(kids[i], nts[i]);	switch (optype(p->op)) {#define xx(ty) if (sz == ty->size) return	case I:	case U:		xx(chartype);		xx(shorttype);		xx(inttype);		xx(longtype);		xx(longlong);		xx(signedptr);		xx(unsignedptr);		break;	case F:		xx(floattype);		xx(doubletype);		xx(longdouble);		break;	case P:		xx(voidptype);		xx(funcptype);		break;	case V:	case B: if (sz == 0) return;#undef xx	}	printdag(p, 2);	assert(0);}void check(Node p) {	struct _state { short cost[1]; };	_label(p);	if (((struct _state *)p->x.state)->cost[1] > 0) {		printdag(p, 2);		assert(0);	}	reduce(p, 1);}

⌨️ 快捷键说明

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