|
|
1.1 ! root 1: ! 2: #line 1 "asm.y" ! 3: ! 4: #include <asm.h> ! 5: /* ! 6: * count macro parms. ! 7: */ ! 8: static ! 9: parmCt() ! 10: { ! 11: if(NULL == trueMac) { ! 12: yyerror(".parmct not in macro"); ! 13: /* \fB.parmct\fR returns the number of ! 14: * parameters in the current macro. */ ! 15: return(0); ! 16: } ! 17: else ! 18: return(countList(trueMac->parms)); ! 19: } ! 20: ! 21: /* ! 22: * Verify that 2 symbols have the same segment. ! 23: */ ! 24: static void ! 25: ckseg(s1, s2) ! 26: sym *s1, *s2; ! 27: { ! 28: if(s1->sg != s2->sg) ! 29: yyerror("Arithmetic between addresses on different segments"); ! 30: /* You may only add or subtract addresses if they ! 31: * are in the same segment. */ ! 32: } ! 33: ! 34: /* ! 35: * Create Immediate exps. ! 36: */ ! 37: static expr * ! 38: setImm(val, symRef) ! 39: long val; ! 40: sym *symRef; ! 41: { ! 42: register expr *oper; ! 43: register short w; ! 44: ! 45: oper = xalloc(); ! 46: oper->mode = T_IMM; ! 47: if (NULL != (oper->ref = symRef)) ! 48: oper->ref = symRef->ref; ! 49: w = oper->exp = val; ! 50: if(w == val) ! 51: oper->size = 2; ! 52: else ! 53: oper->size = 4; ! 54: return(oper); ! 55: } ! 56: ! 57: /* ! 58: * Set up for most addressing modes. ! 59: */ ! 60: static expr * ! 61: qbild(val, mode, r1, r2, scale, symRef) ! 62: long val; ! 63: int mode; ! 64: psym *r1, *r2; ! 65: long scale; ! 66: sym *symRef; ! 67: { ! 68: register expr *oper; ! 69: char i; ! 70: ! 71: if (NULL != r1 && T_R != mode) { ! 72: switch((int)r1->size) { ! 73: case 2: ! 74: lflags |= A_SHORT; ! 75: if (!scale) ! 76: break; ! 77: case 1: ! 78: regerror(r1); ! 79: break; ! 80: case 4: ! 81: lflags |= A_LONG; ! 82: break; ! 83: } ! 84: ! 85: if (ORD_REG != r1->flag) /* cant ind via ctl regs */ ! 86: regerror(r1); ! 87: ! 88: if (NULL != r2) { ! 89: if (ORD_REG != r2->flag) ! 90: regerror(r2); ! 91: if (r1->size != r2->size) ! 92: yyerror("Mixed length addressing registers"); ! 93: /* Addressing registers must both be the same length. */ ! 94: } ! 95: } ! 96: else if ((T_R == mode) && (r1->flag == ORD_REG)) { ! 97: switch ((int)r1->size) { ! 98: case 4: ! 99: lflags |= O_LONG; ! 100: break; ! 101: case 2: ! 102: lflags |= O_SHORT; ! 103: } ! 104: } ! 105: ! 106: oper = xalloc(); ! 107: oper->exp = val; ! 108: oper->r1 = r1; ! 109: oper->r2 = r2; ! 110: oper->mode = mode; ! 111: ! 112: i = scale; ! 113: if (i != scale) ! 114: i = 3; /* set a bad scale */ ! 115: ! 116: switch (i) { ! 117: case 0: ! 118: case 1: /* for generated code */ ! 119: oper->scale = 0; break; ! 120: case 2: ! 121: oper->scale = 1; break; ! 122: case 4: ! 123: oper->scale = 2; break; ! 124: case 8: ! 125: oper->scale = 3; break; ! 126: default: ! 127: yyerror("Bad scale"); ! 128: /* Address scale must be 0, 1, 2, 4, or 8. */ ! 129: } ! 130: ! 131: if (NULL != (oper->ref = symRef)) ! 132: oper->ref = symRef->ref; ! 133: return(oper); ! 134: } ! 135: ! 136: /* ! 137: * Floating point register expr. ! 138: */ ! 139: static expr * ! 140: fbild(regno) ! 141: long regno; ! 142: { ! 143: register expr *oper; ! 144: ! 145: if (regno < 0 || regno > 7) { ! 146: regno &= 7; ! 147: yyerror("Invalid floating point register number"); /**/ ! 148: } ! 149: ! 150: oper = xalloc(); ! 151: oper->exp = regno; ! 152: oper->mode = T_FP; ! 153: return (oper); ! 154: } ! 155: ! 156: /* ! 157: * Report register error. ! 158: */ ! 159: regerror(rg) ! 160: psym *rg; ! 161: { ! 162: yyerror("%s is an improper register in this context", rg->name); /**/ ! 163: } ! 164: ! 165: /* ! 166: * Concatinate strings. ! 167: */ ! 168: static char * ! 169: concat(s1, s2) ! 170: char *s1, *s2; ! 171: { ! 172: long l; ! 173: unsigned short u; ! 174: char *res; ! 175: ! 176: u = l = (long)strlen(s1) + (long)strlen(s2) + 1; ! 177: if(u != l) { ! 178: yyerror("Length %ld string range exceeded", l); ! 179: /* Strings may not exceed 32 kilobytes. */ ! 180: return(galloc(1)); ! 181: } ! 182: res = galloc(u); ! 183: sprintf(res, "%s%s", s1, s2); ! 184: return(res); ! 185: } ! 186: ! 187: /* ! 188: * Substring. ! 189: * Assumes that all strings are created from unsigned lengths. ! 190: */ ! 191: static char * ! 192: substr(s, from, len) ! 193: char *s; ! 194: long from, len; ! 195: { ! 196: register char *p, *res; ! 197: unsigned short l; ! 198: ! 199: l = strlen(s); ! 200: s += from; ! 201: from = l - from; /* from now len to end */ ! 202: ! 203: if(len > from) ! 204: len = from; /* since strlen fit unsigned len must */ ! 205: if(len < 0) ! 206: len = 0; ! 207: ! 208: for(p = res = galloc((unsigned)(len + 1)); len--; ) ! 209: *p++ = *s++; ! 210: return(res); ! 211: } ! 212: ! 213: /* ! 214: * String search. ! 215: */ ! 216: static ! 217: stringSearch(s1, s2) ! 218: char *s1, *s2; ! 219: { ! 220: char *p; ! 221: ! 222: if(NULL == (p = strstr(s1, s2))) ! 223: return(-1); ! 224: return(p - s1); ! 225: } ! 226: ! 227: /* ! 228: * Do long comparisons. ! 229: * < > <= >= != == compare operator ! 230: * 1 2 5 6 3 4 t ! 231: */ ! 232: static ! 233: compare(t, v) ! 234: int t; ! 235: long v; ! 236: { ! 237: return(((v < 0) ? t : (v > 0) ? (t >> 1) : (t >> 2)) & 1); ! 238: } ! 239: ! 240: /* ! 241: * Do double comparisons. ! 242: * < > <= >= != == compare operator ! 243: * 1 2 5 6 3 4 t ! 244: */ ! 245: static ! 246: fcompare(t, v) ! 247: int t; ! 248: double v; ! 249: { ! 250: return(((v < 0.0) ? t : (v > 0.0) ? (t >> 1) : (t >> 2)) & 1); ! 251: } ! 252: ! 253: static void ! 254: unmatched(c) ! 255: { ! 256: yyerror("Unmatched '%c'", c); ! 257: /* A delimeter, [, (, ), or ] is unmatched in this command. */ ! 258: } ! 259: ! 260: ! 261: #include "y_tab.h" ! 262: #define YYCLEARIN yychar = -1000 ! 263: #define YYERROK yyerrflag = 0 ! 264: extern int yychar; ! 265: extern short yyerrflag; ! 266: #ifndef YYMAXDEPTH ! 267: #define YYMAXDEPTH 150 ! 268: #endif ! 269: YYSTYPE yyval, yylval; ! 270: #ifdef YYTNAMES ! 271: struct yytname yytnames[50] = ! 272: { ! 273: "$end", -1, ! 274: "error", -2, ! 275: "PC", 256, ! 276: "NUMBER", 257, ! 277: "FNUM", 258, ! 278: "COMPARISON", 312, ! 279: "OP", 260, ! 280: "DATA", 261, ! 281: "CMD", 262, ! 282: "DCMD", 263, ! 283: "ICMD", 264, ! 284: "NCMD", 265, ! 285: "ECMD", 266, ! 286: "ECMDX", 267, ! 287: "IDENTIFIER", 268, ! 288: "REG", 269, ! 289: "DEFINED", 320, ! 290: "SIZEOF", 321, ! 291: "SEGMENT", 322, ! 292: "LOCATION", 323, ! 293: "PLUS", 315, ! 294: "MINUS", 316, ! 295: "TIMES", 317, ! 296: "DIVIDE", 318, ! 297: "REM", 319, ! 298: "LSHIFT", 313, ! 299: "RSHIFT", 314, ! 300: "AND", 311, ! 301: "OR", 309, ! 302: "XOR", 310, ! 303: "COMMA", 305, ! 304: "LPAREN", 328, ! 305: "RPAREN", 286, ! 306: "LBRACK", 329, ! 307: "RBRACK", 288, ! 308: "AT", 307, ! 309: "D_SIGN", 290, ! 310: "NOT", 324, ! 311: "BANG", 326, ! 312: "COLON", 306, ! 313: "PARMCT", 294, ! 314: "TOSTRING", 330, ! 315: "TONUMBER", 331, ! 316: "TOFLOAT", 332, ! 317: "FSTACK", 298, ! 318: "NL", 333, ! 319: "TOKEN", 327, ! 320: "P_SIGN", 308, ! 321: "LEN", 325, ! 322: NULL ! 323: } ; ! 324: #endif ! 325: #define YYACTSH 13 ! 326: #define YYAMASK 017777 ! 327: #define YYSHIFTACT 0 ! 328: #define YYREDACT 1 ! 329: #define YYACCEPTACT 2 ! 330: #define YYERRACT 3 ! 331: #define YYGOTO 4 ! 332: #define YYPACTION 5 ! 333: #define YYEOFVAL (-1) ! 334: #define YYERRVAL (-2) ! 335: #define YYOTHERS (-1000) ! 336: ! 337: unsigned char yypdnt[108] = { ! 338: 0, 1, 1, 2, 2, 2, 2, 2, ! 339: 2, 2, 2, 2, 2, 2, 2, 7, ! 340: 7, 7, 6, 6, 6, 6, 6, 4, ! 341: 4, 4, 5, 3, 3, 8, 8, 8, ! 342: 8, 13, 13, 14, 14, 14, 14, 14, ! 343: 14, 14, 14, 14, 14, 14, 14, 14, ! 344: 14, 14, 14, 14, 14, 14, 14, 14, ! 345: 14, 9, 9, 9, 9, 9, 11, 11, ! 346: 11, 11, 11, 11, 11, 11, 11, 11, ! 347: 11, 11, 11, 11, 11, 11, 11, 11, ! 348: 11, 11, 11, 11, 11, 11, 11, 11, ! 349: 11, 11, 11, 11, 12, 12, 12, 12, ! 350: 12, 12, 12, 10, 10, 10, 10, 10, ! 351: 10, 10, 10, 10 ! 352: }; ! 353: unsigned char yypn[108] = { ! 354: 2, 1, 2, 4, 4, 6, 6, 3, ! 355: 3, 4, 4, 4, 4, 2, 2, 3, ! 356: 1, 0, 1, 1, 1, 1, 3, 1, ! 357: 3, 0, 1, 0, 1, 3, 1, 2, ! 358: 0, 1, 3, 1, 1, 4, 3, 5, ! 359: 6, 5, 7, 4, 6, 7, 6, 8, ! 360: 4, 6, 7, 6, 8, 1, 1, 2, ! 361: 2, 1, 3, 3, 3, 3, 1, 3, ! 362: 3, 3, 3, 3, 3, 2, 2, 2, ! 363: 2, 2, 1, 3, 3, 3, 3, 3, ! 364: 3, 3, 3, 3, 3, 2, 2, 2, ! 365: 4, 3, 2, 2, 1, 3, 3, 6, ! 366: 4, 2, 2, 1, 3, 3, 3, 3, ! 367: 3, 2, 2, 2 ! 368: }; ! 369: unsigned char yypgo[15] = { ! 370: 0, 0, 2, 6, 8, 14, 20, 28, ! 371: 34, 38, 76, 114, 198, 228, 232 ! 372: }; ! 373: unsigned int yygo[236] = { ! 374: YYOTHERS, 0x3, 0x3, 0x8, YYOTHERS, 0x4, YYOTHERS, 0x5, ! 375: 0xc, 0x38, 0x7d, 0xb2, YYOTHERS, 0x36, 0xf, 0x3c, ! 376: 0x10, 0x3d, YYOTHERS, 0x37, 0xd, 0x39, 0x7b, 0xb1, ! 377: 0x80, 0xb3, YYOTHERS, 0x2f, 0x79, 0xb0, 0x81, 0xb4, ! 378: YYOTHERS, 0x30, 0x78, 0xaf, YYOTHERS, 0x28, 0x9, 0x29, ! 379: 0xa, 0x31, 0xd, 0x31, 0x18, 0x42, 0x19, 0x44, ! 380: 0x1a, 0x45, 0x1c, 0x29, 0x1d, 0x4a, 0x1f, 0x50, ! 381: 0x3f, 0x29, 0x5e, 0x90, 0x60, 0x92, 0x68, 0x9c, ! 382: 0x78, 0x29, 0x79, 0x31, 0x7b, 0x31, 0x80, 0x31, ! 383: 0x81, 0x31, YYOTHERS, 0x46, 0xa, 0x32, 0xd, 0x32, ! 384: 0x1b, 0x47, 0x1d, 0x4b, 0x23, 0x54, 0x24, 0x58, ! 385: 0x56, 0x8c, 0x57, 0x8d, 0x62, 0x96, 0x63, 0x97, ! 386: 0x64, 0x98, 0x65, 0x99, 0x66, 0x9a, 0x79, 0x32, ! 387: 0x7b, 0x32, 0x80, 0x32, 0x81, 0x32, 0x8b, 0x8d, ! 388: YYOTHERS, 0x2a, 0x9, 0x2b, 0x18, 0x43, 0x19, 0x43, ! 389: 0x1a, 0x43, 0x1b, 0x48, 0x1c, 0x2b, 0x1d, 0x4c, ! 390: 0x1f, 0x51, 0x20, 0x52, 0x21, 0x53, 0x23, 0x55, ! 391: 0x25, 0x5a, 0x3f, 0x2b, 0x5c, 0x8f, 0x5e, 0x43, ! 392: 0x5f, 0x91, 0x60, 0x93, 0x67, 0x9b, 0x68, 0x9d, ! 393: 0x69, 0x9e, 0x6a, 0x9f, 0x6b, 0xa0, 0x6c, 0xa1, ! 394: 0x6d, 0xa2, 0x6e, 0xa3, 0x6f, 0xa4, 0x70, 0xa5, ! 395: 0x71, 0xa6, 0x75, 0xac, 0x76, 0xad, 0x78, 0x2b, ! 396: 0x88, 0xb6, 0xb7, 0xc7, 0xb9, 0xc9, 0xbc, 0xcc, ! 397: 0xbf, 0xce, 0xc4, 0xcf, 0xca, 0xd4, 0xcd, 0xd8, ! 398: 0xd1, 0xdb, 0xd5, 0xdd, YYOTHERS, 0x33, 0xa, 0x34, ! 399: 0xd, 0x34, 0x1d, 0x4d, 0x24, 0x59, 0x25, 0x5b, ! 400: 0x57, 0x8e, 0x73, 0xaa, 0x74, 0xab, 0x77, 0xae, ! 401: 0x79, 0x34, 0x7b, 0x34, 0x80, 0x34, 0x81, 0x34, ! 402: 0xa9, 0x8e, YYOTHERS, 0x2c, 0x1c, 0x49, YYOTHERS, 0x2d, ! 403: 0x3f, 0x83, YYOTHERS, 0x2e ! 404: }; ! 405: unsigned short yypa[225] = { ! 406: 0, 22, 26, 28, 52, 54, 74, 76, ! 407: 80, 82, 128, 162, 162, 166, 200, 204, ! 408: 210, 214, 216, 218, 220, 224, 226, 230, ! 409: 166, 166, 166, 166, 236, 166, 278, 166, ! 410: 166, 166, 284, 166, 286, 166, 300, 304, ! 411: 306, 310, 320, 332, 358, 370, 374, 376, ! 412: 380, 384, 392, 404, 430, 442, 444, 448, ! 413: 452, 456, 460, 462, 464, 468, 472, 474, ! 414: 516, 518, 520, 522, 546, 548, 550, 558, ! 415: 560, 562, 564, 574, 588, 614, 628, 634, ! 416: 638, 646, 670, 672, 674, 676, 678, 688, ! 417: 702, 704, 706, 708, 166, 710, 166, 166, ! 418: 166, 712, 678, 678, 678, 678, 678, 166, ! 419: 166, 166, 166, 166, 166, 166, 166, 166, ! 420: 166, 166, 718, 724, 724, 166, 166, 732, ! 421: 740, 128, 784, 166, 786, 162, 788, 790, ! 422: 166, 128, 792, 794, 796, 798, 800, 802, ! 423: 804, 840, 842, 678, 558, 846, 858, 866, ! 424: 892, 898, 906, 908, 916, 922, 926, 936, ! 425: 942, 948, 950, 952, 968, 970, 978, 986, ! 426: 988, 990, 992, 1004, 1016, 1034, 1056, 1076, ! 427: 1082, 732, 1086, 1092, 1096, 1124, 1150, 1156, ! 428: 1158, 1160, 1162, 1164, 1168, 1172, 1178, 166, ! 429: 1204, 1206, 1242, 1244, 1248, 1284, 1286, 166, ! 430: 1290, 1292, 1294, 1296, 166, 1298, 1300, 1302, ! 431: 1328, 1334, 166, 1360, 1366, 166, 1392, 1418, ! 432: 1444, 166, 1446, 1448, 1450, 166, 1476, 1478, ! 433: 1480, 1506, 1508, 1510, 1536, 1538, 1564, 1566, ! 434: 1568 ! 435: }; ! 436: unsigned int yyact[1570] = { ! 437: 0x2, 0x147, 0x201b, 0x104, 0x201b, 0x105, 0x201b, 0x106, ! 438: 0x201b, 0x107, 0x201b, 0x108, 0x201b, 0x109, 0x201b, 0x10a, ! 439: 0x201b, 0x10b, 0x201b, 0x14d, 0x1, YYOTHERS, 0x6, 0x14d, ! 440: 0x6000, YYOTHERS, 0x201c, YYOTHERS, 0x7, YYEOFVAL, 0x2, 0x147, ! 441: 0x201b, 0x104, 0x201b, 0x105, 0x201b, 0x106, 0x201b, 0x107, ! 442: 0x201b, 0x108, 0x201b, 0x109, 0x201b, 0x10a, 0x201b, 0x10b, ! 443: 0x201b, 0x14d, 0x1, YYOTHERS, 0x2001, YYOTHERS, 0x9, 0x104, ! 444: 0xa, 0x105, 0xb, 0x106, 0xc, 0x107, 0xd, 0x108, ! 445: 0xe, 0x109, 0xf, 0x10a, 0x10, 0x10b, 0x11, 0x14d, ! 446: 0x6000, YYOTHERS, 0x200e, YYOTHERS, 0x4000, YYEOFVAL, 0x6000, YYOTHERS, ! 447: 0x2002, YYOTHERS, 0x12, 0x101, 0x13, 0x102, 0x14, 0x104, ! 448: 0x15, 0x10c, 0x16, 0x10d, 0x17, 0x140, 0x18, 0x141, ! 449: 0x19, 0x142, 0x1a, 0x143, 0x1b, 0x13c, 0x1c, 0x13d, ! 450: 0x1d, 0x148, 0x1e, 0x149, 0x1f, 0x122, 0x20, 0x144, ! 451: 0x21, 0x146, 0x22, 0x126, 0x23, 0x14a, 0x24, 0x14b, ! 452: 0x25, 0x14c, 0x26, 0x12a, 0x27, 0x147, 0x2020, YYOTHERS, ! 453: 0x12, 0x101, 0x13, 0x102, 0x15, 0x10c, 0x17, 0x140, ! 454: 0x18, 0x141, 0x19, 0x142, 0x1a, 0x143, 0x1b, 0x13c, ! 455: 0x1d, 0x148, 0x20, 0x144, 0x21, 0x146, 0x22, 0x126, ! 456: 0x23, 0x14a, 0x24, 0x14b, 0x25, 0x14c, 0x27, 0x147, ! 457: 0x2011, YYOTHERS, 0x35, 0x147, 0x2019, YYOTHERS, 0x12, 0x101, ! 458: 0x13, 0x102, 0x15, 0x10c, 0x17, 0x140, 0x18, 0x141, ! 459: 0x19, 0x142, 0x1a, 0x143, 0x1b, 0x13c, 0x1d, 0x148, ! 460: 0x20, 0x144, 0x21, 0x146, 0x22, 0x126, 0x23, 0x14a, ! 461: 0x24, 0x14b, 0x25, 0x14c, 0x27, 0x147, 0x6000, YYOTHERS, ! 462: 0x3a, 0x14d, 0x6000, YYOTHERS, 0x3b, 0x14d, 0x35, 0x147, ! 463: 0x6000, YYOTHERS, 0x35, 0x147, 0x6000, YYOTHERS, 0x200d, YYOTHERS, ! 464: 0x203e, YYOTHERS, 0x2063, YYOTHERS, 0x3e, 0x14d, 0x6000, YYOTHERS, ! 465: 0x2039, YYOTHERS, 0x3f, 0x132, 0x2023, YYOTHERS, 0x40, 0x101, ! 466: 0x41, 0x10c, 0x6000, YYOTHERS, 0x12, 0x101, 0x13, 0x102, ! 467: 0x15, 0x10c, 0x16, 0x10d, 0x17, 0x140, 0x18, 0x141, ! 468: 0x19, 0x142, 0x1a, 0x143, 0x1b, 0x13c, 0x1d, 0x148, ! 469: 0x1e, 0x149, 0x1f, 0x122, 0x20, 0x144, 0x21, 0x146, ! 470: 0x22, 0x126, 0x23, 0x14a, 0x24, 0x14b, 0x25, 0x14c, ! 471: 0x26, 0x12a, 0x27, 0x147, 0x6000, YYOTHERS, 0x4e, 0x10d, ! 472: 0x4f, 0x131, 0x6000, YYOTHERS, 0x204a, YYOTHERS, 0x13, 0x102, ! 473: 0x56, 0x13c, 0x57, 0x148, 0x23, 0x14a, 0x25, 0x14c, ! 474: 0x27, 0x147, 0x6000, YYOTHERS, 0x5c, 0x149, 0x2024, YYOTHERS, ! 475: 0x205c, YYOTHERS, 0x5d, 0x14d, 0x6000, YYOTHERS, 0x5e, 0x138, ! 476: 0x5f, 0x13b, 0x60, 0x13c, 0x61, 0x149, 0x2035, YYOTHERS, ! 477: 0x62, 0x138, 0x63, 0x13b, 0x64, 0x13c, 0x65, 0x13d, ! 478: 0x66, 0x13e, 0x6000, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, ! 479: 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, ! 480: 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, ! 481: 0x71, 0x136, 0x72, 0x149, 0x2036, YYOTHERS, 0x73, 0x138, ! 482: 0x74, 0x13b, 0x75, 0x148, 0x76, 0x149, 0x77, 0x133, ! 483: 0x6000, YYOTHERS, 0x78, 0x131, 0x201e, YYOTHERS, 0x2021, YYOTHERS, ! 484: 0x79, 0x131, 0x2010, YYOTHERS, 0x7a, 0x14d, 0x6000, YYOTHERS, ! 485: 0x5e, 0x138, 0x5f, 0x13b, 0x60, 0x13c, 0x2012, YYOTHERS, ! 486: 0x62, 0x138, 0x63, 0x13b, 0x64, 0x13c, 0x65, 0x13d, ! 487: 0x66, 0x13e, 0x2013, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, ! 488: 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, ! 489: 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, ! 490: 0x71, 0x136, 0x7b, 0x134, 0x2014, YYOTHERS, 0x73, 0x138, ! 491: 0x74, 0x13b, 0x75, 0x148, 0x76, 0x149, 0x77, 0x133, ! 492: 0x2015, YYOTHERS, 0x201a, YYOTHERS, 0x7c, 0x14d, 0x6000, YYOTHERS, ! 493: 0x7d, 0x131, 0x2017, YYOTHERS, 0x7e, 0x14d, 0x6000, YYOTHERS, ! 494: 0x7f, 0x14d, 0x6000, YYOTHERS, 0x2008, YYOTHERS, 0x2007, YYOTHERS, ! 495: 0x80, 0x131, 0x6000, YYOTHERS, 0x81, 0x131, 0x6000, YYOTHERS, ! 496: 0x200c, YYOTHERS, 0x12, 0x101, 0x13, 0x102, 0x15, 0x10c, ! 497: 0x82, 0x10d, 0x17, 0x140, 0x18, 0x141, 0x19, 0x142, ! 498: 0x1a, 0x143, 0x1b, 0x13c, 0x1d, 0x148, 0x1e, 0x149, ! 499: 0x1f, 0x122, 0x20, 0x144, 0x21, 0x146, 0x22, 0x126, ! 500: 0x23, 0x14a, 0x24, 0x14b, 0x25, 0x14c, 0x26, 0x12a, ! 501: 0x27, 0x147, 0x6000, YYOTHERS, 0x2049, YYOTHERS, 0x2048, YYOTHERS, ! 502: 0x2045, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, ! 503: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, ! 504: 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, ! 505: 0x6000, YYOTHERS, 0x2047, YYOTHERS, 0x2046, YYOTHERS, 0x5e, 0x138, ! 506: 0x5f, 0x13b, 0x60, 0x13c, 0x6000, YYOTHERS, 0x2069, YYOTHERS, ! 507: 0x2055, YYOTHERS, 0x201f, YYOTHERS, 0x5e, 0x138, 0x5f, 0x13b, ! 508: 0x60, 0x13c, 0x84, 0x11e, 0x6000, YYOTHERS, 0x62, 0x138, ! 509: 0x63, 0x13b, 0x64, 0x13c, 0x65, 0x13d, 0x66, 0x13e, ! 510: 0x85, 0x11e, 0x6000, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, ! 511: 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, ! 512: 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, ! 513: 0x71, 0x136, 0x86, 0x11e, 0x6000, YYOTHERS, 0x73, 0x138, ! 514: 0x74, 0x13b, 0x75, 0x148, 0x87, 0x11e, 0x76, 0x149, ! 515: 0x77, 0x133, 0x6000, YYOTHERS, 0x88, 0x131, 0x89, 0x120, ! 516: 0x6000, YYOTHERS, 0x8a, 0x10d, 0x6000, YYOTHERS, 0x5e, 0x138, ! 517: 0x5f, 0x13b, 0x60, 0x13c, 0x2038, YYOTHERS, 0x67, 0x138, ! 518: 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, ! 519: 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, ! 520: 0x70, 0x135, 0x71, 0x136, 0x2037, YYOTHERS, 0x2057, YYOTHERS, ! 521: 0x2056, YYOTHERS, 0x2062, YYOTHERS, 0x2061, YYOTHERS, 0x13, 0x102, ! 522: 0x56, 0x13c, 0x8b, 0x148, 0x25, 0x14c, 0x6000, YYOTHERS, ! 523: 0x13, 0x102, 0x56, 0x13c, 0x57, 0x148, 0x23, 0x14a, ! 524: 0x25, 0x14c, 0x27, 0x147, 0x6000, YYOTHERS, 0x205b, YYOTHERS, ! 525: 0x205a, YYOTHERS, 0x206b, YYOTHERS, 0x206a, YYOTHERS, 0x200b, YYOTHERS, ! 526: 0x94, 0x10d, 0x95, 0x131, 0x6000, YYOTHERS, 0xa7, 0x10d, ! 527: 0xa8, 0x131, 0x6000, YYOTHERS, 0xa9, 0x148, 0x23, 0x14a, ! 528: 0x27, 0x147, 0x6000, YYOTHERS, 0xa9, 0x148, 0x23, 0x14a, ! 529: 0x27, 0x147, 0x6000, YYOTHERS, 0x12, 0x101, 0x13, 0x102, ! 530: 0x15, 0x10c, 0x16, 0x10d, 0x17, 0x140, 0x18, 0x141, ! 531: 0x19, 0x142, 0x1a, 0x143, 0x1b, 0x13c, 0x1c, 0x13d, ! 532: 0x1d, 0x148, 0x1e, 0x149, 0x1f, 0x122, 0x20, 0x144, ! 533: 0x21, 0x146, 0x22, 0x126, 0x23, 0x14a, 0x24, 0x14b, ! 534: 0x25, 0x14c, 0x26, 0x12a, 0x27, 0x147, 0x2020, YYOTHERS, ! 535: 0x200a, YYOTHERS, 0x2003, YYOTHERS, 0x2004, YYOTHERS, 0x2009, YYOTHERS, ! 536: 0x2023, YYOTHERS, 0x2022, YYOTHERS, 0x203a, YYOTHERS, 0x2064, YYOTHERS, ! 537: 0x203f, YYOTHERS, 0x205d, YYOTHERS, 0x12, 0x101, 0x13, 0x102, ! 538: 0x15, 0x10c, 0xb5, 0x10d, 0x17, 0x140, 0x18, 0x141, ! 539: 0x19, 0x142, 0x1a, 0x143, 0x1b, 0x13c, 0x1d, 0x148, ! 540: 0x20, 0x144, 0x21, 0x146, 0x22, 0x126, 0x23, 0x14a, ! 541: 0x24, 0x14b, 0x25, 0x14c, 0x27, 0x147, 0x6000, YYOTHERS, ! 542: 0x2026, YYOTHERS, 0xb7, 0x131, 0x6000, YYOTHERS, 0x63, 0x13b, ! 543: 0x64, 0x13c, 0x65, 0x13d, 0x66, 0x13e, 0x85, 0x11e, ! 544: 0x6000, YYOTHERS, 0x74, 0x13b, 0x75, 0x148, 0x87, 0x11e, ! 545: 0x6000, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, ! 546: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, ! 547: 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, ! 548: 0xb8, 0x120, 0x6000, YYOTHERS, 0x5f, 0x13b, 0x60, 0x13c, ! 549: 0x2041, YYOTHERS, 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, ! 550: 0x203b, YYOTHERS, 0x2040, YYOTHERS, 0x6a, 0x13d, 0x6b, 0x13e, ! 551: 0x6c, 0x13f, 0x203c, YYOTHERS, 0xb9, 0x131, 0xba, 0x120, ! 552: 0x6000, YYOTHERS, 0xbb, 0x10d, 0x6000, YYOTHERS, 0x63, 0x13b, ! 553: 0x64, 0x13c, 0x65, 0x13d, 0x66, 0x13e, 0x2044, YYOTHERS, ! 554: 0x65, 0x13d, 0x66, 0x13e, 0x2065, YYOTHERS, 0x65, 0x13d, ! 555: 0x66, 0x13e, 0x2066, YYOTHERS, 0x2067, YYOTHERS, 0x2068, YYOTHERS, ! 556: 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, ! 557: 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, 0x2042, YYOTHERS, ! 558: 0x203d, YYOTHERS, 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, ! 559: 0x204b, YYOTHERS, 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, ! 560: 0x204c, YYOTHERS, 0x204d, YYOTHERS, 0x204e, YYOTHERS, 0x204f, YYOTHERS, ! 561: 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, ! 562: 0x6c, 0x13f, 0x2050, YYOTHERS, 0x68, 0x13b, 0x69, 0x13c, ! 563: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x2051, YYOTHERS, ! 564: 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, ! 565: 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, ! 566: 0x2052, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, ! 567: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, ! 568: 0x6e, 0x13a, 0x6f, 0x137, 0x71, 0x136, 0x2053, YYOTHERS, ! 569: 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, ! 570: 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, ! 571: 0x6f, 0x137, 0x2054, YYOTHERS, 0xbc, 0x131, 0xbd, 0x120, ! 572: 0x6000, YYOTHERS, 0xbe, 0x10d, 0x6000, YYOTHERS, 0x74, 0x13b, ! 573: 0x75, 0x148, 0x2043, YYOTHERS, 0x75, 0x148, 0x205e, YYOTHERS, ! 574: 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, ! 575: 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, ! 576: 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, 0xbf, 0x131, ! 577: 0xc0, 0x11e, 0x6000, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, ! 578: 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, ! 579: 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, ! 580: 0x71, 0x136, 0xc1, 0x120, 0x6000, YYOTHERS, 0x74, 0x13b, ! 581: 0x75, 0x148, 0x2059, YYOTHERS, 0x201d, YYOTHERS, 0x200f, YYOTHERS, ! 582: 0x2016, YYOTHERS, 0x2018, YYOTHERS, 0xc2, 0x14d, 0x6000, YYOTHERS, ! 583: 0xc3, 0x14d, 0x6000, YYOTHERS, 0xc4, 0x131, 0xc5, 0x120, ! 584: 0x6000, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, ! 585: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, ! 586: 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, ! 587: 0xc6, 0x120, 0x6000, YYOTHERS, 0x2025, YYOTHERS, 0x12, 0x101, ! 588: 0x13, 0x102, 0x15, 0x10c, 0xc8, 0x10d, 0x17, 0x140, ! 589: 0x18, 0x141, 0x19, 0x142, 0x1a, 0x143, 0x1b, 0x13c, ! 590: 0x1d, 0x148, 0x20, 0x144, 0x21, 0x146, 0x22, 0x126, ! 591: 0x23, 0x14a, 0x24, 0x14b, 0x25, 0x14c, 0x27, 0x147, ! 592: 0x6000, YYOTHERS, 0x2030, YYOTHERS, 0xca, 0x131, 0x6000, YYOTHERS, ! 593: 0x12, 0x101, 0x13, 0x102, 0x15, 0x10c, 0xcb, 0x10d, ! 594: 0x17, 0x140, 0x18, 0x141, 0x19, 0x142, 0x1a, 0x143, ! 595: 0x1b, 0x13c, 0x1d, 0x148, 0x20, 0x144, 0x21, 0x146, ! 596: 0x22, 0x126, 0x23, 0x14a, 0x24, 0x14b, 0x25, 0x14c, ! 597: 0x27, 0x147, 0x6000, YYOTHERS, 0x202b, YYOTHERS, 0xcd, 0x131, ! 598: 0x6000, YYOTHERS, 0x2060, YYOTHERS, 0x2058, YYOTHERS, 0x2005, YYOTHERS, ! 599: 0x2006, YYOTHERS, 0x2029, YYOTHERS, 0x2027, YYOTHERS, 0x67, 0x138, ! 600: 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, ! 601: 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, ! 602: 0x70, 0x135, 0x71, 0x136, 0xd0, 0x120, 0x6000, YYOTHERS, ! 603: 0xd1, 0x131, 0xd2, 0x120, 0x6000, YYOTHERS, 0x67, 0x138, ! 604: 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, ! 605: 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, ! 606: 0x70, 0x135, 0x71, 0x136, 0xd3, 0x120, 0x6000, YYOTHERS, ! 607: 0xd5, 0x131, 0xd6, 0x120, 0x6000, YYOTHERS, 0x67, 0x138, ! 608: 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, ! 609: 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, ! 610: 0x70, 0x135, 0x71, 0x136, 0xd7, 0x120, 0x6000, YYOTHERS, ! 611: 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, ! 612: 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, ! 613: 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, 0xd9, 0x11e, ! 614: 0x6000, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, ! 615: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, ! 616: 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, ! 617: 0xda, 0x120, 0x6000, YYOTHERS, 0x2028, YYOTHERS, 0x2033, YYOTHERS, ! 618: 0x2031, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, ! 619: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, ! 620: 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, ! 621: 0xdc, 0x120, 0x6000, YYOTHERS, 0x202e, YYOTHERS, 0x202c, YYOTHERS, ! 622: 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, ! 623: 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, ! 624: 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, 0xde, 0x120, ! 625: 0x6000, YYOTHERS, 0x205f, YYOTHERS, 0x202a, YYOTHERS, 0x67, 0x138, ! 626: 0x68, 0x13b, 0x69, 0x13c, 0x6a, 0x13d, 0x6b, 0x13e, ! 627: 0x6c, 0x13f, 0x6d, 0x139, 0x6e, 0x13a, 0x6f, 0x137, ! 628: 0x70, 0x135, 0x71, 0x136, 0xdf, 0x120, 0x6000, YYOTHERS, ! 629: 0x2032, YYOTHERS, 0x67, 0x138, 0x68, 0x13b, 0x69, 0x13c, ! 630: 0x6a, 0x13d, 0x6b, 0x13e, 0x6c, 0x13f, 0x6d, 0x139, ! 631: 0x6e, 0x13a, 0x6f, 0x137, 0x70, 0x135, 0x71, 0x136, ! 632: 0xe0, 0x120, 0x6000, YYOTHERS, 0x202d, YYOTHERS, 0x2034, YYOTHERS, ! 633: 0x202f, YYOTHERS ! 634: }; ! 635: ! 636: ! 637: #define YYNOCHAR (-1000) ! 638: #define yyerrok yyerrflag=0 ! 639: #define yyclearin yylval=YYNOCHAR ! 640: int yystack[YYMAXDEPTH]; ! 641: YYSTYPE yyvstack[YYMAXDEPTH], *yyv; ! 642: int yychar; ! 643: ! 644: #ifdef YYDEBUG ! 645: int yydebug = 1; /* No sir, not in the BSS */ ! 646: #include <stdio.h> ! 647: #endif ! 648: ! 649: short yyerrflag; ! 650: int *yys; ! 651: ! 652: yyparse() ! 653: { ! 654: register YYSTYPE *yypvt; ! 655: int act; ! 656: register unsigned *ip, yystate; ! 657: int pno; ! 658: yystate = 0; ! 659: yychar = YYNOCHAR; ! 660: yyv = &yyvstack[-1]; ! 661: yys = &yystack[-1]; ! 662: ! 663: stack: ! 664: if( ++yys >= &yystack[YYMAXDEPTH] ) { ! 665: write(2, "Stack overflow\n", 15); ! 666: exit(1); ! 667: } ! 668: *yys = yystate; ! 669: *++yyv = yyval; ! 670: #ifdef YYDEBUG ! 671: if( yydebug ) ! 672: fprintf(stdout, "Stack state %d, char %d\n", yystate, yychar); ! 673: #endif ! 674: ! 675: read: ! 676: ip = &yyact[yypa[yystate]]; ! 677: if( ip[1] != YYNOCHAR ) { ! 678: if( yychar == YYNOCHAR ) { ! 679: yychar = yylex(); ! 680: #ifdef YYDEBUG ! 681: if( yydebug ) ! 682: fprintf(stdout, "lex read char %d, val %d\n", yychar, yylval); ! 683: #endif ! 684: } ! 685: while (ip[1]!=YYNOCHAR) { ! 686: if (ip[1]==yychar) ! 687: break; ! 688: ip += 2; ! 689: } ! 690: } ! 691: act = ip[0]; ! 692: switch( act>>YYACTSH ) { ! 693: case YYSHIFTACT: ! 694: if( ip[1]==YYNOCHAR ) ! 695: goto YYerract; ! 696: if( yychar != -1 ) ! 697: yychar = YYNOCHAR; /* dont throw away EOF */ ! 698: yystate = act&YYAMASK; ! 699: yyval = yylval; ! 700: #ifdef YYDEBUG ! 701: if( yydebug ) ! 702: fprintf(stdout, "shift %d\n", yystate); ! 703: #endif ! 704: if( yyerrflag ) ! 705: --yyerrflag; ! 706: goto stack; ! 707: ! 708: case YYACCEPTACT: ! 709: #ifdef YYDEBUG ! 710: if( yydebug ) ! 711: fprintf(stdout, "accept\n"); ! 712: #endif ! 713: return(0); ! 714: ! 715: case YYERRACT: ! 716: YYerract: ! 717: switch (yyerrflag) { ! 718: case 0: ! 719: yyerror("Syntax error"); ! 720: ! 721: case 1: ! 722: case 2: ! 723: ! 724: yyerrflag = 3; ! 725: while( yys >= & yystack[0] ) { ! 726: ip = &yyact[yypa[*yys]]; ! 727: while( ip[1]!=YYNOCHAR ) ! 728: ip += 2; ! 729: if( (*ip&~YYAMASK) == (YYSHIFTACT<<YYACTSH) ) { ! 730: yystate = *ip&YYAMASK; ! 731: goto stack; ! 732: } ! 733: #ifdef YYDEBUG ! 734: if( yydebug ) ! 735: fprintf(stderr, "error recovery leaves state %d, uncovers %d\n", *yys, yys[-1]); ! 736: #endif ! 737: yys--; ! 738: yyv--; ! 739: } ! 740: #ifdef YYDEBUG ! 741: if( yydebug ) ! 742: fprintf(stderr, "no shift on error; abort\n"); ! 743: #endif ! 744: return(1); ! 745: ! 746: case 3: ! 747: #ifdef YYDEBUG ! 748: if( yydebug ) ! 749: fprintf(stderr, "Error recovery clobbers char %o\n", yychar); ! 750: #endif ! 751: if( yychar==YYEOFVAL ) ! 752: return(1); ! 753: yychar = YYNOCHAR; ! 754: goto read; ! 755: } ! 756: ! 757: case YYREDACT: ! 758: pno = act&YYAMASK; ! 759: #ifdef YYDEBUG ! 760: if( yydebug ) ! 761: fprintf(stdout, "reduce %d\n", pno); ! 762: #endif ! 763: yypvt = yyv; ! 764: yyv -= yypn[pno]; ! 765: yys -= yypn[pno]; ! 766: yyval = yyv[1]; ! 767: switch(pno) { ! 768: ! 769: case 3: { ! 770: ! 771: #line 352 "asm.y" ! 772: /* assembler command with parms */ ! 773: docmd(yypvt[-3].p, yypvt[-2].o, yypvt[-1].p); }break; ! 774: ! 775: case 4: { ! 776: ! 777: #line 354 "asm.y" ! 778: /* a command with string parms */ ! 779: docmd(yypvt[-3].p, yypvt[-2].o, yypvt[-1].p); }break; ! 780: ! 781: case 5: { ! 782: ! 783: #line 356 "asm.y" ! 784: /* command with a name & an expr */ ! 785: ecmd(yypvt[-5].p, yypvt[-4].o, yypvt[-3].p, yypvt[-1].d); }break; ! 786: ! 787: case 6: { ! 788: ! 789: #line 359 "asm.y" ! 790: ! 791: ecmd(yypvt[-5].p, yypvt[-4].o, yypvt[-3].p, yypvt[-1].d); }break; ! 792: ! 793: case 7: { ! 794: ! 795: #line 361 "asm.y" ! 796: ! 797: ecmd(yypvt[-2].p, yypvt[-1].o, NULL, NULL); }break; ! 798: ! 799: case 8: { ! 800: ! 801: #line 363 "asm.y" ! 802: /* assembler command takes no parms */ ! 803: docmd(yypvt[-2].p, yypvt[-1].o, (parm *)NULL); }break; ! 804: ! 805: case 9: { ! 806: ! 807: #line 365 "asm.y" ! 808: /* assembler command with data parm */ ! 809: ncmd(yypvt[-3].p, yypvt[-2].o, yypvt[-1].d); }break; ! 810: ! 811: case 10: { ! 812: ! 813: #line 367 "asm.y" ! 814: /* data list */ ! 815: dcmd(yypvt[-3].p, yypvt[-2].o, yypvt[-1].d); }break; ! 816: ! 817: case 11: { ! 818: ! 819: #line 369 "asm.y" ! 820: /* opcode operands */ ! 821: buildind(yypvt[-3].p, yypvt[-2].o, yypvt[-1].e); }break; ! 822: ! 823: case 12: { ! 824: ! 825: #line 371 "asm.y" ! 826: /* built by rep instr */ ! 827: buildind(yypvt[-3].p, yypvt[-2].o, NULL); ! 828: buildind(NULL, yypvt[-1].o, NULL ); }break; ! 829: ! 830: case 13: { ! 831: ! 832: #line 374 "asm.y" ! 833: /* label alone on line */ ! 834: buildlab(yypvt[-1].p); }break; ! 835: ! 836: case 14: { ! 837: ! 838: #line 376 "asm.y" ! 839: /* syntax error */ ! 840: if (bcnt > 0) ! 841: unmatched('['); ! 842: if (bcnt < 0) ! 843: unmatched(']'); ! 844: if (pcnt > 0) ! 845: unmatched('('); ! 846: if (pcnt < 0) ! 847: unmatched(')'); ! 848: yyerrok; }break; ! 849: ! 850: case 15: { ! 851: ! 852: #line 387 "asm.y" ! 853: ! 854: yyval.d = yypvt[-2].d; ! 855: yyval.d->next = yypvt[0].d; }break; ! 856: ! 857: case 16: { ! 858: ! 859: #line 390 "asm.y" ! 860: ! 861: yyval.d = yypvt[0].d; }break; ! 862: ! 863: case 17: { ! 864: ! 865: #line 392 "asm.y" ! 866: ! 867: yyval.d = NULL; }break; ! 868: ! 869: case 18: { ! 870: ! 871: #line 395 "asm.y" ! 872: ! 873: yyval.d = gitem('y'); ! 874: yyval.d->d.y = yypvt[0].s; }break; ! 875: ! 876: case 19: { ! 877: ! 878: #line 398 "asm.y" ! 879: ! 880: yyval.d = gitem('d'); ! 881: yyval.d->d.d = yypvt[0].dbl; }break; ! 882: ! 883: case 20: { ! 884: ! 885: #line 401 "asm.y" ! 886: ! 887: yyval.d = gitem('l'); ! 888: yyval.d->d.l = yypvt[0].val; }break; ! 889: ! 890: case 21: { ! 891: ! 892: #line 404 "asm.y" ! 893: ! 894: yyval.d = gitem('s'); ! 895: yyval.d->d.s = yypvt[0].t; }break; ! 896: ! 897: case 22: { ! 898: ! 899: #line 407 "asm.y" ! 900: ! 901: yyval.d = yypvt[0].d; ! 902: yyval.d->count = yypvt[-2].val; }break; ! 903: ! 904: case 23: { ! 905: ! 906: #line 411 "asm.y" ! 907: /* start parm list */ ! 908: yyval.p = yypvt[0].p; }break; ! 909: ! 910: case 24: { ! 911: ! 912: #line 413 "asm.y" ! 913: /* chain parm list */ ! 914: yyval.p = yypvt[-2].p; ! 915: yyval.p->next = yypvt[0].p; }break; ! 916: ! 917: case 25: { ! 918: ! 919: #line 416 "asm.y" ! 920: ! 921: yyval.p = NULL; }break; ! 922: ! 923: case 26: { ! 924: ! 925: #line 419 "asm.y" ! 926: /* start a parm */ ! 927: yyval.p = (parm *)gcpy(yypvt[0].t, offset(parm, str)); }break; ! 928: ! 929: case 27: { ! 930: ! 931: #line 422 "asm.y" ! 932: ! 933: yyval.p = NULL; }break; ! 934: ! 935: case 28: { ! 936: ! 937: #line 424 "asm.y" ! 938: ! 939: yyval.p = (parm *)gcpy(yypvt[0].t, offset(parm, str)); }break; ! 940: ! 941: case 29: { ! 942: ! 943: #line 428 "asm.y" ! 944: ! 945: yyval.e = yypvt[-2].e; ! 946: yyval.e->next = yypvt[0].e; }break; ! 947: ! 948: case 30: { ! 949: ! 950: #line 431 "asm.y" ! 951: ! 952: yyval.e = yypvt[0].e; }break; ! 953: ! 954: case 31: { ! 955: ! 956: #line 433 "asm.y" ! 957: ! 958: lflags |= A_INDIR; ! 959: yyval.e = yypvt[0].e; }break; ! 960: ! 961: case 32: { ! 962: ! 963: #line 436 "asm.y" ! 964: ! 965: yyval.e = NULL; }break; ! 966: ! 967: case 33: { ! 968: ! 969: #line 439 "asm.y" ! 970: ! 971: yyval.e->sg = -1; ! 972: yyval.e = yypvt[0].e; }break; ! 973: ! 974: case 34: { ! 975: ! 976: #line 442 "asm.y" ! 977: ! 978: yyval.e = yypvt[0].e; ! 979: if (yypvt[-2].s->flag != SEG_REG) ! 980: regerror(yypvt[-2].s); ! 981: yyval.e->sg = yypvt[-2].s->loc; }break; ! 982: ! 983: case 35: { ! 984: ! 985: #line 449 "asm.y" ! 986: ! 987: yyval.e = qbild(0L, T_R, yypvt[0].s, NULL, 0L, NULL); }break; ! 988: ! 989: case 36: { ! 990: ! 991: #line 452 "asm.y" ! 992: ! 993: yyval.e = fbild(0L); }break; ! 994: ! 995: case 37: { ! 996: ! 997: #line 455 "asm.y" ! 998: ! 999: yyval.e = fbild(yypvt[-1].val); }break; ! 1000: ! 1001: case 38: { ! 1002: ! 1003: #line 458 "asm.y" ! 1004: ! 1005: yyval.e = qbild(0L, T_RI, yypvt[-1].s, NULL, 0L, NULL); }break; ! 1006: ! 1007: case 39: { ! 1008: ! 1009: #line 461 "asm.y" ! 1010: ! 1011: yyval.e = qbild(0L, T_RIS, yypvt[-3].s, NULL, yypvt[-1].val, NULL); }break; ! 1012: ! 1013: case 40: { ! 1014: ! 1015: #line 464 "asm.y" ! 1016: ! 1017: yyval.e = qbild(0L, T_RIS, yypvt[-3].s, NULL, yypvt[-1].val, NULL); }break; ! 1018: ! 1019: case 41: { ! 1020: ! 1021: #line 467 "asm.y" ! 1022: ! 1023: yyval.e = qbild(0L, T_RIX, yypvt[-3].s, yypvt[-1].s, 0L, NULL); }break; ! 1024: ! 1025: case 42: { ! 1026: ! 1027: #line 470 "asm.y" ! 1028: ! 1029: yyval.e = qbild(0L, T_RIXS, yypvt[-5].s, yypvt[-3].s, yypvt[-1].val, NULL); }break; ! 1030: ! 1031: case 43: { ! 1032: ! 1033: #line 473 "asm.y" ! 1034: ! 1035: yyval.e = qbild(yypvt[-3].val, T_RID, yypvt[-1].s, NULL, 0L, NULL); }break; ! 1036: ! 1037: case 44: { ! 1038: ! 1039: #line 476 "asm.y" ! 1040: ! 1041: yyval.e = qbild(yypvt[-5].val, T_RIDS, yypvt[-3].s, NULL, yypvt[-1].val, NULL); }break; ! 1042: ! 1043: case 45: { ! 1044: ! 1045: #line 479 "asm.y" ! 1046: ! 1047: yyval.e = qbild(yypvt[-6].val, T_RIDS, yypvt[-3].s, NULL, yypvt[-1].val, NULL); }break; ! 1048: ! 1049: case 46: { ! 1050: ! 1051: #line 482 "asm.y" ! 1052: ! 1053: yyval.e = qbild(yypvt[-5].val, T_RIXD, yypvt[-3].s, yypvt[-1].s, 0L, NULL); }break; ! 1054: ! 1055: case 47: { ! 1056: ! 1057: #line 485 "asm.y" ! 1058: ! 1059: yyval.e = qbild(yypvt[-7].val, T_RIXDS, yypvt[-5].s, yypvt[-3].s, yypvt[-1].val, NULL); }break; ! 1060: ! 1061: case 48: { ! 1062: ! 1063: #line 488 "asm.y" ! 1064: ! 1065: yyval.e = qbild(yypvt[-3].s->loc, T_RID, yypvt[-1].s, NULL, 0L, yypvt[-3].s); }break; ! 1066: ! 1067: case 49: { ! 1068: ! 1069: #line 491 "asm.y" ! 1070: ! 1071: yyval.e = qbild(yypvt[-5].s->loc, T_RIDS, yypvt[-3].s, NULL, yypvt[-1].val, yypvt[-5].s); }break; ! 1072: ! 1073: case 50: { ! 1074: ! 1075: #line 494 "asm.y" ! 1076: ! 1077: yyval.e = qbild(yypvt[-6].s->loc, T_RIDS, yypvt[-3].s, NULL, yypvt[-1].val, yypvt[-6].s); }break; ! 1078: ! 1079: case 51: { ! 1080: ! 1081: #line 497 "asm.y" ! 1082: ! 1083: yyval.e = qbild(yypvt[-5].s->loc, T_RIXD, yypvt[-3].s, yypvt[-1].s, 0L, yypvt[-5].s); }break; ! 1084: ! 1085: case 52: { ! 1086: ! 1087: #line 500 "asm.y" ! 1088: ! 1089: yyval.e = qbild(yypvt[-7].s->loc, T_RIXDS, yypvt[-5].s, yypvt[-3].s, yypvt[-1].val, yypvt[-7].s); }break; ! 1090: ! 1091: case 53: { ! 1092: ! 1093: #line 503 "asm.y" ! 1094: ! 1095: yyval.e = qbild(yypvt[0].s->loc, T_D, NULL, NULL, 0L, yypvt[0].s); }break; ! 1096: ! 1097: case 54: { ! 1098: ! 1099: #line 506 "asm.y" ! 1100: ! 1101: yyval.e = qbild(yypvt[0].val, T_D, NULL, NULL, 0L, NULL); }break; ! 1102: ! 1103: case 55: { ! 1104: ! 1105: #line 509 "asm.y" ! 1106: ! 1107: yyval.e = setImm(yypvt[0].val, (sym *)NULL); }break; ! 1108: ! 1109: case 56: { ! 1110: ! 1111: #line 512 "asm.y" ! 1112: ! 1113: yyval.e = setImm(yypvt[0].s->loc, yypvt[0].s); }break; ! 1114: ! 1115: case 57: { ! 1116: ! 1117: #line 518 "asm.y" ! 1118: yyval.s = yypvt[0].s; }break; ! 1119: ! 1120: case 58: { ! 1121: ! 1122: #line 519 "asm.y" ! 1123: yyval.s=yypvt[-1].s; }break; ! 1124: ! 1125: case 59: { ! 1126: ! 1127: #line 520 "asm.y" ! 1128: yyval.s = copySym(yypvt[-2].s); yyval.s->loc += yypvt[0].val; }break; ! 1129: ! 1130: case 60: { ! 1131: ! 1132: #line 521 "asm.y" ! 1133: yyval.s = copySym(yypvt[-2].s); yyval.s->loc -= yypvt[0].val; }break; ! 1134: ! 1135: case 61: { ! 1136: ! 1137: #line 522 "asm.y" ! 1138: yyval.s = copySym(yypvt[0].s); yyval.s->loc += yypvt[-2].val; }break; ! 1139: ! 1140: case 62: { ! 1141: ! 1142: #line 525 "asm.y" ! 1143: ! 1144: yyval.val = yypvt[0].val; }break; ! 1145: ! 1146: case 63: { ! 1147: ! 1148: #line 527 "asm.y" ! 1149: ! 1150: yyval.val = yypvt[-1].val; }break; ! 1151: ! 1152: case 64: { ! 1153: ! 1154: #line 529 "asm.y" ! 1155: ! 1156: ckseg(yypvt[-2].s, yypvt[0].s); yyval.val = yypvt[-2].s->loc - yypvt[0].s->loc; }break; ! 1157: ! 1158: case 65: { ! 1159: ! 1160: #line 531 "asm.y" ! 1161: ! 1162: ckseg(yypvt[-2].s, yypvt[0].s); yyval.val = compare((int)yypvt[-1].val, yypvt[-2].s->loc - yypvt[0].s->loc); }break; ! 1163: ! 1164: case 66: { ! 1165: ! 1166: #line 533 "asm.y" ! 1167: ! 1168: yyval.val = compare((int)yypvt[-1].val, yypvt[-2].val - yypvt[0].val); }break; ! 1169: ! 1170: case 67: { ! 1171: ! 1172: #line 535 "asm.y" ! 1173: ! 1174: yyval.val = compare((int)yypvt[-1].val, (long)strcmp(yypvt[-2].t, yypvt[0].t)); }break; ! 1175: ! 1176: case 68: { ! 1177: ! 1178: #line 537 "asm.y" ! 1179: ! 1180: yyval.val = fcompare((int)yypvt[-1].val, yypvt[-2].dbl - yypvt[0].dbl); }break; ! 1181: ! 1182: case 69: { ! 1183: ! 1184: #line 540 "asm.y" ! 1185: ! 1186: yyval.val = yypvt[0].s->size; }break; ! 1187: ! 1188: case 70: { ! 1189: ! 1190: #line 543 "asm.y" ! 1191: ! 1192: yyval.val = yypvt[0].s->loc; }break; ! 1193: ! 1194: case 71: { ! 1195: ! 1196: #line 546 "asm.y" ! 1197: ! 1198: yyval.val = yypvt[0].s->sg + 1; }break; ! 1199: ! 1200: case 72: { ! 1201: ! 1202: #line 549 "asm.y" ! 1203: ! 1204: yyval.val = yypvt[0].s->statement && (statement >= yypvt[0].s->statement); }break; ! 1205: ! 1206: case 73: { ! 1207: ! 1208: #line 551 "asm.y" ! 1209: ! 1210: yyval.val = 1; }break; ! 1211: ! 1212: case 74: { ! 1213: ! 1214: #line 553 "asm.y" ! 1215: ! 1216: yyval.val = parmCt(); }break; ! 1217: ! 1218: case 75: { ! 1219: ! 1220: #line 556 "asm.y" ! 1221: ! 1222: yyval.val = yypvt[-2].val + yypvt[0].val; }break; ! 1223: ! 1224: case 76: { ! 1225: ! 1226: #line 558 "asm.y" ! 1227: ! 1228: yyval.val = yypvt[-2].val - yypvt[0].val; }break; ! 1229: ! 1230: case 77: { ! 1231: ! 1232: #line 560 "asm.y" ! 1233: ! 1234: yyval.val = yypvt[-2].val * yypvt[0].val; }break; ! 1235: ! 1236: case 78: { ! 1237: ! 1238: #line 562 "asm.y" ! 1239: ! 1240: yyval.val = yypvt[-2].val / yypvt[0].val; }break; ! 1241: ! 1242: case 79: { ! 1243: ! 1244: #line 564 "asm.y" ! 1245: ! 1246: yyval.val = yypvt[-2].val % yypvt[0].val; }break; ! 1247: ! 1248: case 80: { ! 1249: ! 1250: #line 567 "asm.y" ! 1251: ! 1252: yyval.val = yypvt[-2].val << yypvt[0].val; }break; ! 1253: ! 1254: case 81: { ! 1255: ! 1256: #line 569 "asm.y" ! 1257: ! 1258: yyval.val = yypvt[-2].val >> yypvt[0].val; }break; ! 1259: ! 1260: case 82: { ! 1261: ! 1262: #line 573 "asm.y" ! 1263: ! 1264: yyval.val = yypvt[-2].val & yypvt[0].val; }break; ! 1265: ! 1266: case 83: { ! 1267: ! 1268: #line 575 "asm.y" ! 1269: ! 1270: yyval.val = yypvt[-2].val | yypvt[0].val; }break; ! 1271: ! 1272: case 84: { ! 1273: ! 1274: #line 577 "asm.y" ! 1275: ! 1276: yyval.val = yypvt[-2].val ^ yypvt[0].val; }break; ! 1277: ! 1278: case 85: { ! 1279: ! 1280: #line 579 "asm.y" ! 1281: ! 1282: yyval.val = - yypvt[0].val; }break; ! 1283: ! 1284: case 86: { ! 1285: ! 1286: #line 581 "asm.y" ! 1287: ! 1288: yyval.val = !yypvt[0].val; }break; ! 1289: ! 1290: case 87: { ! 1291: ! 1292: #line 583 "asm.y" ! 1293: ! 1294: yyval.val = ~yypvt[0].val; }break; ! 1295: ! 1296: case 88: { ! 1297: ! 1298: #line 586 "asm.y" ! 1299: ! 1300: yyval.val = (yypvt[-1].val > strlen(yypvt[-3].t)) ? 0 : yypvt[-3].t[(short)yypvt[-1].val]; }break; ! 1301: ! 1302: case 89: { ! 1303: ! 1304: #line 588 "asm.y" ! 1305: ! 1306: yyval.val = stringSearch(yypvt[-2].t, yypvt[0].t); }break; ! 1307: ! 1308: case 90: { ! 1309: ! 1310: #line 590 "asm.y" ! 1311: ! 1312: yyval.val = atol(yypvt[0].t); }break; ! 1313: ! 1314: case 91: { ! 1315: ! 1316: #line 592 "asm.y" ! 1317: ! 1318: yyval.val = yypvt[0].dbl; }break; ! 1319: ! 1320: case 92: { ! 1321: ! 1322: #line 595 "asm.y" ! 1323: ! 1324: yyval.t = gcpy(yypvt[0].t, 0); }break; ! 1325: ! 1326: case 93: { ! 1327: ! 1328: #line 597 "asm.y" ! 1329: ! 1330: yyval.t = yypvt[-1].t; }break; ! 1331: ! 1332: case 94: { ! 1333: ! 1334: #line 599 "asm.y" ! 1335: ! 1336: yyval.t = concat(yypvt[-2].t, yypvt[0].t); }break; ! 1337: ! 1338: case 95: { ! 1339: ! 1340: #line 601 "asm.y" ! 1341: ! 1342: yyval.t = substr(yypvt[-5].t, yypvt[-3].val, yypvt[-1].val); }break; ! 1343: ! 1344: case 96: { ! 1345: ! 1346: #line 603 "asm.y" ! 1347: ! 1348: yyval.t = substr(yypvt[-3].t, yypvt[-1].val, strlen(yypvt[-3].t) - yypvt[-1].val); }break; ! 1349: ! 1350: case 97: { ! 1351: ! 1352: #line 605 "asm.y" ! 1353: ! 1354: yyval.t = galloc(12); ! 1355: sprintf(yyval.t, "%ld", yypvt[0].val); }break; ! 1356: ! 1357: case 98: { ! 1358: ! 1359: #line 608 "asm.y" ! 1360: ! 1361: yyval.t = galloc(20); ! 1362: sprintf(yyval.t, "%g", yypvt[0].dbl); }break; ! 1363: ! 1364: case 99: { ! 1365: ! 1366: #line 613 "asm.y" ! 1367: ! 1368: yyval.dbl = yypvt[0].dbl; }break; ! 1369: ! 1370: case 100: { ! 1371: ! 1372: #line 615 "asm.y" ! 1373: ! 1374: yyval.dbl = yypvt[-1].dbl; }break; ! 1375: ! 1376: case 101: { ! 1377: ! 1378: #line 617 "asm.y" ! 1379: ! 1380: yyval.dbl = yypvt[-2].dbl + yypvt[0].dbl; }break; ! 1381: ! 1382: case 102: { ! 1383: ! 1384: #line 619 "asm.y" ! 1385: ! 1386: yyval.dbl = yypvt[-2].dbl - yypvt[0].dbl; }break; ! 1387: ! 1388: case 103: { ! 1389: ! 1390: #line 621 "asm.y" ! 1391: ! 1392: yyval.dbl = yypvt[-2].dbl * yypvt[0].dbl; }break; ! 1393: ! 1394: case 104: { ! 1395: ! 1396: #line 623 "asm.y" ! 1397: ! 1398: yyval.dbl = yypvt[-2].dbl / yypvt[0].dbl; }break; ! 1399: ! 1400: case 105: { ! 1401: ! 1402: #line 625 "asm.y" ! 1403: ! 1404: yyval.dbl = - yypvt[0].dbl; }break; ! 1405: ! 1406: case 106: { ! 1407: ! 1408: #line 627 "asm.y" ! 1409: ! 1410: yyval.dbl = strtod(yypvt[0].t, (char **)NULL); }break; ! 1411: ! 1412: case 107: { ! 1413: ! 1414: #line 629 "asm.y" ! 1415: ! 1416: yyval.dbl = yypvt[0].val; }break; ! 1417: ! 1418: } ! 1419: ip = &yygo[ yypgo[yypdnt[pno]] ]; ! 1420: while( *ip!=*yys && *ip!=YYNOCHAR ) ! 1421: ip += 2; ! 1422: yystate = ip[1]; ! 1423: goto stack; ! 1424: } ! 1425: } ! 1426: ! 1427: ! 1428: ! 1429:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.