m68k-parse.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 2,067 行 · 第 1/4 页

C
2,067
字号
		  op->reg = yyvsp[-3].reg;		  op->disp = yyvsp[-5].exp;		  op->index = yyvsp[-1].indexreg;		;    break;}case 23:#line 246 "m68k-parse.y"{		  if (yyvsp[-3].reg == PC || yyvsp[-3].reg == ZPC)		    yyerror (_("syntax error"));		  op->mode = BASE;		  op->reg = yyvsp[-1].reg;		  op->disp = yyvsp[-5].exp;		  op->index.reg = yyvsp[-3].reg;		  op->index.size = SIZE_UNSPEC;		  op->index.scale = 1;		;    break;}case 24:#line 257 "m68k-parse.y"{		  op->mode = BASE;		  op->reg = yyvsp[-1].reg;		  op->disp = yyvsp[-4].exp;		  op->index = yyvsp[-2].indexreg;		;    break;}case 25:#line 264 "m68k-parse.y"{		  op->mode = BASE;		  op->disp = yyvsp[-1].exp;		  op->index = yyvsp[-3].indexreg;		;    break;}case 26:#line 270 "m68k-parse.y"{		  op->mode = BASE;		  op->reg = yyvsp[-3].reg;		  op->disp = yyvsp[-5].exp;		  op->index = yyvsp[-1].indexreg;		;    break;}case 27:#line 277 "m68k-parse.y"{		  op->mode = BASE;		  op->reg = yyvsp[-3].reg;		  op->index = yyvsp[-1].indexreg;		;    break;}case 28:#line 283 "m68k-parse.y"{		  if (yyvsp[-3].reg == PC || yyvsp[-3].reg == ZPC)		    yyerror (_("syntax error"));		  op->mode = BASE;		  op->reg = yyvsp[-1].reg;		  op->disp = yyvsp[-5].exp;		  op->index.reg = yyvsp[-3].reg;		  op->index.size = SIZE_UNSPEC;		  op->index.scale = 1;		;    break;}case 29:#line 294 "m68k-parse.y"{		  if (yyvsp[-3].reg == PC || yyvsp[-3].reg == ZPC)		    yyerror (_("syntax error"));		  op->mode = BASE;		  op->reg = yyvsp[-1].reg;		  op->index.reg = yyvsp[-3].reg;		  op->index.size = SIZE_UNSPEC;		  op->index.scale = 1;		;    break;}case 30:#line 304 "m68k-parse.y"{		  op->mode = BASE;		  op->reg = yyvsp[-1].reg;		  op->disp = yyvsp[-4].exp;		  op->index = yyvsp[-2].indexreg;		;    break;}case 31:#line 311 "m68k-parse.y"{		  op->mode = BASE;		  op->reg = yyvsp[-1].reg;		  op->index = yyvsp[-2].indexreg;		;    break;}case 32:#line 317 "m68k-parse.y"{		  op->mode = POST;		  op->reg = yyvsp[-5].reg;		  op->disp = yyvsp[-6].exp;		  op->index = yyvsp[-2].indexreg;		  op->odisp = yyvsp[-1].exp;		;    break;}case 33:#line 325 "m68k-parse.y"{		  op->mode = POST;		  op->reg = yyvsp[-3].reg;		  op->disp = yyvsp[-4].exp;		  op->odisp = yyvsp[-1].exp;		;    break;}case 34:#line 332 "m68k-parse.y"{		  op->mode = POST;		  op->reg = yyvsp[-5].reg;		  op->index = yyvsp[-2].indexreg;		  op->odisp = yyvsp[-1].exp;		;    break;}case 35:#line 339 "m68k-parse.y"{		  op->mode = POST;		  op->reg = yyvsp[-3].reg;		  op->odisp = yyvsp[-1].exp;		;    break;}case 36:#line 345 "m68k-parse.y"{		  op->mode = PRE;		  op->reg = yyvsp[-5].reg;		  op->disp = yyvsp[-7].exp;		  op->index = yyvsp[-3].indexreg;		  op->odisp = yyvsp[-1].exp;		;    break;}case 37:#line 353 "m68k-parse.y"{		  op->mode = PRE;		  op->reg = yyvsp[-5].reg;		  op->index = yyvsp[-3].indexreg;		  op->odisp = yyvsp[-1].exp;		;    break;}case 38:#line 360 "m68k-parse.y"{		  if (yyvsp[-5].reg == PC || yyvsp[-5].reg == ZPC)		    yyerror (_("syntax error"));		  op->mode = PRE;		  op->reg = yyvsp[-3].reg;		  op->disp = yyvsp[-7].exp;		  op->index.reg = yyvsp[-5].reg;		  op->index.size = SIZE_UNSPEC;		  op->index.scale = 1;		  op->odisp = yyvsp[-1].exp;		;    break;}case 39:#line 372 "m68k-parse.y"{		  if (yyvsp[-5].reg == PC || yyvsp[-5].reg == ZPC)		    yyerror (_("syntax error"));		  op->mode = PRE;		  op->reg = yyvsp[-3].reg;		  op->index.reg = yyvsp[-5].reg;		  op->index.size = SIZE_UNSPEC;		  op->index.scale = 1;		  op->odisp = yyvsp[-1].exp;		;    break;}case 40:#line 383 "m68k-parse.y"{		  op->mode = PRE;		  op->reg = yyvsp[-3].reg;		  op->disp = yyvsp[-5].exp;		  op->index = yyvsp[-4].indexreg;		  op->odisp = yyvsp[-1].exp;		;    break;}case 41:#line 396 "m68k-parse.y"{		  /* We use optzapc to avoid a shift/reduce conflict.  */		  if (yyvsp[-1].reg < ADDR0 || yyvsp[-1].reg > ADDR7)		    yyerror (_("syntax error"));		  op->mode = AINDR;		  op->reg = yyvsp[-1].reg;		;    break;}case 42:#line 404 "m68k-parse.y"{		  /* We use optzapc to avoid a shift/reduce conflict.  */		  if (yyvsp[-2].reg < ADDR0 || yyvsp[-2].reg > ADDR7)		    yyerror (_("syntax error"));		  op->mode = AINC;		  op->reg = yyvsp[-2].reg;		;    break;}case 43:#line 412 "m68k-parse.y"{		  /* We use optzapc to avoid a shift/reduce conflict.  */		  if (yyvsp[-2].reg < ADDR0 || yyvsp[-2].reg > ADDR7)		    yyerror (_("syntax error"));		  op->mode = ADEC;		  op->reg = yyvsp[-2].reg;		;    break;}case 44:#line 420 "m68k-parse.y"{		  op->reg = yyvsp[-4].reg;		  op->disp = yyvsp[-1].exp;		  if ((yyvsp[-4].reg >= ZADDR0 && yyvsp[-4].reg <= ZADDR7)		      || yyvsp[-4].reg == ZPC)		    op->mode = BASE;		  else		    op->mode = DISP;		;    break;}case 45:#line 430 "m68k-parse.y"{		  op->mode = BASE;		  op->reg = yyvsp[-5].reg;		  op->disp = yyvsp[-2].exp;		  op->index = yyvsp[-1].indexreg;		;    break;}case 46:#line 437 "m68k-parse.y"{		  op->mode = POST;		  op->reg = yyvsp[-9].reg;		  op->disp = yyvsp[-6].exp;		  op->index = yyvsp[-1].indexreg;		  op->odisp = yyvsp[-2].exp;		;    break;}case 47:#line 445 "m68k-parse.y"{		  op->mode = POST;		  op->reg = yyvsp[-8].reg;		  op->disp = yyvsp[-5].exp;		  op->odisp = yyvsp[-1].exp;		;    break;}case 48:#line 452 "m68k-parse.y"{		  op->mode = PRE;		  op->reg = yyvsp[-9].reg;		  op->disp = yyvsp[-6].exp;		  op->index = yyvsp[-5].indexreg;		  op->odisp = yyvsp[-1].exp;		;    break;}case 50:#line 467 "m68k-parse.y"{		  yyval.indexreg.reg = yyvsp[0].reg;		  yyval.indexreg.size = SIZE_UNSPEC;		  yyval.indexreg.scale = 1;		;    break;}case 52:#line 481 "m68k-parse.y"{		  yyval.indexreg.reg = yyvsp[0].reg;		  yyval.indexreg.size = SIZE_UNSPEC;		  yyval.indexreg.scale = 1;		;    break;}case 63:#line 524 "m68k-parse.y"{		  yyval.reg = ZADDR0;		;    break;}case 67:#line 541 "m68k-parse.y"{		  yyval.reg = ZADDR0;		;    break;}case 68:#line 545 "m68k-parse.y"{		  yyval.reg = yyvsp[0].reg;		;    break;}case 69:#line 554 "m68k-parse.y"{		  yyval.exp.exp.X_op = O_absent;		  yyval.exp.size = SIZE_UNSPEC;		;    break;}case 70:#line 559 "m68k-parse.y"{		  yyval.exp = yyvsp[0].exp;		;    break;}case 71:#line 568 "m68k-parse.y"{		  yyval.exp.exp.X_op = O_absent;		  yyval.exp.size = SIZE_UNSPEC;		;    break;}case 72:#line 573 "m68k-parse.y"{		  yyval.exp = yyvsp[-1].exp;		;    break;}case 74:#line 583 "m68k-parse.y"{		  yyval.mask = yyvsp[-2].mask | yyvsp[0].mask;		;    break;}case 75:#line 587 "m68k-parse.y"{		  yyval.mask = (1 << yyvsp[-2].onereg) | yyvsp[0].mask;		;    break;}case 76:#line 599 "m68k-parse.y"{		  yyval.mask = 1 << yyvsp[0].onereg;		;    break;}case 78:#line 604 "m68k-parse.y"{		  yyval.mask = yyvsp[-2].mask | yyvsp[0].mask;		;    break;}case 79:#line 608 "m68k-parse.y"{		  yyval.mask = (1 << yyvsp[-2].onereg) | yyvsp[0].mask;		;    break;}case 80:#line 615 "m68k-parse.y"{		  if (yyvsp[-2].onereg <= yyvsp[0].onereg)		    yyval.mask = (1 << (yyvsp[0].onereg + 1)) - 1 - ((1 << yyvsp[-2].onereg) - 1);		  else		    yyval.mask = (1 << (yyvsp[-2].onereg + 1)) - 1 - ((1 << yyvsp[0].onereg) - 1);		;    break;}case 81:#line 625 "m68k-parse.y"{		  yyval.onereg = yyvsp[0].reg - DATA0;		;    break;}case 82:#line 629 "m68k-parse.y"{		  yyval.onereg = yyvsp[0].reg - ADDR0 + 8;		;    break;}case 83:#line 633 "m68k-parse.y"{		  yyval.onereg = yyvsp[0].reg - FP0 + 16;		;    break;}case 84:#line 637 "m68k-parse.y"{		  if (yyvsp[0].reg == FPI)		    yyval.onereg = 24;		  else if (yyvsp[0].reg == FPS)		    yyval.onereg = 25;		  else		    yyval.onereg = 26;		;    break;}}   /* the action file gets copied in in place of this dollarsign */#line 543 "/usr/share/bison/bison.simple"  yyvsp -= yylen;  yyssp -= yylen;#ifdef YYLSP_NEEDED  yylsp -= yylen;#endif#if YYDEBUG != 0  if (yydebug)    {      short *ssp1 = yyss - 1;      fprintf (stderr, "state stack now");      while (ssp1 != yyssp)	fprintf (stderr, " %d", *++ssp1);      fprintf (stderr, "\n");    }#endif  *++yyvsp = yyval;#ifdef YYLSP_NEEDED  yylsp++;  if (yylen == 0)    {      yylsp->first_line = yylloc.first_line;      yylsp->first_column = yylloc.first_column;      yylsp->last_line = (yylsp-1)->last_line;      yylsp->last_column = (yylsp-1)->last_column;      yylsp->text = 0;    }  else    {      yylsp->last_line = (yylsp+yylen-1)->last_line;      yylsp->last_column = (yylsp+yylen-1)->last_column;    }#endif  /* Now "shift" the result of the reduction.     Determine what state that goes to,     based on the state we popped back to     and the rule number reduced by.  */  yyn = yyr1[yyn];  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)    yystate = yytable[yystate];  else    yystate = yydefgoto[yyn - YYNTBASE];  goto yynewstate;yyerrlab:   /* here on detecting error */  if (! yyerrstatus)    /* If not already recovering from an error, report this error.  */    {      ++yynerrs;#ifdef YYERROR_VERBOSE      yyn = yypact[yystate];      if (yyn > YYFLAG && yyn < YYLAST)	{	  int size = 0;	  char *msg;	  int x, count;	  count = 0;	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */	  for (x = (yyn < 0 ? -yyn : 0);	       x < (sizeof(yytname) / sizeof(char *)); x++)	    if (yycheck[x + yyn] == x)	      size += strlen(yytname[x]) + 15, count++;	  msg = (char *) malloc(size + 15);	  if (msg != 0)	    {	      strcpy(msg, "parse error");	      if (count < 5)		{		  count = 0;		  for (x = (yyn < 0 ? -yyn : 0);		       x < (sizeof(yytname) / sizeof(char *)); x++)		    if (yycheck[x + yyn] == x)		      {			strcat(msg, count == 0 ? ", expecting `" : " or `");			strcat(msg, yytname[x]);			strcat(msg, "'");			count++;		      }		}	      yyerror(msg);	      free(msg);	    }	  else	    yyerror ("parse error; also virtual memory exceeded");	}      else#endif /* YYERROR_VERBOSE */	yyerror("parse error");    }  goto yyerrlab1;yyerrlab1:   /* here on error raised explicitly by an action */  if (yyerrstatus == 3)    {      /* if just tried and failed to reuse lookahead token after an error, discard it.  */      /* return failure if at end of input */      if (yychar == YYEOF)	YYABORT;#if YYDEBUG != 0      if (yydebug)	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);#endif      yychar = YYEMPTY;

⌨️ 快捷键说明

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