📄 as.c
字号:
break;case 30:#line 823 "as.y"{ if (1 != 0 && (pass != 0)) newrelo(yyvsp[0].y_expr.typ, (int)yyvsp[-1].y_word|(0)); emitx(yyvsp[0].y_expr.val, (int)yyvsp[-1].y_word); }break;case 31:#line 831 "as.y"{ if (1 != 0 && (pass != 0)) newrelo(yyvsp[0].y_expr.typ, (int)yyvsp[-3].y_word|(0)); emitx(yyvsp[0].y_expr.val, (int)yyvsp[-3].y_word); }break;case 32:#line 840 "as.y"{ serror("expr syntax err"); yyval.y_expr.val = 0; yyval.y_expr.typ = 0x0000 ; }break;case 33:#line 844 "as.y"{ yyval.y_expr.val = yyvsp[0].y_valu; yyval.y_expr.typ = 0x0001 ;}break;case 34:#line 846 "as.y"{ yyval.y_expr.val = load(yyvsp[0].y_item); last_it = yyvsp[0].y_item; yyval.y_expr.typ = yyvsp[0].y_item->i_type & ~0x0080 ; }break;case 35:#line 851 "as.y"{ if (stringlen != 1) serror("too many chars"); yyval.y_expr.val = stringbuf[0]; yyval.y_expr.typ = 0x0001 ; }break;case 36:#line 857 "as.y"{ yyval.y_expr = yyvsp[-1].y_expr;}break;case 37:#line 859 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val || yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 38:#line 863 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val && yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 39:#line 867 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val | yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 40:#line 871 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val ^ yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 41:#line 875 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val & yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 42:#line 879 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val == yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '>'); }break;case 43:#line 883 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val != yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '>'); }break;case 44:#line 887 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val < yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '>'); }break;case 45:#line 891 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val > yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '>'); }break;case 46:#line 895 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val <= yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '>'); }break;case 47:#line 899 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val >= yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '>'); }break;case 48:#line 903 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val >> yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 49:#line 907 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val << yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 50:#line 911 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val + yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '+'); }break;case 51:#line 915 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val - yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, '-'); }break;case 52:#line 919 "as.y"{ yyval.y_expr.val = (yyvsp[-2].y_expr.val * yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 53:#line 923 "as.y"{ if (yyvsp[0].y_expr.val == 0) { if (pass == 2) serror("divide by zero"); yyval.y_expr.val = 0; } else yyval.y_expr.val = (yyvsp[-2].y_expr.val / yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 54:#line 932 "as.y"{ if (yyvsp[0].y_expr.val == 0) { if (pass == 2) serror("divide by zero"); yyval.y_expr.val = 0; } else yyval.y_expr.val = (yyvsp[-2].y_expr.val % yyvsp[0].y_expr.val); yyval.y_expr.typ = combine(yyvsp[-2].y_expr.typ, yyvsp[0].y_expr.typ, 0); }break;case 55:#line 941 "as.y"{ yyval.y_expr.val = yyvsp[0].y_expr.val; yyval.y_expr.typ = combine(0x0001 , yyvsp[0].y_expr.typ, 0); }break;case 56:#line 945 "as.y"{ yyval.y_expr.val = -yyvsp[0].y_expr.val; yyval.y_expr.typ = combine(0x0001 , yyvsp[0].y_expr.typ, 0); }break;case 57:#line 949 "as.y"{ yyval.y_expr.val = ~yyvsp[0].y_expr.val; yyval.y_expr.typ = combine(0x0001 , yyvsp[0].y_expr.typ, 0); }break;case 58:#line 953 "as.y"{ yyval.y_expr.val = DOTVAL; yyval.y_expr.typ = DOTTYP|0x0400; }break;case 61:#line 961 "as.y"{ if ((yyvsp[0].y_expr.typ & ~0x0080 ) != 0x0001 ) serror("must be absolute"); yyval.y_valu = yyvsp[0].y_expr.val; }break;case 62:#line 968 "as.y"{ yyval.y_valu = 0;}break;case 63:#line 970 "as.y"{ yyval.y_valu = yyvsp[0].y_valu;}break;case 64:#line 974 "as.y"{ yyval.y_valu = 0;}break;case 65:#line 976 "as.y"{ yyval.y_valu = yyvsp[0].y_valu;}break;case 68:#line 995 "as.y"{ emit1(yyvsp[0].y_word);}break;case 69:#line 998 "as.y"{ emit1(yyvsp[0].y_word);}break;case 70:#line 1000 "as.y"{ emit2(yyvsp[0].y_word);}break;case 71:#line 1002 "as.y"{ branch(yyvsp[-1].y_word,yyvsp[0].y_expr);}break;case 72:#line 1004 "as.y"{ pushop(yyvsp[-1].y_word);}break;case 73:#line 1006 "as.y"{ emit1(yyvsp[-1].y_word); newrelo(yyvsp[0].y_expr.typ, 1 ); emit1(yyvsp[0].y_expr.val); }break;case 74:#line 1013 "as.y"{ if (yyvsp[0].y_word!=2) serror("register error"); emit1(yyvsp[-1].y_word+010); }break;case 75:#line 1017 "as.y"{ addop(yyvsp[-1].y_word);}break;case 76:#line 1019 "as.y"{ rolop(yyvsp[-1].y_word);}break;case 77:#line 1021 "as.y"{ incop(yyvsp[-1].y_word);}break;case 78:#line 1023 "as.y"{ imul(yyvsp[-1].y_word);}break;case 79:#line 1025 "as.y"{ regsize(yyvsp[-1].y_word); emit1(0366|(yyvsp[-1].y_word&1)); ea_1(yyvsp[-1].y_word&070);}break;case 80:#line 1027 "as.y"{ regsize(yyvsp[-1].y_word); emit1(0366|(yyvsp[-1].y_word&1)); ea_1(yyvsp[-1].y_word&070);}break;case 81:#line 1029 "as.y"{ callop(yyvsp[-1].y_word&0xFFFF);}break;case 82:#line 1031 "as.y"{ emit1(yyvsp[-3].y_word>>8); newrelo(yyvsp[0].y_expr.typ, 2 ); emit2(yyvsp[0].y_expr.val); newrelo(yyvsp[-2].y_expr.typ, 2 ); emit2(yyvsp[-2].y_expr.val); }break;case 83:#line 1042 "as.y"{ emit1(0377); ea_2(yyvsp[-1].y_word&0xFF);}break;case 84:#line 1044 "as.y"{ if (!(((((yyvsp[-2].y_valu) + 0x8000L) & ~0xFFFFL) == 0))) nofit(); if (!(((((yyvsp[0].y_valu) + 0x80) & ~((int)0xFF)) == 0))) nofit(); emit1(yyvsp[-3].y_word); emit2((int)yyvsp[-2].y_valu); emit1((int)yyvsp[0].y_valu); }break;case 85:#line 1048 "as.y"{ emit1(yyvsp[-3].y_word); ea_2(yyvsp[-2].y_word<<3);}break;case 86:#line 1050 "as.y"{ emit1(yyvsp[-3].y_word); ea_2(yyvsp[0].y_word<<3);}break;case 87:#line 1052 "as.y"{ emit1(0xF); emit1(yyvsp[-3].y_word); ea_2(yyvsp[-2].y_word<<3); }break;case 88:#line 1056 "as.y"{ regsize(1); emit1(0xF); emit1(yyvsp[-1].y_word&07); ea_1(yyvsp[-1].y_word&070); }break;case 89:#line 1060 "as.y"{ if (!(((yyvsp[-2].y_valu & 077) == yyvsp[-2].y_valu))) nofit(); emit1(0330 | yyvsp[-2].y_valu>>3); ea_2((yyvsp[-2].y_valu&7)<<3); }break;case 90:#line 1065 "as.y"{ if (yyvsp[0].y_valu==3) emit1(0314); else { emit1(0315); emit1(yyvsp[0].y_valu); } }break;case 91:#line 1072 "as.y"{ emit1(yyvsp[0].y_word);}break;case 92:#line 1074 "as.y"{ emit1(yyvsp[-1].y_word-1); newrelo(yyvsp[0].y_expr.typ, 2 ); emit2(yyvsp[0].y_expr.val); }break;case 93:#line 1081 "as.y"{ xchg(yyvsp[-1].y_word);}break;case 94:#line 1083 "as.y"{ test(yyvsp[-1].y_word);}break;case 95:#line 1085 "as.y"{ mov(yyvsp[-1].y_word);}break;case 96:#line 1106 "as.y"{ if (!((yyvsp[-1].y_valu & 07) == yyvsp[-1].y_valu)) { serror("illegal index in FP stack"); } yyval.y_valu = yyvsp[-1].y_valu; }break;case 97:#line 1113 "as.y"{ mrg_2 = 6; exp_2 = yyvsp[-1].y_expr; {rel_2 = relonami; relonami = 0;}; }break;case 98:#line 1117 "as.y"{ exp_2.val = 0; exp_2.typ = 0x0001 ; indexed();}break;case 99:#line 1119 "as.y"{ exp_2 = yyvsp[-1].y_expr; indexed(); {rel_2 = relonami; relonami = 0;}; }break;case 100:#line 1124 "as.y"{ mrg_2 = sr_m[yyvsp[-1].y_word];}break;case 101:#line 1126 "as.y"{ mrg_2 = dr_m[yyvsp[-4].y_word][yyvsp[-1].y_word];}break;case 103:#line 1130 "as.y"{ mrg_2 = yyvsp[0].y_word | 0300;}break;case 104:#line 1132 "as.y"{ mrg_2 = yyvsp[0].y_word | 0310;}break;case 105:#line 1134 "as.y"{ mrg_2 = yyvsp[0].y_word | 020;}break;case 106:#line 1136 "as.y"{ mrg_2 = 040; exp_2 = yyvsp[0].y_expr; {rel_2 = relonami; relonami = 0;}; }break;case 107:#line 1141 "as.y"{ mrg_1 = mrg_2; exp_1 = exp_2; {rel_1 = rel_2; rel_2 = 0;}; }break;#line 1848 "y.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) {#if YYDEBUG if (yydebug) printf("yydebug: after reduction, shifting from state 0 to\ state %d\n", YYFINAL);#endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0;#if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("yydebug: state %d, reading %d (%s)\n", YYFINAL, yychar, yys); }#endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym];#if YYDEBUG if (yydebug) printf("yydebug: after reduction, shifting from state %d \to state %d\n", *yyssp, yystate);#endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop;yyoverflow: yyerror("yacc stack overflow");yyabort: return (1);yyaccept: return (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -