dagcheck.c
来自「基于4个mips核的noc设计」· C语言 代码 · 共 2,087 行 · 第 1/4 页
C
2,087 行
/* 81 */ "U: LSHU(U,I)",/* 82 */ "I: MODI(I,I)",/* 83 */ "U: MODU(U,U)",/* 84 */ "I: RSHI(I,I)",/* 85 */ "U: RSHU(U,I)",/* 86 */ "U: BANDU(U,U)",/* 87 */ "I: BANDI(I,I)",/* 88 */ "U: BCOMU(U)",/* 89 */ "I: BCOMI(I)",/* 90 */ "I: BORI(I,I)",/* 91 */ "U: BORU(U,U)",/* 92 */ "U: BXORU(U,U)",/* 93 */ "I: BXORI(I,I)",/* 94 */ "F: DIVF(F,F)",/* 95 */ "I: DIVI(I,I)",/* 96 */ "U: DIVU(U,U)",/* 97 */ "F: MULF(F,F)",/* 98 */ "I: MULI(I,I)",/* 99 */ "U: MULU(U,U)",/* 100 */ "V: EQF(F,F)",/* 101 */ "V: EQI(I,I)",/* 102 */ "V: EQU(U,U)",/* 103 */ "V: GEF(F,F)",/* 104 */ "V: GEI(I,I)",/* 105 */ "V: GEU(U,U)",/* 106 */ "V: GTF(F,F)",/* 107 */ "V: GTI(I,I)",/* 108 */ "V: GTU(U,U)",/* 109 */ "V: LEF(F,F)",/* 110 */ "V: LEI(I,I)",/* 111 */ "V: LEU(U,U)",/* 112 */ "V: LTF(F,F)",/* 113 */ "V: LTI(I,I)",/* 114 */ "V: LTU(U,U)",/* 115 */ "V: NEF(F,F)",/* 116 */ "V: NEI(I,I)",/* 117 */ "V: NEU(U,U)",/* 118 */ "V: JUMPV(P)",/* 119 */ "V: LABELV",};static short _decode_stmt[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,};static short _decode_P[] = { 0, 19, 25, 41, 50, 51, 58, 65, 66, 67, 70, 71, 72, 73, 77, 78,};static short _decode_V[] = { 0, 22, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 54, 59, 60, 61, 62, 63, 64, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,};static short _decode_bogus[] = { 0, 11, 12, 13, 14, 15, 16,};static short _decode_I[] = { 0, 17, 24, 39, 42, 43, 44, 53, 56, 69, 76, 80, 82, 84, 87, 89, 90, 93, 95, 98,};static short _decode_U[] = { 0, 18, 26, 40, 45, 46, 47, 57, 74, 79, 81, 83, 85, 86, 88, 91, 92, 96, 99,};static short _decode_F[] = { 0, 20, 23, 38, 48, 49, 52, 55, 68, 75, 94, 97,};static short _decode_B[] = { 0, 21, 37,};static int _rule(void *state, int goalnt) { if (goalnt < 1 || goalnt > 8) fatal("_rule", "Bad goal nonterminal %d\n", goalnt); if (!state) return 0; switch (goalnt) { case _stmt_NT: return _decode_stmt[((struct _state *)state)->rule._stmt]; case _P_NT: return _decode_P[((struct _state *)state)->rule._P]; case _V_NT: return _decode_V[((struct _state *)state)->rule._V]; case _bogus_NT: return _decode_bogus[((struct _state *)state)->rule._bogus]; case _I_NT: return _decode_I[((struct _state *)state)->rule._I]; case _U_NT: return _decode_U[((struct _state *)state)->rule._U]; case _F_NT: return _decode_F[((struct _state *)state)->rule._F]; case _B_NT: return _decode_B[((struct _state *)state)->rule._B]; default: fatal("_rule", "Bad goal nonterminal %d\n", goalnt); return 0; }}static void _closure_P(NODEPTR_TYPE, int);static void _closure_V(NODEPTR_TYPE, int);static void _closure_bogus(NODEPTR_TYPE, int);static void _closure_I(NODEPTR_TYPE, int);static void _closure_U(NODEPTR_TYPE, int);static void _closure_F(NODEPTR_TYPE, int);static void _closure_B(NODEPTR_TYPE, int);static void _closure_P(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_bogus_NT]) { p->cost[_bogus_NT] = c + 1; p->rule._bogus = 3; _closure_bogus(a, c + 1); }}static void _closure_V(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_bogus_NT]) { p->cost[_bogus_NT] = c + 1; p->rule._bogus = 6; _closure_bogus(a, c + 1); } if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 10; }}static void _closure_bogus(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 1; p->rule._V = 1; _closure_V(a, c + 1); } if (c + 1 < p->cost[_B_NT]) { p->cost[_B_NT] = c + 1; p->rule._B = 1; _closure_B(a, c + 1); } if (c + 1 < p->cost[_F_NT]) { p->cost[_F_NT] = c + 1; p->rule._F = 1; _closure_F(a, c + 1); } if (c + 1 < p->cost[_P_NT]) { p->cost[_P_NT] = c + 1; p->rule._P = 1; _closure_P(a, c + 1); } if (c + 1 < p->cost[_U_NT]) { p->cost[_U_NT] = c + 1; p->rule._U = 1; _closure_U(a, c + 1); } if (c + 1 < p->cost[_I_NT]) { p->cost[_I_NT] = c + 1; p->rule._I = 1; _closure_I(a, c + 1); }}static void _closure_I(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_bogus_NT]) { p->cost[_bogus_NT] = c + 1; p->rule._bogus = 1; _closure_bogus(a, c + 1); }}static void _closure_U(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_bogus_NT]) { p->cost[_bogus_NT] = c + 1; p->rule._bogus = 2; _closure_bogus(a, c + 1); }}static void _closure_F(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_bogus_NT]) { p->cost[_bogus_NT] = c + 1; p->rule._bogus = 4; _closure_bogus(a, c + 1); }}static void _closure_B(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_bogus_NT]) { p->cost[_bogus_NT] = c + 1; p->rule._bogus = 5; _closure_bogus(a, c + 1); }}static void _label(NODEPTR_TYPE a) { int c; struct _state *p; if (!a) fatal("_label", "Null tree\n", 0); STATE_LABEL(a) = p = allocate(sizeof *p, FUNC); p->rule._stmt = 0; p->cost[1] = p->cost[2] = p->cost[3] = p->cost[4] = p->cost[5] = p->cost[6] = p->cost[7] = p->cost[8] = 0x7fff; switch (OP_LABEL(a)) { case 17: /* CNSTF */ /* F: CNSTF */ if (0 + 0 < p->cost[_F_NT]) { p->cost[_F_NT] = 0 + 0; p->rule._F = 2; _closure_F(a, 0 + 0); } break; case 21: /* CNSTI */ /* I: CNSTI */ if (0 + 0 < p->cost[_I_NT]) { p->cost[_I_NT] = 0 + 0; p->rule._I = 2; _closure_I(a, 0 + 0); } break; case 22: /* CNSTU */ /* U: CNSTU */ if (0 + 0 < p->cost[_U_NT]) { p->cost[_U_NT] = 0 + 0; p->rule._U = 2; _closure_U(a, 0 + 0); } break; case 23: /* CNSTP */ /* P: CNSTP */ if (0 + 0 < p->cost[_P_NT]) { p->cost[_P_NT] = 0 + 0; p->rule._P = 2; _closure_P(a, 0 + 0); } break; case 33: /* ARGF */ _label(LEFT_CHILD(a)); /* V: ARGF(F) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_F_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 3; _closure_V(a, c + 0); } break; case 37: /* ARGI */ _label(LEFT_CHILD(a)); /* V: ARGI(I) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_I_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 4; _closure_V(a, c + 0); } break; case 38: /* ARGU */ _label(LEFT_CHILD(a)); /* V: ARGU(U) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_U_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 5; _closure_V(a, c + 0); } break; case 39: /* ARGP */ _label(LEFT_CHILD(a)); /* V: ARGP(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 6; _closure_V(a, c + 0); } break; case 41: /* ARGB */ _label(LEFT_CHILD(a)); /* V: ARGB(B) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_B_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 2; _closure_V(a, c + 0); } break; case 49: /* ASGNF */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* V: ASGNF(P,F) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_F_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 8; _closure_V(a, c + 0); } break; case 53: /* ASGNI */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* V: ASGNI(P,I) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_I_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 9; _closure_V(a, c + 0); } break; case 54: /* ASGNU */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* V: ASGNU(P,U) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_U_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 10; _closure_V(a, c + 0); } break; case 55: /* ASGNP */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* V: ASGNP(P,P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 11; _closure_V(a, c + 0); } break; case 57: /* ASGNB */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* V: ASGNB(P,B) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_B_NT] + 0; if (c + 0 < p->cost[_V_NT]) { p->cost[_V_NT] = c + 0; p->rule._V = 7; _closure_V(a, c + 0); } break; case 65: /* INDIRF */ _label(LEFT_CHILD(a)); /* stmt: INDIRF(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 2; } /* F: INDIRF(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_F_NT]) { p->cost[_F_NT] = c + 0; p->rule._F = 3; _closure_F(a, c + 0); } break; case 69: /* INDIRI */ _label(LEFT_CHILD(a)); /* stmt: INDIRI(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 3; } /* I: INDIRI(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_I_NT]) { p->cost[_I_NT] = c + 0; p->rule._I = 3; _closure_I(a, c + 0); } break; case 70: /* INDIRU */ _label(LEFT_CHILD(a)); /* stmt: INDIRU(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 4; } /* U: INDIRU(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_U_NT]) { p->cost[_U_NT] = c + 0; p->rule._U = 3; _closure_U(a, c + 0); } break; case 71: /* INDIRP */ _label(LEFT_CHILD(a)); /* stmt: INDIRP(P) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_P_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 5;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?