mips.c
来自「基于4个mips核的noc设计」· C语言 代码 · 共 2,447 行 · 第 1/5 页
C
2,447 行
} if (q->cost[_con_NT] == 0) { p->cost[_con_NT] = 0; p->rule._con = q->rule._con; } if (q->cost[_acon_NT] == 0) { p->cost[_acon_NT] = 0; p->rule._acon = q->rule._acon; } if (q->cost[_addr_NT] == 0) { p->cost[_addr_NT] = 0; p->rule._addr = q->rule._addr; } if (q->cost[_rc_NT] == 0) { p->cost[_rc_NT] = 0; p->rule._rc = q->rule._rc; } if (q->cost[_rc5_NT] == 0) { p->cost[_rc5_NT] = 0; p->rule._rc5 = q->rule._rc5; } if (q->cost[_ar_NT] == 0) { p->cost[_ar_NT] = 0; p->rule._ar = q->rule._ar; } } c = 0; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 8; _closure_reg(a, c + 0); } } /* reg: INDIRU4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 26; _closure_reg(a, c + 0); } break; case 4167: /* INDIRP4 */ _label(LEFT_CHILD(a)); if ( /* reg: INDIRP4(VREGP) */ LEFT_CHILD(a)->op == 711 /* VREGP */ ) { if (mayrecalc(a)) { struct _state *q = a->syms[RX]->u.t.cse->x.state; if (q->cost[_stmt_NT] == 0) { p->cost[_stmt_NT] = 0; p->rule._stmt = q->rule._stmt; } if (q->cost[_reg_NT] == 0) { p->cost[_reg_NT] = 0; p->rule._reg = q->rule._reg; } if (q->cost[_con_NT] == 0) { p->cost[_con_NT] = 0; p->rule._con = q->rule._con; } if (q->cost[_acon_NT] == 0) { p->cost[_acon_NT] = 0; p->rule._acon = q->rule._acon; } if (q->cost[_addr_NT] == 0) { p->cost[_addr_NT] = 0; p->rule._addr = q->rule._addr; } if (q->cost[_rc_NT] == 0) { p->cost[_rc_NT] = 0; p->rule._rc = q->rule._rc; } if (q->cost[_rc5_NT] == 0) { p->cost[_rc5_NT] = 0; p->rule._rc5 = q->rule._rc5; } if (q->cost[_ar_NT] == 0) { p->cost[_ar_NT] = 0; p->rule._ar = q->rule._ar; } } c = 0; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 7; _closure_reg(a, c + 0); } } /* reg: INDIRP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 27; _closure_reg(a, c + 0); } break; case 4209: /* CVFF4 */ _label(LEFT_CHILD(a)); /* reg: CVFF4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 83; _closure_reg(a, c + 0); } break; case 4213: /* CVFI4 */ _label(LEFT_CHILD(a)); /* reg: CVFI4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((a->syms[0]->u.c.v.i==4?2:LBURG_MAX)); if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 87; _closure_reg(a, c + 0); } /* reg: CVFI4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((a->syms[0]->u.c.v.i==8?2:LBURG_MAX)); if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 88; _closure_reg(a, c + 0); } break; case 4225: /* CVIF4 */ _label(LEFT_CHILD(a)); /* reg: CVIF4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 2; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 85; _closure_reg(a, c + 0); } break; case 4229: /* CVII4 */ _label(LEFT_CHILD(a)); if ( /* reg: CVII4(INDIRI1(addr)) */ LEFT_CHILD(a)->op == 1093 /* INDIRI1 */ ) { c = ((struct _state *)(LEFT_CHILD(LEFT_CHILD(a))->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 28; _closure_reg(a, c + 0); } } if ( /* reg: CVII4(INDIRI2(addr)) */ LEFT_CHILD(a)->op == 2117 /* INDIRI2 */ ) { c = ((struct _state *)(LEFT_CHILD(LEFT_CHILD(a))->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 29; _closure_reg(a, c + 0); } } /* reg: CVII4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 2; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 80; _closure_reg(a, c + 0); } break; case 4230: /* CVIU4 */ break; case 4246: /* CVPU4 */ break; case 4247: /* CVPP4 */ break; case 4277: /* CVUI4 */ _label(LEFT_CHILD(a)); if ( /* reg: CVUI4(INDIRU1(addr)) */ LEFT_CHILD(a)->op == 1094 /* INDIRU1 */ ) { c = ((struct _state *)(LEFT_CHILD(LEFT_CHILD(a))->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 32; _closure_reg(a, c + 0); } } if ( /* reg: CVUI4(INDIRU2(addr)) */ LEFT_CHILD(a)->op == 2118 /* INDIRU2 */ ) { c = ((struct _state *)(LEFT_CHILD(LEFT_CHILD(a))->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 33; _closure_reg(a, c + 0); } } /* reg: CVUI4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 81; _closure_reg(a, c + 0); } break; case 4278: /* CVUU4 */ _label(LEFT_CHILD(a)); if ( /* reg: CVUU4(INDIRU1(addr)) */ LEFT_CHILD(a)->op == 1094 /* INDIRU1 */ ) { c = ((struct _state *)(LEFT_CHILD(LEFT_CHILD(a))->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 30; _closure_reg(a, c + 0); } } if ( /* reg: CVUU4(INDIRU2(addr)) */ LEFT_CHILD(a)->op == 2118 /* INDIRU2 */ ) { c = ((struct _state *)(LEFT_CHILD(LEFT_CHILD(a))->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 31; _closure_reg(a, c + 0); } } /* reg: CVUU4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 82; _closure_reg(a, c + 0); } break; case 4279: /* CVUP4 */ break; case 4289: /* NEGF4 */ _label(LEFT_CHILD(a)); /* reg: NEGF4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 78; _closure_reg(a, c + 0); } break; case 4293: /* NEGI4 */ _label(LEFT_CHILD(a)); /* reg: NEGI4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 60; _closure_reg(a, c + 0); } break; case 4305: /* CALLF4 */ _label(LEFT_CHILD(a)); /* reg: CALLF4(ar) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_ar_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 89; _closure_reg(a, c + 0); } break; case 4309: /* CALLI4 */ _label(LEFT_CHILD(a)); /* reg: CALLI4(ar) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_ar_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 91; _closure_reg(a, c + 0); } break; case 4310: /* CALLU4 */ _label(LEFT_CHILD(a)); /* reg: CALLU4(ar) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_ar_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 93; _closure_reg(a, c + 0); } break; case 4311: /* CALLP4 */ _label(LEFT_CHILD(a)); /* reg: CALLP4(ar) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_ar_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 92; _closure_reg(a, c + 0); } break; case 4321: /* LOADF4 */ _label(LEFT_CHILD(a)); /* reg: LOADF4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + (move(a)); if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 76; _closure_reg(a, c + 0); } break; case 4325: /* LOADI4 */ _label(LEFT_CHILD(a)); /* reg: LOADI4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + (move(a)); if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 65; _closure_reg(a, c + 0); } break; case 4326: /* LOADU4 */ _label(LEFT_CHILD(a)); /* reg: LOADU4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + (move(a)); if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 67; _closure_reg(a, c + 0); } break; case 4327: /* LOADP4 */ _label(LEFT_CHILD(a)); /* reg: LOADP4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + (move(a)); if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 66; _closure_reg(a, c + 0); } break; case 4337: /* RETF4 */ _label(LEFT_CHILD(a)); /* stmt: RETF4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 52; } break; case 4341: /* RETI4 */ _label(LEFT_CHILD(a)); /* stmt: RETI4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 54; } break; case 4342: /* RETU4 */ _label(LEFT_CHILD(a)); /* stmt: RETU4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 55; } break; case 4343: /* RETP4 */ _label(LEFT_CHILD(a)); /* stmt: RETP4(reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 56; } break; case 4359: /* ADDRGP4 */ /* acon: ADDRGP4 */ if (0 + 0 < p->cost[_acon_NT]) { p->cost[_acon_NT] = 0 + 0; p->rule._acon = 2; _closure_acon(a, 0 + 0); } /* ar: ADDRGP4 */ if (0 + 0 < p->cost[_ar_NT]) { p->cost[_ar_NT] = 0 + 0; p->rule._ar = 1; } break; case 4375: /* ADDRFP4 */ /* addr: ADDRFP4 */ if (0 + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = 0 + 0; p->rule._addr = 6; _closure_addr(a, 0 + 0); } break; case 4391: /* ADDRLP4 */ /* addr: ADDRLP4 */ if (0 + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = 0 + 0; p->rule._addr = 7; _closure_addr(a, 0 + 0); } break; case 4401: /* ADDF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* reg: ADDF4(reg,reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 68; _closure_reg(a, c + 0); } break; case 4405: /* ADDI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* addr: ADDI4(reg,acon) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_acon_NT] + 0; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 1; _closure_addr(a, c + 0); } /* reg: ADDI4(reg,rc) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_rc_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 42; _closure_reg(a, c + 0); } break; case 4406: /* ADDU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* addr: ADDU4(reg,acon) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_acon_NT] + 0; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 2; _closure_addr(a, c + 0); } /* reg: ADDU4(reg,rc) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_rc_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 44; _closure_reg(a, c + 0); } break; case 4407: /* ADDP4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* addr: ADDP4(reg,acon) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_acon_NT] + 0; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 3; _closure_addr(a, c + 0); } /* reg: ADDP4(reg,rc) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_rc_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 43; _closure_reg(a, c + 0); } break; case 4417: /* SUBF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* reg: SUBF4(reg,reg) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_reg_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 74; _closure_reg(a, c + 0); } break; case 4421: /* SUBI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* reg: SUBI4(reg,rc) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_reg_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_rc_NT] + 1; if (c + 0 < p->cost[_reg_NT]) { p->cost[_reg_NT] = c + 0; p->rule._reg = 51; _closure_reg(a, c + 0); } break; case 4422: /* SUBU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* reg:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?