};
// TODO(rsc): Describe prog.
-// TOOD(rsc): Make ARM scond == 0 mean C_SCOND_NONE.
+// TODO(rsc): Describe TEXT/GLOBL flag in from3, DATA width in from3.
struct Prog
{
vlong pc;
int16 reg; // arm, ppc64 only (e.g., ADD from, reg, to);
// starts at 0 for both GPRs and FPRs;
// also used for ADATA width on arm, ppc64
- Addr from3; // ppc64 only (e.g., RLWM/FMADD from, reg, from3, to)
+ Addr from3; // addl source argument (e.g., RLWM/FMADD from, reg, from3, to)
Addr to;
// for 5g, 6g, 8g internal use
char width; /* fake for DATA */
char mode; /* 16, 32, or 64 in 6l, 8l; internal use in 5g, 6g, 8g */
-
- /*c2go uchar TEXTFLAG; */
};
// prevent incompatible type signatures between liblink and 8l on Plan 9
int (*isdata)(Prog*);
Prog* (*prg)(void);
void (*progedit)(Link*, Prog*);
- void (*settextflag)(Prog*, int);
- int (*textflag)(Prog*);
int minlc;
int ptrsize;
EXTERN Biobuf obuf;
EXTERN Link* ctxt;
EXTERN Biobuf bstdout;
+EXTERN Prog* lastpc;
void* alloc(int32);
void* allocn(void*, int32, int32);
| LTYPEB name ',' con ',' '$' textsize
{
settext($2.sym);
- outcode($1, Always, &$2, $4, &$7);
+ outcode($1, Always, &$2, 0, &$7);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
}
/*
* GLOBL
| LGLOBL name ',' con ',' imm
{
settext($2.sym);
- outcode($1, Always, &$2, $4, &$6);
+ outcode($1, Always, &$2, 0, &$6);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
}
/*
* DATA
ANOP,
};
-static Prog *lastpc;
-
void
outcode(int a, int scond, Addr *g1, int reg, Addr *g2)
{
0, 68, 68, 70, 69, 77, 76, 85, 90, 96,
97, 98, 104, 108, 112, 119, 126, 133, 137, 144,
151, 158, 165, 172, 181, 193, 197, 201, 208, 215,
- 220, 228, 233, 241, 248, 255, 262, 266, 270, 274,
- 281, 303, 311, 320, 327, 336, 347, 353, 356, 360,
- 365, 366, 369, 375, 386, 392, 398, 404, 411, 417,
- 422, 428, 431, 437, 445, 449, 458, 464, 465, 466,
- 467, 472, 478, 484, 490, 491, 494, 495, 503, 512,
- 513, 522, 523, 529, 532, 533, 534, 536, 544, 552,
- 561, 567, 573, 579, 587, 593, 601, 602, 606, 614,
- 615, 621, 622, 630, 631, 634, 640, 648, 656, 664,
- 674, 677, 681, 687, 688, 689, 692, 693, 697, 701,
- 705, 709, 715, 718, 724, 725, 729, 733, 737, 741,
- 745, 749, 753, 757, 761
+ 220, 232, 237, 249, 256, 263, 270, 274, 278, 282,
+ 289, 311, 319, 328, 335, 344, 355, 361, 364, 368,
+ 373, 374, 377, 383, 394, 400, 406, 412, 419, 425,
+ 430, 436, 439, 445, 453, 457, 466, 472, 473, 474,
+ 475, 480, 486, 492, 498, 499, 502, 503, 511, 520,
+ 521, 530, 531, 537, 540, 541, 542, 544, 552, 560,
+ 569, 575, 581, 587, 595, 601, 609, 610, 614, 622,
+ 623, 629, 630, 638, 639, 642, 648, 656, 664, 672,
+ 682, 685, 689, 695, 696, 697, 700, 701, 705, 709,
+ 713, 717, 723, 726, 732, 733, 737, 741, 745, 749,
+ 753, 757, 761, 765, 769
};
#endif
#line 221 "a.y"
{
settext((yyvsp[(2) - (7)].addr).sym);
- outcode((yyvsp[(1) - (7)].lval), Always, &(yyvsp[(2) - (7)].addr), (yyvsp[(4) - (7)].lval), &(yyvsp[(7) - (7)].addr));
+ outcode((yyvsp[(1) - (7)].lval), Always, &(yyvsp[(2) - (7)].addr), 0, &(yyvsp[(7) - (7)].addr));
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (7)].lval);
+ }
}
break;
case 31:
-#line 229 "a.y"
+#line 233 "a.y"
{
settext((yyvsp[(2) - (4)].addr).sym);
outcode((yyvsp[(1) - (4)].lval), Always, &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
break;
case 32:
-#line 234 "a.y"
+#line 238 "a.y"
{
settext((yyvsp[(2) - (6)].addr).sym);
- outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+ outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(6) - (6)].addr));
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (6)].lval);
+ }
}
break;
case 33:
-#line 242 "a.y"
+#line 250 "a.y"
{
outcode((yyvsp[(1) - (6)].lval), Always, &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
}
break;
case 34:
-#line 249 "a.y"
+#line 257 "a.y"
{
outcode((yyvsp[(1) - (4)].lval), (yyvsp[(2) - (4)].lval), &(yyvsp[(3) - (4)].addr), 0, &nullgen);
}
break;
case 35:
-#line 256 "a.y"
+#line 264 "a.y"
{
outcode((yyvsp[(1) - (3)].lval), Always, &nullgen, 0, &(yyvsp[(3) - (3)].addr));
}
break;
case 36:
-#line 263 "a.y"
+#line 271 "a.y"
{
outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr));
}
break;
case 37:
-#line 267 "a.y"
+#line 275 "a.y"
{
outcode((yyvsp[(1) - (5)].lval), (yyvsp[(2) - (5)].lval), &(yyvsp[(3) - (5)].addr), 0, &(yyvsp[(5) - (5)].addr));
}
break;
case 38:
-#line 271 "a.y"
+#line 279 "a.y"
{
outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].lval), &(yyvsp[(7) - (7)].addr));
}
break;
case 39:
-#line 275 "a.y"
+#line 283 "a.y"
{
outcode((yyvsp[(1) - (6)].lval), (yyvsp[(2) - (6)].lval), &(yyvsp[(3) - (6)].addr), (yyvsp[(5) - (6)].addr).reg, &nullgen);
}
break;
case 40:
-#line 282 "a.y"
+#line 290 "a.y"
{
Addr g;
break;
case 41:
-#line 304 "a.y"
+#line 312 "a.y"
{
outcode((yyvsp[(1) - (7)].lval), (yyvsp[(2) - (7)].lval), &(yyvsp[(3) - (7)].addr), (yyvsp[(5) - (7)].addr).reg, &(yyvsp[(7) - (7)].addr));
}
break;
case 42:
-#line 312 "a.y"
+#line 320 "a.y"
{
(yyvsp[(7) - (9)].addr).type = TYPE_REGREG2;
(yyvsp[(7) - (9)].addr).offset = (yyvsp[(9) - (9)].lval);
break;
case 43:
-#line 321 "a.y"
+#line 329 "a.y"
{
outcode((yyvsp[(1) - (2)].lval), Always, &(yyvsp[(2) - (2)].addr), 0, &nullgen);
}
break;
case 44:
-#line 328 "a.y"
+#line 336 "a.y"
{
if((yyvsp[(2) - (4)].addr).type != TYPE_CONST || (yyvsp[(4) - (4)].addr).type != TYPE_CONST)
yyerror("arguments to PCDATA must be integer constants");
break;
case 45:
-#line 337 "a.y"
+#line 345 "a.y"
{
if((yyvsp[(2) - (4)].addr).type != TYPE_CONST)
yyerror("index for FUNCDATA must be integer constant");
break;
case 46:
-#line 348 "a.y"
+#line 356 "a.y"
{
outcode((yyvsp[(1) - (2)].lval), Always, &nullgen, 0, &nullgen);
}
break;
case 47:
-#line 353 "a.y"
+#line 361 "a.y"
{
(yyval.lval) = Always;
}
break;
case 48:
-#line 357 "a.y"
+#line 365 "a.y"
{
(yyval.lval) = ((yyvsp[(1) - (2)].lval) & ~C_SCOND) | (yyvsp[(2) - (2)].lval);
}
break;
case 49:
-#line 361 "a.y"
+#line 369 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (2)].lval) | (yyvsp[(2) - (2)].lval);
}
break;
case 52:
-#line 370 "a.y"
+#line 378 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_BRANCH;
break;
case 53:
-#line 376 "a.y"
+#line 384 "a.y"
{
(yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym));
(yyval.addr) = nullgen;
break;
case 54:
-#line 387 "a.y"
+#line 395 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (1)].lval);
break;
case 55:
-#line 393 "a.y"
+#line 401 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (2)].lval);
break;
case 56:
-#line 399 "a.y"
+#line 407 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (3)].lval);
break;
case 57:
-#line 405 "a.y"
+#line 413 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (4)].lval);
break;
case 58:
-#line 412 "a.y"
+#line 420 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_CONST;
break;
case 59:
-#line 418 "a.y"
+#line 426 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
(yyval.addr).type = TYPE_CONST;
break;
case 60:
-#line 423 "a.y"
+#line 431 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SCONST;
break;
case 62:
-#line 432 "a.y"
+#line 440 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 63:
-#line 438 "a.y"
+#line 446 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 64:
-#line 446 "a.y"
+#line 454 "a.y"
{
(yyval.lval) = 1 << (yyvsp[(1) - (1)].lval);
}
break;
case 65:
-#line 450 "a.y"
+#line 458 "a.y"
{
int i;
(yyval.lval)=0;
break;
case 66:
-#line 459 "a.y"
+#line 467 "a.y"
{
(yyval.lval) = (1<<(yyvsp[(1) - (3)].lval)) | (yyvsp[(3) - (3)].lval);
}
break;
case 70:
-#line 468 "a.y"
+#line 476 "a.y"
{
(yyval.addr) = (yyvsp[(1) - (4)].addr);
(yyval.addr).reg = (yyvsp[(3) - (4)].lval);
break;
case 71:
-#line 473 "a.y"
+#line 481 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 72:
-#line 479 "a.y"
+#line 487 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 73:
-#line 485 "a.y"
+#line 493 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 77:
-#line 496 "a.y"
+#line 504 "a.y"
{
(yyval.addr) = (yyvsp[(1) - (1)].addr);
if((yyvsp[(1) - (1)].addr).name != NAME_EXTERN && (yyvsp[(1) - (1)].addr).name != NAME_STATIC) {
break;
case 78:
-#line 504 "a.y"
+#line 512 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 80:
-#line 514 "a.y"
+#line 522 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 82:
-#line 524 "a.y"
+#line 532 "a.y"
{
(yyval.addr) = (yyvsp[(1) - (4)].addr);
(yyval.addr).type = TYPE_MEM;
break;
case 87:
-#line 537 "a.y"
+#line 545 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_CONST;
break;
case 88:
-#line 545 "a.y"
+#line 553 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 89:
-#line 553 "a.y"
+#line 561 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REGREG;
break;
case 90:
-#line 562 "a.y"
+#line 570 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SHIFT;
break;
case 91:
-#line 568 "a.y"
+#line 576 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SHIFT;
break;
case 92:
-#line 574 "a.y"
+#line 582 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SHIFT;
break;
case 93:
-#line 580 "a.y"
+#line 588 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SHIFT;
break;
case 94:
-#line 588 "a.y"
+#line 596 "a.y"
{
if((yyval.lval) < REG_R0 || (yyval.lval) > REG_R15)
print("register value out of range in shift\n");
break;
case 95:
-#line 594 "a.y"
+#line 602 "a.y"
{
if((yyval.lval) < 0 || (yyval.lval) >= 32)
print("shift value out of range\n");
break;
case 97:
-#line 603 "a.y"
+#line 611 "a.y"
{
(yyval.lval) = REGPC;
}
break;
case 98:
-#line 607 "a.y"
+#line 615 "a.y"
{
if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG)
print("register value out of range in R(...)\n");
break;
case 100:
-#line 616 "a.y"
+#line 624 "a.y"
{
(yyval.lval) = REGSP;
}
break;
case 102:
-#line 623 "a.y"
+#line 631 "a.y"
{
if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= NREG)
print("register value out of range in C(...)\n");
break;
case 105:
-#line 635 "a.y"
+#line 643 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 106:
-#line 641 "a.y"
+#line 649 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 107:
-#line 649 "a.y"
+#line 657 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 108:
-#line 657 "a.y"
+#line 665 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 109:
-#line 665 "a.y"
+#line 673 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 110:
-#line 674 "a.y"
+#line 682 "a.y"
{
(yyval.lval) = 0;
}
break;
case 111:
-#line 678 "a.y"
+#line 686 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 112:
-#line 682 "a.y"
+#line 690 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 117:
-#line 694 "a.y"
+#line 702 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
}
break;
case 118:
-#line 698 "a.y"
+#line 706 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 119:
-#line 702 "a.y"
+#line 710 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 120:
-#line 706 "a.y"
+#line 714 "a.y"
{
(yyval.lval) = ~(yyvsp[(2) - (2)].lval);
}
break;
case 121:
-#line 710 "a.y"
+#line 718 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (3)].lval);
}
break;
case 122:
-#line 715 "a.y"
+#line 723 "a.y"
{
(yyval.lval) = 0;
}
break;
case 123:
-#line 719 "a.y"
+#line 727 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 125:
-#line 726 "a.y"
+#line 734 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
}
break;
case 126:
-#line 730 "a.y"
+#line 738 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
}
break;
case 127:
-#line 734 "a.y"
+#line 742 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
}
break;
case 128:
-#line 738 "a.y"
+#line 746 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
}
break;
case 129:
-#line 742 "a.y"
+#line 750 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
}
break;
case 130:
-#line 746 "a.y"
+#line 754 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
}
break;
case 131:
-#line 750 "a.y"
+#line 758 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
}
break;
case 132:
-#line 754 "a.y"
+#line 762 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
}
break;
case 133:
-#line 758 "a.y"
+#line 766 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
}
break;
case 134:
-#line 762 "a.y"
+#line 770 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
}
/* Line 1267 of yacc.c. */
-#line 2614 "y.tab.c"
+#line 2622 "y.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
#include "../gc/go.h"
#include "../5l/5.out.h"
-#define TEXTFLAG reg
-
enum
{
REGALLOC_R0 = REG_R0,
p->to.type = TYPE_CONST;
p->to.offset = nam->type->width;
if(nam->readonly)
- p->reg = RODATA;
+ p->from3.offset = RODATA;
if(nam->type != T && !haspointers(nam->type))
- p->reg |= NOPTR;
+ p->from3.offset |= NOPTR;
}
void
p->to.type = TYPE_CONST;
p->to.name = NAME_NONE;
p->to.offset = width;
- p->reg = flags;
+ p->from3.offset = flags;
}
void
EXTERN Biobuf obuf;
EXTERN Link* ctxt;
EXTERN Biobuf bstdout;
+EXTERN Prog* lastpc;
void* alloc(int32);
void* allocn(void*, int32, int32);
%type <lval> con expr pointer offset
%type <addr> mem imm reg nam rel rem rim rom omem nmem textsize
%type <addr2> nonnon nonrel nonrem rimnon rimrem remrim
-%type <addr2> spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9
-%type <addr2> spec10 spec11 spec12 spec13
+%type <addr2> spec1 spec3 spec4 spec5 spec6 spec7 spec8 spec9
+%type <addr2> spec10 spec12 spec13
%%
prog:
| prog
| LTYPE4 remrim { outcode($1, &$2); }
| LTYPER nonrel { outcode($1, &$2); }
| LTYPED spec1 { outcode($1, &$2); }
-| LTYPET spec2 { outcode($1, &$2); }
+| spec2
| LTYPEC spec3 { outcode($1, &$2); }
| LTYPEN spec4 { outcode($1, &$2); }
| LTYPES spec5 { outcode($1, &$2); }
| LTYPEXC spec8 { outcode($1, &$2); }
| LTYPEX spec9 { outcode($1, &$2); }
| LTYPERT spec10 { outcode($1, &$2); }
-| LTYPEG spec11 { outcode($1, &$2); }
+| spec11
| LTYPEPC spec12 { outcode($1, &$2); }
| LTYPEF spec13 { outcode($1, &$2); }
}
spec2: /* TEXT */
- mem ',' '$' textsize
+ LTYPET mem ',' '$' textsize
{
- settext($1.sym);
- $$.from = $1;
- $$.to = $4;
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $5;
+ outcode(ATEXT, &a);
}
-| mem ',' con ',' '$' textsize
+| LTYPET mem ',' con ',' '$' textsize
{
- settext($1.sym);
- $$.from = $1;
- $$.from.scale = $3;
- $$.to = $6;
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $7;
+ outcode(ATEXT, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
+ }
+
+spec11: /* GLOBL */
+ LTYPEG mem ',' imm
+ {
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $4;
+ outcode(AGLOBL, &a);
+ }
+| LTYPEG mem ',' con ',' imm
+ {
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $6;
+ outcode(AGLOBL, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
}
spec3: /* JMP/CALL */
$$.to = nullgen;
}
-spec11: /* GLOBL */
- mem ',' imm
- {
- $$.from = $1;
- $$.to = $3;
- }
-| mem ',' con ',' imm
- {
- $$.from = $1;
- $$.from.scale = $3;
- $$.to = $5;
- }
-
spec12: /* PCDATA */
rim ',' rim
{
outcode(AEND, &g2);
}
-static Prog *lastpc;
-
void
outcode(int a, Addr2 *g2)
{
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 531
+#define YYLAST 515
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 56
{
0, 0, 3, 4, 5, 9, 10, 15, 17, 20,
23, 27, 31, 34, 37, 40, 43, 46, 49, 52,
- 55, 58, 61, 64, 67, 70, 73, 76, 79, 82,
- 85, 88, 89, 91, 95, 99, 102, 104, 107, 109,
- 112, 114, 118, 124, 129, 136, 139, 141, 143, 145,
- 149, 155, 159, 165, 168, 170, 174, 180, 186, 187,
- 189, 193, 199, 203, 207, 209, 211, 213, 215, 218,
- 221, 223, 225, 227, 229, 234, 237, 239, 241, 243,
- 245, 247, 249, 251, 254, 257, 260, 263, 268, 274,
- 278, 280, 282, 284, 289, 294, 299, 306, 316, 326,
- 330, 334, 340, 349, 351, 358, 364, 372, 373, 376,
- 379, 381, 383, 385, 387, 389, 392, 395, 398, 402,
- 404, 407, 411, 416, 418, 422, 426, 430, 434, 438,
- 443, 448, 452, 456
+ 54, 57, 60, 63, 66, 69, 72, 75, 78, 80,
+ 83, 86, 87, 89, 93, 97, 100, 102, 105, 107,
+ 110, 112, 116, 122, 128, 136, 141, 148, 151, 153,
+ 155, 157, 161, 167, 171, 177, 180, 182, 186, 192,
+ 198, 199, 201, 205, 209, 211, 213, 215, 217, 220,
+ 223, 225, 227, 229, 231, 236, 239, 241, 243, 245,
+ 247, 249, 251, 253, 256, 259, 262, 265, 270, 276,
+ 280, 282, 284, 286, 291, 296, 301, 308, 318, 328,
+ 332, 336, 342, 351, 353, 360, 366, 374, 375, 378,
+ 381, 383, 385, 387, 389, 391, 394, 397, 400, 404,
+ 406, 409, 413, 418, 420, 424, 428, 432, 436, 440,
+ 445, 450, 454, 458
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
1, 49, -1, 45, 50, 95, -1, 47, 50, 95,
-1, 13, 62, -1, 14, 66, -1, 15, 65, -1,
16, 63, -1, 17, 64, -1, 21, 67, -1, 19,
- 68, -1, 22, 69, -1, 18, 70, -1, 20, 71,
- -1, 25, 72, -1, 26, 73, -1, 27, 74, -1,
- 28, 75, -1, 29, 76, -1, 30, 77, -1, 23,
- 78, -1, 24, 79, -1, 31, 80, -1, -1, 51,
- -1, 83, 51, 81, -1, 81, 51, 83, -1, 83,
- 51, -1, 83, -1, 51, 81, -1, 81, -1, 51,
- 84, -1, 84, -1, 86, 51, 84, -1, 90, 11,
- 93, 51, 86, -1, 87, 51, 52, 94, -1, 87,
- 51, 93, 51, 52, 94, -1, 51, 82, -1, 82,
- -1, 62, -1, 66, -1, 83, 51, 81, -1, 83,
- 51, 81, 48, 37, -1, 83, 51, 81, -1, 83,
- 51, 81, 48, 38, -1, 83, 51, -1, 83, -1,
- 83, 51, 81, -1, 85, 51, 81, 51, 93, -1,
- 86, 51, 81, 51, 85, -1, -1, 86, -1, 87,
- 51, 86, -1, 87, 51, 93, 51, 86, -1, 83,
- 51, 83, -1, 83, 51, 83, -1, 85, -1, 87,
- -1, 84, -1, 89, -1, 10, 85, -1, 10, 88,
- -1, 85, -1, 88, -1, 81, -1, 86, -1, 93,
- 53, 34, 54, -1, 45, 91, -1, 36, -1, 39,
- -1, 37, -1, 40, -1, 44, -1, 38, -1, 41,
- -1, 52, 93, -1, 52, 90, -1, 52, 43, -1,
- 52, 42, -1, 52, 53, 42, 54, -1, 52, 53,
- 9, 42, 54, -1, 52, 9, 42, -1, 88, -1,
- 89, -1, 93, -1, 93, 53, 37, 54, -1, 93,
- 53, 44, 54, -1, 93, 53, 38, 54, -1, 93,
- 53, 37, 10, 93, 54, -1, 93, 53, 37, 54,
- 53, 37, 10, 93, 54, -1, 93, 53, 37, 54,
- 53, 38, 10, 93, 54, -1, 53, 37, 54, -1,
- 53, 44, 54, -1, 53, 37, 10, 93, 54, -1,
- 53, 37, 54, 53, 37, 10, 93, 54, -1, 90,
- -1, 90, 53, 37, 10, 93, 54, -1, 45, 91,
- 53, 92, 54, -1, 45, 6, 7, 91, 53, 35,
- 54, -1, -1, 8, 93, -1, 9, 93, -1, 35,
- -1, 44, -1, 33, -1, 32, -1, 47, -1, 9,
- 93, -1, 8, 93, -1, 55, 93, -1, 53, 95,
- 54, -1, 32, -1, 9, 32, -1, 32, 9, 32,
- -1, 9, 32, 9, 32, -1, 93, -1, 95, 8,
- 95, -1, 95, 9, 95, -1, 95, 10, 95, -1,
- 95, 11, 95, -1, 95, 12, 95, -1, 95, 6,
- 6, 95, -1, 95, 7, 7, 95, -1, 95, 5,
- 95, -1, 95, 4, 95, -1, 95, 3, 95, -1
+ 68, -1, 69, -1, 18, 71, -1, 20, 72, -1,
+ 25, 73, -1, 26, 74, -1, 27, 75, -1, 28,
+ 76, -1, 29, 77, -1, 30, 78, -1, 70, -1,
+ 24, 79, -1, 31, 80, -1, -1, 51, -1, 83,
+ 51, 81, -1, 81, 51, 83, -1, 83, 51, -1,
+ 83, -1, 51, 81, -1, 81, -1, 51, 84, -1,
+ 84, -1, 86, 51, 84, -1, 90, 11, 93, 51,
+ 86, -1, 22, 87, 51, 52, 94, -1, 22, 87,
+ 51, 93, 51, 52, 94, -1, 23, 87, 51, 86,
+ -1, 23, 87, 51, 93, 51, 86, -1, 51, 82,
+ -1, 82, -1, 62, -1, 66, -1, 83, 51, 81,
+ -1, 83, 51, 81, 48, 37, -1, 83, 51, 81,
+ -1, 83, 51, 81, 48, 38, -1, 83, 51, -1,
+ 83, -1, 83, 51, 81, -1, 85, 51, 81, 51,
+ 93, -1, 86, 51, 81, 51, 85, -1, -1, 86,
+ -1, 83, 51, 83, -1, 83, 51, 83, -1, 85,
+ -1, 87, -1, 84, -1, 89, -1, 10, 85, -1,
+ 10, 88, -1, 85, -1, 88, -1, 81, -1, 86,
+ -1, 93, 53, 34, 54, -1, 45, 91, -1, 36,
+ -1, 39, -1, 37, -1, 40, -1, 44, -1, 38,
+ -1, 41, -1, 52, 93, -1, 52, 90, -1, 52,
+ 43, -1, 52, 42, -1, 52, 53, 42, 54, -1,
+ 52, 53, 9, 42, 54, -1, 52, 9, 42, -1,
+ 88, -1, 89, -1, 93, -1, 93, 53, 37, 54,
+ -1, 93, 53, 44, 54, -1, 93, 53, 38, 54,
+ -1, 93, 53, 37, 10, 93, 54, -1, 93, 53,
+ 37, 54, 53, 37, 10, 93, 54, -1, 93, 53,
+ 37, 54, 53, 38, 10, 93, 54, -1, 53, 37,
+ 54, -1, 53, 44, 54, -1, 53, 37, 10, 93,
+ 54, -1, 53, 37, 54, 53, 37, 10, 93, 54,
+ -1, 90, -1, 90, 53, 37, 10, 93, 54, -1,
+ 45, 91, 53, 92, 54, -1, 45, 6, 7, 91,
+ 53, 35, 54, -1, -1, 8, 93, -1, 9, 93,
+ -1, 35, -1, 44, -1, 33, -1, 32, -1, 47,
+ -1, 9, 93, -1, 8, 93, -1, 55, 93, -1,
+ 53, 95, 54, -1, 32, -1, 9, 32, -1, 32,
+ 9, 32, -1, 9, 32, 9, 32, -1, 93, -1,
+ 95, 8, 95, -1, 95, 9, 95, -1, 95, 10,
+ 95, -1, 95, 11, 95, -1, 95, 12, 95, -1,
+ 95, 6, 6, 95, -1, 95, 7, 7, 95, -1,
+ 95, 5, 95, -1, 95, 4, 95, -1, 95, 3,
+ 95, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
88, 93, 99, 100, 101, 102, 103, 104, 105, 106,
107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
117, 120, 124, 131, 138, 145, 150, 157, 162, 169,
- 174, 179, 186, 194, 200, 209, 214, 221, 222, 225,
- 230, 240, 245, 255, 260, 265, 272, 280, 290, 294,
- 301, 306, 314, 323, 334, 335, 338, 339, 340, 344,
- 348, 349, 352, 353, 356, 362, 373, 379, 385, 391,
- 397, 403, 409, 417, 423, 433, 439, 445, 451, 457,
- 465, 466, 469, 475, 482, 489, 496, 505, 515, 525,
- 531, 537, 545, 556, 560, 569, 577, 587, 590, 594,
- 600, 601, 605, 608, 609, 613, 617, 621, 625, 631,
- 637, 643, 649, 657, 658, 662, 666, 670, 674, 678,
- 682, 686, 690, 694
+ 174, 179, 186, 194, 202, 216, 224, 238, 243, 250,
+ 251, 254, 259, 269, 274, 284, 289, 294, 301, 309,
+ 319, 323, 330, 339, 350, 351, 354, 355, 356, 360,
+ 364, 365, 368, 369, 372, 378, 389, 395, 401, 407,
+ 413, 419, 425, 433, 439, 449, 455, 461, 467, 473,
+ 481, 482, 485, 491, 498, 505, 512, 521, 531, 541,
+ 547, 553, 561, 572, 576, 585, 593, 603, 606, 610,
+ 616, 617, 621, 624, 625, 629, 633, 637, 641, 647,
+ 653, 659, 665, 673, 674, 678, 682, 686, 690, 694,
+ 698, 702, 706, 710
};
#endif
"LFREG", "LMREG", "LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB",
"LVAR", "':'", "';'", "'='", "','", "'$'", "'('", "')'", "'~'",
"$accept", "prog", "@1", "line", "@2", "inst", "nonnon", "rimrem",
- "remrim", "rimnon", "nonrem", "nonrel", "spec1", "spec2", "spec3",
- "spec4", "spec5", "spec6", "spec7", "spec8", "spec9", "spec10", "spec11",
+ "remrim", "rimnon", "nonrem", "nonrel", "spec1", "spec2", "spec11",
+ "spec3", "spec4", "spec5", "spec6", "spec7", "spec8", "spec9", "spec10",
"spec12", "spec13", "rem", "rom", "rim", "rel", "reg", "imm", "mem",
"omem", "nmem", "nam", "offset", "pointer", "con", "textsize", "expr", 0
};
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 62, 62, 63, 64, 65, 65, 66, 66, 67,
67, 67, 68, 69, 69, 70, 70, 71, 71, 72,
- 72, 73, 73, 74, 74, 74, 75, 76, 77, 77,
+ 72, 73, 73, 74, 74, 75, 75, 75, 76, 77,
78, 78, 79, 80, 81, 81, 82, 82, 82, 82,
82, 82, 83, 83, 84, 84, 85, 85, 85, 85,
85, 85, 85, 86, 86, 86, 86, 86, 86, 86,
static const yytype_uint8 yyr2[] =
{
0, 2, 0, 0, 3, 0, 4, 1, 2, 2,
- 3, 3, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 2, 2, 2, 2, 2, 2, 2, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 2,
2, 0, 1, 3, 3, 2, 1, 2, 1, 2,
- 1, 3, 5, 4, 6, 2, 1, 1, 1, 3,
- 5, 3, 5, 2, 1, 3, 5, 5, 0, 1,
- 3, 5, 3, 3, 1, 1, 1, 1, 2, 2,
+ 1, 3, 5, 5, 7, 4, 6, 2, 1, 1,
+ 1, 3, 5, 3, 5, 2, 1, 3, 5, 5,
+ 0, 1, 3, 3, 1, 1, 1, 1, 2, 2,
1, 1, 1, 1, 4, 2, 1, 1, 1, 1,
1, 1, 1, 2, 2, 2, 2, 4, 5, 3,
1, 1, 1, 4, 4, 4, 6, 9, 9, 3,
{
2, 3, 1, 0, 0, 31, 0, 0, 0, 0,
0, 0, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 58, 0, 0, 0, 7, 4, 0, 9,
- 32, 12, 0, 0, 113, 76, 78, 81, 77, 79,
- 82, 80, 107, 114, 0, 0, 0, 13, 38, 64,
- 65, 90, 91, 103, 92, 0, 14, 72, 36, 73,
- 15, 0, 16, 0, 0, 107, 0, 20, 46, 66,
- 70, 71, 67, 92, 18, 0, 32, 47, 48, 21,
- 107, 0, 0, 17, 40, 0, 0, 19, 0, 28,
- 0, 29, 0, 22, 0, 23, 0, 24, 54, 25,
- 0, 26, 0, 27, 59, 30, 0, 5, 0, 0,
+ 0, 0, 60, 0, 0, 0, 7, 4, 0, 19,
+ 28, 9, 32, 12, 0, 0, 113, 76, 78, 81,
+ 77, 79, 82, 80, 107, 114, 0, 0, 0, 13,
+ 38, 64, 65, 90, 91, 103, 92, 0, 14, 72,
+ 36, 73, 15, 0, 16, 0, 0, 107, 0, 20,
+ 48, 66, 70, 71, 67, 92, 18, 0, 32, 49,
+ 50, 21, 107, 0, 0, 17, 40, 0, 0, 0,
+ 0, 29, 0, 22, 0, 23, 0, 24, 56, 25,
+ 0, 26, 0, 27, 61, 30, 0, 5, 0, 0,
8, 116, 115, 0, 0, 0, 0, 37, 0, 0,
123, 0, 117, 0, 0, 0, 86, 85, 0, 84,
- 83, 35, 0, 0, 68, 69, 75, 45, 0, 0,
- 75, 39, 0, 0, 0, 0, 0, 0, 0, 53,
+ 83, 35, 0, 0, 68, 69, 75, 47, 0, 0,
+ 75, 39, 0, 0, 0, 0, 0, 0, 0, 55,
0, 0, 0, 0, 10, 11, 107, 108, 109, 0,
0, 99, 100, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 118, 0, 0, 0, 0, 89, 0,
- 0, 33, 34, 0, 0, 41, 0, 0, 60, 0,
- 62, 49, 51, 55, 0, 0, 63, 6, 0, 112,
+ 0, 33, 34, 0, 0, 41, 0, 0, 45, 0,
+ 62, 51, 53, 57, 0, 0, 63, 6, 0, 112,
110, 111, 0, 0, 0, 133, 132, 131, 0, 0,
124, 125, 126, 127, 128, 0, 0, 93, 95, 94,
0, 87, 74, 0, 0, 119, 43, 0, 0, 0,
0, 0, 0, 0, 105, 101, 0, 129, 130, 0,
- 0, 0, 88, 42, 120, 0, 0, 61, 50, 52,
- 56, 57, 0, 0, 104, 96, 0, 0, 0, 121,
+ 0, 0, 88, 42, 120, 0, 0, 46, 52, 54,
+ 58, 59, 0, 0, 104, 96, 0, 0, 0, 121,
44, 106, 0, 0, 0, 122, 102, 0, 0, 97,
98
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 1, 3, 27, 153, 28, 31, 60, 62, 56,
- 47, 83, 74, 87, 67, 79, 93, 95, 97, 99,
- 101, 103, 89, 91, 105, 57, 68, 58, 69, 49,
- 59, 50, 51, 52, 53, 116, 202, 54, 226, 121
+ -1, 1, 3, 27, 153, 28, 33, 62, 64, 58,
+ 49, 85, 76, 29, 30, 69, 81, 93, 95, 97,
+ 99, 101, 103, 91, 105, 59, 70, 60, 71, 51,
+ 61, 52, 53, 54, 55, 116, 202, 56, 226, 121
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -89
+#define YYPACT_NINF -87
static const yytype_int16 yypact[] =
{
- -89, 16, -89, 163, 0, -13, 219, 241, 241, 317,
- 193, 13, 267, 333, 164, 164, 241, 241, 241, 241,
- 472, 17, 17, 241, -17, 23, -89, -89, 52, -89,
- -89, -89, 433, 433, -89, -89, -89, -89, -89, -89,
- -89, -89, 45, -89, 317, 358, 433, -89, -89, -89,
- -89, -89, -89, 50, 63, 351, -89, -89, 68, -89,
- -89, 71, -89, 73, 70, 45, 292, -89, -89, -89,
- -89, -89, -89, 80, -89, 117, 317, -89, -89, -89,
- 38, 365, 433, -89, -89, 87, 86, -89, 89, -89,
- 90, -89, 91, -89, 92, -89, 100, -89, 101, -89,
- 105, -89, 114, -89, -89, -89, 115, -89, 433, 433,
- -89, -89, -89, 160, 433, 433, 118, -89, 5, 116,
- -89, 82, -89, 131, -12, 383, -89, -89, 392, -89,
- -89, -89, 317, 241, -89, -89, 118, -89, 6, 433,
- -89, -89, 365, 140, 399, 408, 241, 317, 317, 317,
- 317, 317, 241, 163, 486, 486, 38, -89, -89, 4,
- 433, 122, -89, 433, 433, 433, 189, 190, 433, 433,
- 433, 433, 433, -89, 194, 7, 146, 153, -89, 424,
- 159, -89, -89, 162, 167, -89, 9, 171, -89, 173,
- -89, 166, 178, -89, 184, 185, -89, -89, 186, -89,
- -89, -89, 187, 188, 208, 495, 512, 519, 433, 433,
- 85, 85, -89, -89, -89, 433, 433, 199, -89, -89,
- 207, -89, -89, 17, 215, 253, -89, 213, 17, 230,
- 231, 433, 472, 233, -89, -89, 261, 55, 55, 229,
- 235, 75, -89, -89, 275, 255, 9, -89, -89, -89,
- -89, -89, 236, 433, -89, -89, 281, 282, 263, -89,
- -89, -89, 243, 433, 433, -89, -89, 244, 256, -89,
- -89
+ -87, 8, -87, 211, -34, -31, 236, 256, 256, 330,
+ 156, -19, 290, 9, 384, 384, 256, 256, 256, 256,
+ 72, -20, -20, 256, -15, -5, -87, -87, 4, -87,
+ -87, -87, -87, -87, 34, 34, -87, -87, -87, -87,
+ -87, -87, -87, -87, 119, -87, 330, 364, 34, -87,
+ -87, -87, -87, -87, -87, -13, 10, 270, -87, -87,
+ 20, -87, -87, 37, -87, 39, 350, 119, 310, -87,
+ -87, -87, -87, -87, -87, 41, -87, 44, 330, -87,
+ -87, -87, 60, 391, 34, -87, -87, 45, 50, 55,
+ 66, -87, 70, -87, 73, -87, 85, -87, 92, -87,
+ 105, -87, 116, -87, -87, -87, 117, -87, 34, 34,
+ -87, -87, -87, 107, 34, 34, 80, -87, 21, 135,
+ -87, 168, -87, 133, 82, 398, -87, -87, 401, -87,
+ -87, -87, 330, 256, -87, -87, 80, -87, 63, 34,
+ -87, -87, 391, 157, 417, 426, 256, 330, 330, 330,
+ 330, 330, 256, 211, 486, 486, 60, -87, -87, 58,
+ 34, 149, -87, 34, 34, 34, 184, 197, 34, 34,
+ 34, 34, 34, -87, 198, 26, 159, 160, -87, 433,
+ 162, -87, -87, 163, 167, -87, 7, 195, -87, 196,
+ -87, 171, 200, -87, 199, 201, -87, -87, 202, -87,
+ -87, -87, 203, 205, 173, 495, 503, 175, 34, 34,
+ 128, 128, -87, -87, -87, 34, 34, 208, -87, -87,
+ 209, -87, -87, -20, 217, 242, -87, 210, -20, 229,
+ 231, 34, 72, 232, -87, -87, 260, 40, 40, 228,
+ 230, 104, -87, -87, 262, 253, 7, -87, -87, -87,
+ -87, -87, 250, 34, -87, -87, 276, 280, 273, -87,
+ -87, -87, 252, 34, 34, -87, -87, 267, 278, -87,
+ -87
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -89, -89, -89, 156, -89, -89, 301, -89, -89, -89,
- 303, -89, -89, -89, -89, -89, -89, -89, -89, -89,
- -89, -89, -89, -89, -89, -2, 250, 11, -11, -9,
- -8, 112, -4, 2, -3, -56, -89, -10, 77, -88
+ -87, -87, -87, 154, -87, -87, 298, -87, -87, -87,
+ 302, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, -87, -2, 248, 11, -11, -9,
+ -8, 137, -1, 2, 35, -61, -87, -10, 78, -86
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
#define YYTABLE_NINF -1
static const yytype_uint16 yytable[] =
{
- 73, 70, 84, 86, 48, 85, 71, 63, 75, 136,
- 48, 100, 72, 102, 104, 160, 2, 216, 224, 61,
- 154, 155, 111, 112, 140, 175, 176, 92, 94, 96,
- 98, 107, 177, 108, 106, 120, 122, 199, 30, 200,
- 183, 225, 117, 175, 176, 130, 114, 115, 201, 29,
- 177, 113, 129, 114, 115, 134, 73, 70, 42, 161,
- 135, 217, 71, 168, 169, 170, 171, 172, 72, 55,
- 141, 86, 120, 109, 117, 205, 206, 207, 32, 33,
- 210, 211, 212, 213, 214, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 170, 171, 172, 120, 120,
- 198, 110, 34, 123, 157, 158, 35, 36, 37, 38,
- 39, 40, 256, 257, 41, 112, 124, 43, 120, 131,
- 237, 238, 132, 45, 133, 46, 88, 90, 139, 184,
- 181, 185, 86, 138, 187, 189, 173, 188, 142, 143,
- 144, 145, 146, 147, 182, 191, 192, 193, 194, 195,
- 203, 148, 149, 120, 120, 120, 150, 190, 120, 120,
- 120, 120, 120, 196, 4, 151, 152, 156, 174, 112,
- 162, 159, 32, 33, 183, 204, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 208, 34, 209, 120, 120,
- 218, 32, 33, 64, 215, 239, 240, 219, 24, 42,
- 25, 43, 26, 221, 229, 243, 222, 45, 223, 46,
- 247, 250, 227, 251, 228, 34, 230, 32, 33, 35,
- 36, 37, 38, 39, 40, 231, 232, 41, 65, 233,
- 43, 234, 235, 262, 66, 236, 45, 244, 46, 32,
- 33, 34, 241, 267, 268, 35, 36, 37, 38, 39,
- 40, 242, 245, 41, 42, 246, 43, 248, 252, 249,
- 44, 253, 45, 34, 46, 32, 33, 35, 36, 37,
- 38, 39, 40, 254, 258, 41, 42, 259, 43, 255,
- 261, 263, 264, 55, 45, 265, 46, 266, 269, 34,
- 32, 33, 64, 35, 36, 37, 38, 39, 40, 197,
- 270, 41, 42, 77, 43, 78, 137, 0, 76, 0,
- 45, 0, 46, 260, 34, 32, 33, 0, 35, 36,
- 37, 38, 39, 40, 0, 0, 41, 65, 0, 43,
- 0, 32, 33, 0, 0, 45, 0, 46, 0, 34,
- 0, 0, 0, 35, 36, 37, 38, 39, 40, 32,
- 125, 41, 42, 0, 43, 34, 32, 33, 0, 0,
- 45, 0, 46, 32, 33, 0, 0, 0, 80, 0,
- 43, 0, 0, 34, 81, 55, 82, 0, 46, 0,
- 34, 32, 33, 126, 127, 118, 42, 34, 43, 0,
- 32, 179, 119, 0, 128, 43, 46, 32, 33, 0,
- 80, 82, 43, 46, 0, 34, 32, 33, 82, 0,
- 46, 0, 0, 0, 34, 178, 0, 0, 0, 0,
- 43, 34, 32, 33, 180, 0, 82, 0, 46, 43,
- 34, 32, 33, 0, 0, 82, 43, 46, 0, 0,
- 0, 186, 82, 0, 46, 43, 34, 0, 0, 0,
- 55, 82, 0, 46, 0, 34, 220, 0, 0, 0,
- 0, 43, 0, 0, 0, 0, 0, 82, 0, 46,
- 43, 0, 0, 0, 0, 0, 82, 0, 46, 163,
+ 75, 72, 86, 88, 50, 87, 136, 65, 2, 73,
+ 50, 100, 74, 102, 104, 31, 224, 34, 35, 63,
+ 32, 140, 154, 155, 111, 112, 44, 92, 94, 96,
+ 98, 160, 57, 107, 106, 108, 216, 120, 122, 225,
+ 123, 36, 34, 35, 117, 109, 77, 130, 168, 169,
+ 170, 171, 172, 110, 82, 139, 45, 134, 75, 72,
+ 83, 57, 84, 124, 48, 135, 36, 73, 114, 115,
+ 74, 131, 141, 88, 120, 161, 117, 205, 206, 207,
+ 217, 45, 210, 211, 212, 213, 214, 84, 132, 48,
+ 133, 199, 129, 200, 138, 198, 142, 183, 120, 120,
+ 175, 176, 201, 143, 157, 158, 144, 177, 37, 38,
+ 39, 40, 41, 42, 156, 112, 43, 145, 120, 175,
+ 176, 146, 237, 238, 147, 113, 177, 114, 115, 184,
+ 181, 185, 88, 159, 187, 189, 148, 188, 170, 171,
+ 172, 256, 257, 149, 182, 191, 192, 193, 194, 195,
+ 203, 89, 90, 120, 120, 120, 150, 190, 120, 120,
+ 120, 120, 120, 196, 34, 35, 66, 151, 152, 112,
+ 174, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 166, 167, 168, 169, 170, 171, 172, 36, 162,
+ 208, 183, 37, 38, 39, 40, 41, 42, 120, 120,
+ 43, 67, 204, 45, 209, 239, 240, 68, 215, 47,
+ 236, 48, 4, 218, 219, 243, 221, 222, 223, 229,
+ 247, 250, 173, 251, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 262, 34, 35, 227, 228, 230, 244,
+ 231, 245, 232, 267, 268, 233, 24, 234, 25, 235,
+ 26, 241, 246, 242, 34, 35, 248, 252, 36, 249,
+ 253, 258, 37, 38, 39, 40, 41, 42, 34, 125,
+ 43, 44, 254, 45, 255, 259, 263, 46, 36, 47,
+ 264, 48, 37, 38, 39, 40, 41, 42, 34, 35,
+ 43, 44, 36, 45, 261, 265, 266, 197, 57, 47,
+ 79, 48, 126, 127, 80, 44, 137, 45, 34, 35,
+ 66, 269, 36, 128, 260, 48, 37, 38, 39, 40,
+ 41, 42, 270, 0, 43, 44, 0, 45, 34, 35,
+ 0, 78, 36, 47, 0, 48, 37, 38, 39, 40,
+ 41, 42, 0, 0, 43, 67, 0, 45, 34, 35,
+ 0, 0, 36, 47, 0, 48, 37, 38, 39, 40,
+ 41, 42, 34, 35, 43, 44, 0, 45, 0, 0,
+ 0, 0, 36, 47, 0, 48, 37, 38, 39, 40,
+ 41, 42, 34, 35, 43, 0, 36, 45, 0, 34,
+ 35, 118, 0, 47, 0, 48, 34, 35, 119, 34,
+ 179, 45, 0, 0, 0, 0, 36, 84, 0, 48,
+ 0, 0, 0, 36, 0, 34, 35, 0, 0, 44,
+ 36, 45, 0, 36, 34, 35, 82, 47, 45, 48,
+ 178, 34, 35, 180, 84, 45, 48, 0, 45, 36,
+ 0, 84, 0, 48, 84, 0, 48, 0, 36, 0,
+ 0, 0, 0, 0, 45, 36, 0, 0, 0, 186,
+ 84, 0, 48, 45, 0, 220, 0, 0, 57, 84,
+ 45, 48, 0, 0, 0, 0, 84, 0, 48, 163,
164, 165, 166, 167, 168, 169, 170, 171, 172, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 35, 36,
- 37, 38, 39, 40, 0, 0, 41, 165, 166, 167,
- 168, 169, 170, 171, 172, 166, 167, 168, 169, 170,
- 171, 172
+ 165, 166, 167, 168, 169, 170, 171, 172, 165, 166,
+ 167, 168, 169, 170, 171, 172
};
static const yytype_int16 yycheck[] =
{
- 10, 10, 13, 13, 6, 13, 10, 9, 11, 65,
- 12, 20, 10, 21, 22, 10, 0, 10, 9, 8,
- 108, 109, 32, 33, 80, 37, 38, 16, 17, 18,
- 19, 48, 44, 50, 23, 45, 46, 33, 51, 35,
- 34, 32, 44, 37, 38, 55, 8, 9, 44, 49,
- 44, 6, 55, 8, 9, 64, 66, 66, 45, 54,
- 64, 54, 66, 8, 9, 10, 11, 12, 66, 52,
- 81, 81, 82, 50, 76, 163, 164, 165, 8, 9,
- 168, 169, 170, 171, 172, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 10, 11, 12, 108, 109,
- 156, 49, 32, 53, 114, 115, 36, 37, 38, 39,
- 40, 41, 37, 38, 44, 125, 53, 47, 128, 51,
- 208, 209, 51, 53, 51, 55, 14, 15, 11, 139,
- 132, 142, 142, 53, 144, 145, 54, 145, 51, 53,
- 51, 51, 51, 51, 133, 147, 148, 149, 150, 151,
- 160, 51, 51, 163, 164, 165, 51, 146, 168, 169,
- 170, 171, 172, 152, 1, 51, 51, 7, 37, 179,
- 54, 53, 8, 9, 34, 53, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 6, 32, 7, 208, 209,
- 54, 8, 9, 10, 10, 215, 216, 54, 45, 45,
- 47, 47, 49, 54, 48, 223, 54, 53, 51, 55,
- 228, 231, 51, 232, 51, 32, 48, 8, 9, 36,
- 37, 38, 39, 40, 41, 51, 51, 44, 45, 53,
- 47, 54, 54, 253, 51, 37, 53, 32, 55, 8,
- 9, 32, 53, 263, 264, 36, 37, 38, 39, 40,
- 41, 54, 9, 44, 45, 52, 47, 37, 35, 38,
- 51, 10, 53, 32, 55, 8, 9, 36, 37, 38,
- 39, 40, 41, 54, 9, 44, 45, 32, 47, 54,
- 54, 10, 10, 52, 53, 32, 55, 54, 54, 32,
- 8, 9, 10, 36, 37, 38, 39, 40, 41, 153,
- 54, 44, 45, 12, 47, 12, 66, -1, 51, -1,
- 53, -1, 55, 246, 32, 8, 9, -1, 36, 37,
- 38, 39, 40, 41, -1, -1, 44, 45, -1, 47,
- -1, 8, 9, -1, -1, 53, -1, 55, -1, 32,
- -1, -1, -1, 36, 37, 38, 39, 40, 41, 8,
- 9, 44, 45, -1, 47, 32, 8, 9, -1, -1,
- 53, -1, 55, 8, 9, -1, -1, -1, 45, -1,
- 47, -1, -1, 32, 51, 52, 53, -1, 55, -1,
- 32, 8, 9, 42, 43, 37, 45, 32, 47, -1,
- 8, 9, 44, -1, 53, 47, 55, 8, 9, -1,
- 45, 53, 47, 55, -1, 32, 8, 9, 53, -1,
- 55, -1, -1, -1, 32, 42, -1, -1, -1, -1,
- 47, 32, 8, 9, 42, -1, 53, -1, 55, 47,
- 32, 8, 9, -1, -1, 53, 47, 55, -1, -1,
- -1, 52, 53, -1, 55, 47, 32, -1, -1, -1,
- 52, 53, -1, 55, -1, 32, 42, -1, -1, -1,
- -1, 47, -1, -1, -1, -1, -1, 53, -1, 55,
- 47, -1, -1, -1, -1, -1, 53, -1, 55, 3,
+ 10, 10, 13, 13, 6, 13, 67, 9, 0, 10,
+ 12, 20, 10, 21, 22, 49, 9, 8, 9, 8,
+ 51, 82, 108, 109, 34, 35, 45, 16, 17, 18,
+ 19, 10, 52, 48, 23, 50, 10, 47, 48, 32,
+ 53, 32, 8, 9, 46, 50, 11, 57, 8, 9,
+ 10, 11, 12, 49, 45, 11, 47, 66, 68, 68,
+ 51, 52, 53, 53, 55, 66, 32, 68, 8, 9,
+ 68, 51, 83, 83, 84, 54, 78, 163, 164, 165,
+ 54, 47, 168, 169, 170, 171, 172, 53, 51, 55,
+ 51, 33, 57, 35, 53, 156, 51, 34, 108, 109,
+ 37, 38, 44, 53, 114, 115, 51, 44, 36, 37,
+ 38, 39, 40, 41, 7, 125, 44, 51, 128, 37,
+ 38, 51, 208, 209, 51, 6, 44, 8, 9, 139,
+ 132, 142, 142, 53, 144, 145, 51, 145, 10, 11,
+ 12, 37, 38, 51, 133, 147, 148, 149, 150, 151,
+ 160, 14, 15, 163, 164, 165, 51, 146, 168, 169,
+ 170, 171, 172, 152, 8, 9, 10, 51, 51, 179,
+ 37, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 6, 7, 8, 9, 10, 11, 12, 32, 54,
+ 6, 34, 36, 37, 38, 39, 40, 41, 208, 209,
+ 44, 45, 53, 47, 7, 215, 216, 51, 10, 53,
+ 37, 55, 1, 54, 54, 223, 54, 54, 51, 48,
+ 228, 231, 54, 232, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 253, 8, 9, 51, 51, 48, 32,
+ 51, 9, 51, 263, 264, 53, 45, 54, 47, 54,
+ 49, 53, 52, 54, 8, 9, 37, 35, 32, 38,
+ 10, 9, 36, 37, 38, 39, 40, 41, 8, 9,
+ 44, 45, 54, 47, 54, 32, 10, 51, 32, 53,
+ 10, 55, 36, 37, 38, 39, 40, 41, 8, 9,
+ 44, 45, 32, 47, 54, 32, 54, 153, 52, 53,
+ 12, 55, 42, 43, 12, 45, 68, 47, 8, 9,
+ 10, 54, 32, 53, 246, 55, 36, 37, 38, 39,
+ 40, 41, 54, -1, 44, 45, -1, 47, 8, 9,
+ -1, 51, 32, 53, -1, 55, 36, 37, 38, 39,
+ 40, 41, -1, -1, 44, 45, -1, 47, 8, 9,
+ -1, -1, 32, 53, -1, 55, 36, 37, 38, 39,
+ 40, 41, 8, 9, 44, 45, -1, 47, -1, -1,
+ -1, -1, 32, 53, -1, 55, 36, 37, 38, 39,
+ 40, 41, 8, 9, 44, -1, 32, 47, -1, 8,
+ 9, 37, -1, 53, -1, 55, 8, 9, 44, 8,
+ 9, 47, -1, -1, -1, -1, 32, 53, -1, 55,
+ -1, -1, -1, 32, -1, 8, 9, -1, -1, 45,
+ 32, 47, -1, 32, 8, 9, 45, 53, 47, 55,
+ 42, 8, 9, 42, 53, 47, 55, -1, 47, 32,
+ -1, 53, -1, 55, 53, -1, 55, -1, 32, -1,
+ -1, -1, -1, -1, 47, 32, -1, -1, -1, 52,
+ 53, -1, 55, 47, -1, 42, -1, -1, 52, 53,
+ 47, 55, -1, -1, -1, -1, 53, -1, 55, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 36, 37,
- 38, 39, 40, 41, -1, -1, 44, 5, 6, 7,
- 8, 9, 10, 11, 12, 6, 7, 8, 9, 10,
- 11, 12
+ 5, 6, 7, 8, 9, 10, 11, 12, 5, 6,
+ 7, 8, 9, 10, 11, 12
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
{
0, 57, 0, 58, 1, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 45, 47, 49, 59, 61, 49,
- 51, 62, 8, 9, 32, 36, 37, 38, 39, 40,
- 41, 44, 45, 47, 51, 53, 55, 66, 81, 85,
- 87, 88, 89, 90, 93, 52, 65, 81, 83, 86,
- 63, 83, 64, 81, 10, 45, 51, 70, 82, 84,
- 85, 88, 89, 93, 68, 90, 51, 62, 66, 71,
- 45, 51, 53, 67, 84, 86, 93, 69, 87, 78,
- 87, 79, 83, 72, 83, 73, 83, 74, 83, 75,
- 85, 76, 86, 77, 86, 80, 83, 48, 50, 50,
+ 28, 29, 30, 31, 45, 47, 49, 59, 61, 69,
+ 70, 49, 51, 62, 8, 9, 32, 36, 37, 38,
+ 39, 40, 41, 44, 45, 47, 51, 53, 55, 66,
+ 81, 85, 87, 88, 89, 90, 93, 52, 65, 81,
+ 83, 86, 63, 83, 64, 81, 10, 45, 51, 71,
+ 82, 84, 85, 88, 89, 93, 68, 90, 51, 62,
+ 66, 72, 45, 51, 53, 67, 84, 86, 93, 87,
+ 87, 79, 83, 73, 83, 74, 83, 75, 83, 76,
+ 85, 77, 86, 78, 86, 80, 83, 48, 50, 50,
49, 93, 93, 6, 8, 9, 91, 81, 37, 44,
93, 95, 93, 53, 53, 9, 42, 43, 53, 90,
93, 51, 51, 51, 85, 88, 91, 82, 53, 11,
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
break;
- case 19:
-#line 106 "a.y"
- { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
- break;
-
case 20:
#line 107 "a.y"
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
break;
- case 28:
-#line 115 "a.y"
- { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
- break;
-
case 29:
#line 116 "a.y"
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
case 43:
#line 195 "a.y"
{
- settext((yyvsp[(1) - (4)].addr).sym);
- (yyval.addr2).from = (yyvsp[(1) - (4)].addr);
- (yyval.addr2).to = (yyvsp[(4) - (4)].addr);
+ Addr2 a;
+ settext((yyvsp[(2) - (5)].addr).sym);
+ a.from = (yyvsp[(2) - (5)].addr);
+ a.to = (yyvsp[(5) - (5)].addr);
+ outcode(ATEXT, &a);
}
break;
case 44:
-#line 201 "a.y"
- {
- settext((yyvsp[(1) - (6)].addr).sym);
- (yyval.addr2).from = (yyvsp[(1) - (6)].addr);
- (yyval.addr2).from.scale = (yyvsp[(3) - (6)].lval);
- (yyval.addr2).to = (yyvsp[(6) - (6)].addr);
+#line 203 "a.y"
+ {
+ Addr2 a;
+ settext((yyvsp[(2) - (7)].addr).sym);
+ a.from = (yyvsp[(2) - (7)].addr);
+ a.to = (yyvsp[(7) - (7)].addr);
+ outcode(ATEXT, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (7)].lval);
+ }
}
break;
case 45:
-#line 210 "a.y"
+#line 217 "a.y"
+ {
+ Addr2 a;
+ settext((yyvsp[(2) - (4)].addr).sym);
+ a.from = (yyvsp[(2) - (4)].addr);
+ a.to = (yyvsp[(4) - (4)].addr);
+ outcode(AGLOBL, &a);
+ }
+ break;
+
+ case 46:
+#line 225 "a.y"
+ {
+ Addr2 a;
+ settext((yyvsp[(2) - (6)].addr).sym);
+ a.from = (yyvsp[(2) - (6)].addr);
+ a.to = (yyvsp[(6) - (6)].addr);
+ outcode(AGLOBL, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (6)].lval);
+ }
+ }
+ break;
+
+ case 47:
+#line 239 "a.y"
{
(yyval.addr2).from = nullgen;
(yyval.addr2).to = (yyvsp[(2) - (2)].addr);
}
break;
- case 46:
-#line 215 "a.y"
+ case 48:
+#line 244 "a.y"
{
(yyval.addr2).from = nullgen;
(yyval.addr2).to = (yyvsp[(1) - (1)].addr);
}
break;
- case 49:
-#line 226 "a.y"
+ case 51:
+#line 255 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (3)].addr);
(yyval.addr2).to = (yyvsp[(3) - (3)].addr);
}
break;
- case 50:
-#line 231 "a.y"
+ case 52:
+#line 260 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (5)].addr);
(yyval.addr2).to = (yyvsp[(3) - (5)].addr);
}
break;
- case 51:
-#line 241 "a.y"
+ case 53:
+#line 270 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (3)].addr);
(yyval.addr2).to = (yyvsp[(3) - (3)].addr);
}
break;
- case 52:
-#line 246 "a.y"
+ case 54:
+#line 275 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (5)].addr);
(yyval.addr2).to = (yyvsp[(3) - (5)].addr);
}
break;
- case 53:
-#line 256 "a.y"
+ case 55:
+#line 285 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (2)].addr);
(yyval.addr2).to = nullgen;
}
break;
- case 54:
-#line 261 "a.y"
+ case 56:
+#line 290 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (1)].addr);
(yyval.addr2).to = nullgen;
}
break;
- case 55:
-#line 266 "a.y"
+ case 57:
+#line 295 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (3)].addr);
(yyval.addr2).to = (yyvsp[(3) - (3)].addr);
}
break;
- case 56:
-#line 273 "a.y"
+ case 58:
+#line 302 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (5)].addr);
(yyval.addr2).to = (yyvsp[(3) - (5)].addr);
}
break;
- case 57:
-#line 281 "a.y"
+ case 59:
+#line 310 "a.y"
{
(yyval.addr2).from = (yyvsp[(3) - (5)].addr);
(yyval.addr2).to = (yyvsp[(5) - (5)].addr);
}
break;
- case 58:
-#line 290 "a.y"
+ case 60:
+#line 319 "a.y"
{
(yyval.addr2).from = nullgen;
(yyval.addr2).to = nullgen;
}
break;
- case 59:
-#line 295 "a.y"
+ case 61:
+#line 324 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (1)].addr);
(yyval.addr2).to = nullgen;
}
break;
- case 60:
-#line 302 "a.y"
- {
- (yyval.addr2).from = (yyvsp[(1) - (3)].addr);
- (yyval.addr2).to = (yyvsp[(3) - (3)].addr);
- }
- break;
-
- case 61:
-#line 307 "a.y"
- {
- (yyval.addr2).from = (yyvsp[(1) - (5)].addr);
- (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval);
- (yyval.addr2).to = (yyvsp[(5) - (5)].addr);
- }
- break;
-
case 62:
-#line 315 "a.y"
+#line 331 "a.y"
{
if((yyvsp[(1) - (3)].addr).type != TYPE_CONST || (yyvsp[(3) - (3)].addr).type != TYPE_CONST)
yyerror("arguments to PCDATA must be integer constants");
break;
case 63:
-#line 324 "a.y"
+#line 340 "a.y"
{
if((yyvsp[(1) - (3)].addr).type != TYPE_CONST)
yyerror("index for FUNCDATA must be integer constant");
break;
case 68:
-#line 341 "a.y"
+#line 357 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
}
break;
case 69:
-#line 345 "a.y"
+#line 361 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
}
break;
case 74:
-#line 357 "a.y"
+#line 373 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_BRANCH;
break;
case 75:
-#line 363 "a.y"
+#line 379 "a.y"
{
(yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym));
(yyval.addr) = nullgen;
break;
case 76:
-#line 374 "a.y"
+#line 390 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 77:
-#line 380 "a.y"
+#line 396 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 78:
-#line 386 "a.y"
+#line 402 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 79:
-#line 392 "a.y"
+#line 408 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 80:
-#line 398 "a.y"
+#line 414 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 81:
-#line 404 "a.y"
+#line 420 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 82:
-#line 410 "a.y"
+#line 426 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 83:
-#line 418 "a.y"
+#line 434 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_CONST;
break;
case 84:
-#line 424 "a.y"
+#line 440 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
(yyval.addr).type = TYPE_ADDR;
break;
case 85:
-#line 434 "a.y"
+#line 450 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SCONST;
break;
case 86:
-#line 440 "a.y"
+#line 456 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 87:
-#line 446 "a.y"
+#line 462 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 88:
-#line 452 "a.y"
+#line 468 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 89:
-#line 458 "a.y"
+#line 474 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 92:
-#line 470 "a.y"
+#line 486 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 93:
-#line 476 "a.y"
+#line 492 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 94:
-#line 483 "a.y"
+#line 499 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 95:
-#line 490 "a.y"
+#line 506 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 96:
-#line 497 "a.y"
+#line 513 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 97:
-#line 506 "a.y"
+#line 522 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 98:
-#line 516 "a.y"
+#line 532 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 99:
-#line 526 "a.y"
+#line 542 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 100:
-#line 532 "a.y"
+#line 548 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 101:
-#line 538 "a.y"
+#line 554 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 102:
-#line 546 "a.y"
+#line 562 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 103:
-#line 557 "a.y"
+#line 573 "a.y"
{
(yyval.addr) = (yyvsp[(1) - (1)].addr);
}
break;
case 104:
-#line 561 "a.y"
+#line 577 "a.y"
{
(yyval.addr) = (yyvsp[(1) - (6)].addr);
(yyval.addr).index = (yyvsp[(3) - (6)].lval);
break;
case 105:
-#line 570 "a.y"
+#line 586 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 106:
-#line 578 "a.y"
+#line 594 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 107:
-#line 587 "a.y"
+#line 603 "a.y"
{
(yyval.lval) = 0;
}
break;
case 108:
-#line 591 "a.y"
+#line 607 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 109:
-#line 595 "a.y"
+#line 611 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 111:
-#line 602 "a.y"
+#line 618 "a.y"
{
(yyval.lval) = NAME_AUTO;
}
break;
case 114:
-#line 610 "a.y"
+#line 626 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
}
break;
case 115:
-#line 614 "a.y"
+#line 630 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 116:
-#line 618 "a.y"
+#line 634 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 117:
-#line 622 "a.y"
+#line 638 "a.y"
{
(yyval.lval) = ~(yyvsp[(2) - (2)].lval);
}
break;
case 118:
-#line 626 "a.y"
+#line 642 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (3)].lval);
}
break;
case 119:
-#line 632 "a.y"
+#line 648 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (1)].lval);
break;
case 120:
-#line 638 "a.y"
+#line 654 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (2)].lval);
break;
case 121:
-#line 644 "a.y"
+#line 660 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (3)].lval);
break;
case 122:
-#line 650 "a.y"
+#line 666 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (4)].lval);
break;
case 124:
-#line 659 "a.y"
+#line 675 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
}
break;
case 125:
-#line 663 "a.y"
+#line 679 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
}
break;
case 126:
-#line 667 "a.y"
+#line 683 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
}
break;
case 127:
-#line 671 "a.y"
+#line 687 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
}
break;
case 128:
-#line 675 "a.y"
+#line 691 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
}
break;
case 129:
-#line 679 "a.y"
+#line 695 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
}
break;
case 130:
-#line 683 "a.y"
+#line 699 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
}
break;
case 131:
-#line 687 "a.y"
+#line 703 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
}
break;
case 132:
-#line 691 "a.y"
+#line 707 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
}
break;
case 133:
-#line 695 "a.y"
+#line 711 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
}
/* Line 1267 of yacc.c. */
-#line 2578 "y.tab.c"
+#line 2581 "y.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
#include "../gc/go.h"
#include "../6l/6.out.h"
-#define TEXTFLAG from.scale
-
EXTERN int32 dynloc;
EXTERN uchar reg[MAXREG];
EXTERN int32 pcloc; // instruction counter
p->to.type = TYPE_CONST;
p->to.offset = nam->type->width;
if(nam->readonly)
- p->from.scale = RODATA;
+ p->from3.offset = RODATA;
if(nam->type != T && !haspointers(nam->type))
- p->from.scale |= NOPTR;
+ p->from3.offset |= NOPTR;
}
void
p->from.sym = linksym(s);
p->to.type = TYPE_CONST;
p->to.offset = width;
- p->from.scale = flags;
+ p->from3.offset = flags;
}
int
EXTERN Biobuf obuf;
EXTERN Link* ctxt;
EXTERN Biobuf bstdout;
+EXTERN Prog* lastpc;
void* alloc(int32);
void* allocn(void*, int32, int32);
%type <lval> con expr pointer offset
%type <addr> mem imm reg nam rel rem rim rom omem nmem textsize
%type <addr2> nonnon nonrel nonrem rimnon rimrem remrim
-%type <addr2> spec1 spec2 spec3 spec4 spec5 spec6 spec7 spec8 spec9 spec10 spec11 spec12
+%type <addr2> spec1 spec3 spec4 spec5 spec6 spec7 spec9 spec10 spec11 spec12
%%
prog:
| prog
| LTYPE4 remrim { outcode($1, &$2); }
| LTYPER nonrel { outcode($1, &$2); }
| LTYPED spec1 { outcode($1, &$2); }
-| LTYPET spec2 { outcode($1, &$2); }
+| spec2
| LTYPEC spec3 { outcode($1, &$2); }
| LTYPEN spec4 { outcode($1, &$2); }
| LTYPES spec5 { outcode($1, &$2); }
| LTYPEM spec6 { outcode($1, &$2); }
| LTYPEI spec7 { outcode($1, &$2); }
-| LTYPEG spec8 { outcode($1, &$2); }
+| spec8
| LTYPEXC spec9 { outcode($1, &$2); }
| LTYPEX spec10 { outcode($1, &$2); }
| LTYPEPC spec11 { outcode($1, &$2); }
}
spec2: /* TEXT */
- mem ',' '$' textsize
+ LTYPET mem ',' '$' textsize
{
- settext($1.sym);
- $$.from = $1;
- $$.to = $4;
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $5;
+ outcode(ATEXT, &a);
}
-| mem ',' con ',' '$' textsize
+| LTYPET mem ',' con ',' '$' textsize
{
- settext($1.sym);
- $$.from = $1;
- $$.from.scale = $3;
- $$.to = $6;
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $7;
+ outcode(ATEXT, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
+ }
+
+spec8: /* GLOBL */
+ LTYPEG mem ',' imm
+ {
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $4;
+ outcode(AGLOBL, &a);
+ }
+| LTYPEG mem ',' con ',' imm
+ {
+ Addr2 a;
+ settext($2.sym);
+ a.from = $2;
+ a.to = $6;
+ outcode(AGLOBL, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
}
spec3: /* JMP/CALL */
$$.to = $3;
}
-spec8: /* GLOBL */
- mem ',' imm
- {
- $$.from = $1;
- $$.to = $3;
- }
-| mem ',' con ',' imm
- {
- $$.from = $1;
- $$.from.scale = $3;
- $$.to = $5;
- }
-
spec9: /* CMPPS/CMPPD */
reg ',' rem ',' con
{
outcode(AEND, &g2);
}
-static Prog *lastpc;
-
void
outcode(int a, Addr2 *g2)
{
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 544
+#define YYLAST 561
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 54
{
0, 0, 3, 4, 5, 9, 10, 15, 17, 20,
23, 27, 31, 34, 37, 40, 43, 46, 49, 52,
- 55, 58, 61, 64, 67, 70, 73, 76, 79, 82,
- 85, 86, 88, 92, 96, 99, 101, 104, 106, 109,
- 111, 115, 121, 126, 133, 136, 138, 141, 143, 145,
- 149, 155, 159, 165, 168, 170, 174, 178, 184, 190,
- 196, 200, 204, 206, 208, 210, 212, 215, 218, 220,
- 222, 224, 226, 228, 233, 236, 238, 240, 242, 244,
- 246, 248, 251, 254, 257, 260, 265, 271, 275, 277,
- 280, 284, 289, 291, 293, 295, 300, 305, 312, 322,
- 332, 336, 340, 345, 351, 360, 362, 369, 375, 383,
- 384, 387, 390, 392, 394, 396, 398, 400, 403, 406,
- 409, 413, 415, 419, 423, 427, 431, 435, 440, 445,
- 449, 453
+ 54, 57, 60, 63, 66, 69, 71, 74, 77, 80,
+ 83, 84, 86, 90, 94, 97, 99, 102, 104, 107,
+ 109, 113, 119, 125, 133, 138, 145, 148, 150, 153,
+ 155, 157, 161, 167, 171, 177, 180, 182, 186, 192,
+ 198, 202, 206, 208, 210, 212, 214, 217, 220, 222,
+ 224, 226, 228, 230, 235, 238, 240, 242, 244, 246,
+ 248, 250, 253, 256, 259, 262, 267, 273, 277, 279,
+ 282, 286, 291, 293, 295, 297, 302, 307, 314, 324,
+ 334, 338, 342, 347, 353, 362, 364, 371, 377, 385,
+ 386, 389, 392, 394, 396, 398, 400, 402, 405, 408,
+ 411, 415, 417, 421, 425, 429, 433, 437, 442, 447,
+ 451, 455
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
1, 47, -1, 43, 48, 92, -1, 45, 48, 92,
-1, 13, 60, -1, 14, 64, -1, 15, 63, -1,
16, 61, -1, 17, 62, -1, 21, 65, -1, 19,
- 66, -1, 22, 67, -1, 18, 68, -1, 20, 69,
- -1, 23, 70, -1, 24, 71, -1, 25, 72, -1,
- 26, 73, -1, 27, 74, -1, 28, 75, -1, 29,
- 76, -1, 30, 77, -1, -1, 49, -1, 80, 49,
- 78, -1, 78, 49, 80, -1, 80, 49, -1, 80,
- -1, 49, 78, -1, 78, -1, 49, 81, -1, 81,
- -1, 83, 49, 81, -1, 88, 11, 91, 49, 83,
- -1, 85, 49, 50, 84, -1, 85, 49, 91, 49,
- 50, 84, -1, 49, 79, -1, 79, -1, 10, 88,
- -1, 60, -1, 64, -1, 80, 49, 78, -1, 80,
- 49, 78, 46, 36, -1, 80, 49, 78, -1, 80,
- 49, 78, 46, 37, -1, 80, 49, -1, 80, -1,
- 80, 49, 78, -1, 85, 49, 83, -1, 85, 49,
- 91, 49, 83, -1, 82, 49, 78, 49, 91, -1,
- 83, 49, 78, 49, 82, -1, 80, 49, 80, -1,
- 80, 49, 80, -1, 82, -1, 85, -1, 81, -1,
- 87, -1, 10, 82, -1, 10, 86, -1, 82, -1,
- 86, -1, 83, -1, 78, -1, 83, -1, 91, 51,
- 33, 52, -1, 43, 89, -1, 35, -1, 38, -1,
- 36, -1, 39, -1, 42, -1, 37, -1, 50, 91,
- -1, 50, 88, -1, 50, 41, -1, 50, 40, -1,
- 50, 51, 40, 52, -1, 50, 51, 9, 40, 52,
- -1, 50, 9, 40, -1, 31, -1, 9, 31, -1,
- 31, 9, 31, -1, 9, 31, 9, 31, -1, 86,
- -1, 87, -1, 91, -1, 91, 51, 36, 52, -1,
- 91, 51, 42, 52, -1, 91, 51, 36, 10, 91,
- 52, -1, 91, 51, 36, 52, 51, 36, 10, 91,
- 52, -1, 91, 51, 36, 52, 51, 37, 10, 91,
- 52, -1, 51, 36, 52, -1, 51, 42, 52, -1,
- 91, 51, 37, 52, -1, 51, 36, 10, 91, 52,
- -1, 51, 36, 52, 51, 36, 10, 91, 52, -1,
- 88, -1, 88, 51, 36, 10, 91, 52, -1, 43,
- 89, 51, 90, 52, -1, 43, 6, 7, 89, 51,
- 34, 52, -1, -1, 8, 91, -1, 9, 91, -1,
- 34, -1, 42, -1, 32, -1, 31, -1, 45, -1,
- 9, 91, -1, 8, 91, -1, 53, 91, -1, 51,
- 92, 52, -1, 91, -1, 92, 8, 92, -1, 92,
- 9, 92, -1, 92, 10, 92, -1, 92, 11, 92,
- -1, 92, 12, 92, -1, 92, 6, 6, 92, -1,
- 92, 7, 7, 92, -1, 92, 5, 92, -1, 92,
- 4, 92, -1, 92, 3, 92, -1
+ 66, -1, 67, -1, 18, 69, -1, 20, 70, -1,
+ 23, 71, -1, 24, 72, -1, 25, 73, -1, 68,
+ -1, 27, 74, -1, 28, 75, -1, 29, 76, -1,
+ 30, 77, -1, -1, 49, -1, 80, 49, 78, -1,
+ 78, 49, 80, -1, 80, 49, -1, 80, -1, 49,
+ 78, -1, 78, -1, 49, 81, -1, 81, -1, 83,
+ 49, 81, -1, 88, 11, 91, 49, 83, -1, 22,
+ 85, 49, 50, 84, -1, 22, 85, 49, 91, 49,
+ 50, 84, -1, 26, 85, 49, 83, -1, 26, 85,
+ 49, 91, 49, 83, -1, 49, 79, -1, 79, -1,
+ 10, 88, -1, 60, -1, 64, -1, 80, 49, 78,
+ -1, 80, 49, 78, 46, 36, -1, 80, 49, 78,
+ -1, 80, 49, 78, 46, 37, -1, 80, 49, -1,
+ 80, -1, 80, 49, 78, -1, 82, 49, 78, 49,
+ 91, -1, 83, 49, 78, 49, 82, -1, 80, 49,
+ 80, -1, 80, 49, 80, -1, 82, -1, 85, -1,
+ 81, -1, 87, -1, 10, 82, -1, 10, 86, -1,
+ 82, -1, 86, -1, 83, -1, 78, -1, 83, -1,
+ 91, 51, 33, 52, -1, 43, 89, -1, 35, -1,
+ 38, -1, 36, -1, 39, -1, 42, -1, 37, -1,
+ 50, 91, -1, 50, 88, -1, 50, 41, -1, 50,
+ 40, -1, 50, 51, 40, 52, -1, 50, 51, 9,
+ 40, 52, -1, 50, 9, 40, -1, 31, -1, 9,
+ 31, -1, 31, 9, 31, -1, 9, 31, 9, 31,
+ -1, 86, -1, 87, -1, 91, -1, 91, 51, 36,
+ 52, -1, 91, 51, 42, 52, -1, 91, 51, 36,
+ 10, 91, 52, -1, 91, 51, 36, 52, 51, 36,
+ 10, 91, 52, -1, 91, 51, 36, 52, 51, 37,
+ 10, 91, 52, -1, 51, 36, 52, -1, 51, 42,
+ 52, -1, 91, 51, 37, 52, -1, 51, 36, 10,
+ 91, 52, -1, 51, 36, 52, 51, 36, 10, 91,
+ 52, -1, 88, -1, 88, 51, 36, 10, 91, 52,
+ -1, 43, 89, 51, 90, 52, -1, 43, 6, 7,
+ 89, 51, 34, 52, -1, -1, 8, 91, -1, 9,
+ 91, -1, 34, -1, 42, -1, 32, -1, 31, -1,
+ 45, -1, 9, 91, -1, 8, 91, -1, 53, 91,
+ -1, 51, 92, 52, -1, 91, -1, 92, 8, 92,
+ -1, 92, 9, 92, -1, 92, 10, 92, -1, 92,
+ 11, 92, -1, 92, 12, 92, -1, 92, 6, 6,
+ 92, -1, 92, 7, 7, 92, -1, 92, 5, 92,
+ -1, 92, 4, 92, -1, 92, 3, 92, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
86, 91, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
117, 121, 128, 135, 142, 147, 154, 159, 166, 171,
- 176, 183, 191, 197, 206, 211, 216, 224, 225, 228,
- 233, 243, 248, 258, 263, 268, 275, 280, 288, 296,
- 306, 315, 326, 327, 330, 331, 332, 336, 340, 341,
- 342, 345, 346, 349, 355, 366, 372, 378, 384, 390,
- 396, 404, 410, 420, 426, 432, 438, 444, 452, 458,
- 464, 470, 478, 479, 482, 489, 496, 503, 513, 523,
- 533, 539, 545, 552, 561, 572, 576, 585, 593, 603,
- 606, 610, 616, 617, 621, 624, 625, 629, 633, 637,
- 641, 647, 648, 652, 656, 660, 664, 668, 672, 676,
- 680, 684
+ 176, 183, 191, 199, 213, 221, 235, 240, 245, 253,
+ 254, 257, 262, 272, 277, 287, 292, 297, 304, 312,
+ 322, 331, 342, 343, 346, 347, 348, 352, 356, 357,
+ 358, 361, 362, 365, 371, 382, 388, 394, 400, 406,
+ 412, 420, 426, 436, 442, 448, 454, 460, 468, 474,
+ 480, 486, 494, 495, 498, 505, 512, 519, 529, 539,
+ 549, 555, 561, 568, 577, 588, 592, 601, 609, 619,
+ 622, 626, 632, 633, 637, 640, 641, 645, 649, 653,
+ 657, 663, 664, 668, 672, 676, 680, 684, 688, 692,
+ 696, 700
};
#endif
"LXREG", "LFCONST", "LSCONST", "LSP", "LNAME", "LLAB", "LVAR", "':'",
"';'", "'='", "','", "'$'", "'('", "')'", "'~'", "$accept", "prog", "@1",
"line", "@2", "inst", "nonnon", "rimrem", "remrim", "rimnon", "nonrem",
- "nonrel", "spec1", "spec2", "spec3", "spec4", "spec5", "spec6", "spec7",
- "spec8", "spec9", "spec10", "spec11", "spec12", "rem", "rom", "rim",
+ "nonrel", "spec1", "spec2", "spec8", "spec3", "spec4", "spec5", "spec6",
+ "spec7", "spec9", "spec10", "spec11", "spec12", "rem", "rom", "rim",
"rel", "reg", "imm", "textsize", "mem", "omem", "nmem", "nam", "offset",
"pointer", "con", "expr", 0
};
59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
60, 60, 61, 62, 63, 63, 64, 64, 65, 65,
- 65, 66, 67, 67, 68, 68, 68, 69, 69, 70,
- 70, 71, 71, 72, 72, 72, 73, 73, 74, 75,
+ 65, 66, 67, 67, 68, 68, 69, 69, 69, 70,
+ 70, 71, 71, 72, 72, 73, 73, 73, 74, 75,
76, 77, 78, 78, 79, 79, 79, 79, 79, 79,
79, 80, 80, 81, 81, 82, 82, 82, 82, 82,
82, 83, 83, 83, 83, 83, 83, 83, 84, 84,
static const yytype_uint8 yyr2[] =
{
0, 2, 0, 0, 3, 0, 4, 1, 2, 2,
- 3, 3, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 2, 2, 2, 2, 2, 2, 2, 1,
+ 2, 2, 2, 2, 2, 1, 2, 2, 2, 2,
0, 1, 3, 3, 2, 1, 2, 1, 2, 1,
- 3, 5, 4, 6, 2, 1, 2, 1, 1, 3,
- 5, 3, 5, 2, 1, 3, 3, 5, 5, 5,
+ 3, 5, 5, 7, 4, 6, 2, 1, 2, 1,
+ 1, 3, 5, 3, 5, 2, 1, 3, 5, 5,
3, 3, 1, 1, 1, 1, 2, 2, 1, 1,
1, 1, 1, 4, 2, 1, 1, 1, 1, 1,
1, 2, 2, 2, 2, 4, 5, 3, 1, 2,
{
2, 3, 1, 0, 0, 30, 0, 0, 0, 0,
0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 7, 4, 0, 9, 31,
- 12, 0, 0, 115, 75, 77, 80, 76, 78, 79,
- 109, 116, 0, 0, 0, 13, 37, 62, 63, 92,
- 93, 105, 94, 0, 14, 71, 35, 72, 15, 0,
- 16, 0, 0, 109, 0, 20, 45, 64, 68, 70,
- 69, 65, 94, 18, 0, 31, 47, 48, 21, 109,
- 0, 0, 17, 39, 0, 0, 19, 0, 22, 0,
- 23, 0, 24, 54, 25, 0, 26, 0, 27, 0,
+ 0, 0, 0, 0, 0, 7, 4, 0, 19, 25,
+ 9, 31, 12, 0, 0, 115, 75, 77, 80, 76,
+ 78, 79, 109, 116, 0, 0, 0, 13, 37, 62,
+ 63, 92, 93, 105, 94, 0, 14, 71, 35, 72,
+ 15, 0, 16, 0, 0, 109, 0, 20, 47, 64,
+ 68, 70, 69, 65, 94, 18, 0, 31, 49, 50,
+ 21, 109, 0, 0, 17, 39, 0, 0, 0, 22,
+ 0, 23, 0, 24, 56, 0, 26, 0, 27, 0,
28, 0, 29, 0, 5, 0, 0, 8, 118, 117,
0, 0, 0, 0, 36, 0, 0, 121, 0, 119,
0, 0, 0, 84, 83, 0, 82, 81, 34, 0,
- 0, 66, 67, 46, 74, 0, 44, 0, 0, 74,
- 38, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+ 0, 66, 67, 48, 74, 0, 46, 0, 0, 74,
+ 38, 0, 0, 0, 0, 0, 55, 0, 0, 0,
0, 0, 0, 10, 11, 109, 110, 111, 0, 0,
100, 101, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 120, 0, 0, 0, 0, 87, 0, 0,
- 32, 33, 0, 0, 40, 0, 0, 49, 51, 55,
- 56, 0, 0, 0, 60, 61, 6, 0, 114, 112,
+ 32, 33, 0, 0, 40, 0, 0, 51, 53, 57,
+ 44, 0, 0, 0, 60, 61, 6, 0, 114, 112,
113, 0, 0, 0, 131, 130, 129, 0, 0, 122,
123, 124, 125, 126, 0, 0, 95, 102, 96, 0,
85, 73, 0, 0, 88, 42, 0, 0, 0, 0,
0, 0, 0, 107, 103, 0, 127, 128, 0, 0,
- 0, 86, 41, 89, 0, 0, 50, 52, 57, 58,
+ 0, 86, 41, 89, 0, 0, 52, 54, 45, 58,
59, 0, 0, 106, 97, 0, 0, 0, 90, 43,
108, 0, 0, 0, 91, 104, 0, 0, 98, 99
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 1, 3, 26, 152, 27, 30, 58, 60, 54,
- 45, 82, 73, 86, 65, 78, 88, 90, 92, 94,
- 96, 98, 100, 102, 55, 66, 56, 67, 47, 57,
- 225, 48, 49, 50, 51, 113, 201, 52, 118
+ -1, 1, 3, 26, 152, 27, 32, 60, 62, 56,
+ 47, 84, 75, 28, 29, 67, 80, 89, 91, 93,
+ 96, 98, 100, 102, 57, 68, 58, 69, 49, 59,
+ 225, 50, 51, 52, 53, 113, 201, 54, 118
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -89
+#define YYPACT_NINF -87
static const yytype_int16 yypact[] =
{
- -89, 8, -89, 211, -36, -35, 164, 283, 283, 331,
- 235, 9, 307, 41, 409, 283, 283, 283, 409, 502,
- -18, 283, 283, 60, 30, -89, -89, 21, -89, -89,
- -89, 466, 466, -89, -89, -89, -89, -89, -89, -89,
- 79, -89, 331, 394, 466, -89, -89, -89, -89, -89,
- -89, 38, 46, 370, -89, -89, 58, -89, -89, 64,
- -89, 65, 331, 79, 259, -89, -89, -89, -89, -89,
- -89, -89, 66, -89, 105, 331, -89, -89, -89, 31,
- 418, 466, -89, -89, 69, 71, -89, 75, -89, 76,
- -89, 78, -89, 80, -89, 87, -89, 89, -89, 91,
- -89, 93, -89, 95, -89, 466, 466, -89, -89, -89,
- 116, 466, 466, 94, -89, -1, 96, -89, 171, -89,
- 110, -11, 90, -89, -89, 425, -89, -89, -89, 331,
- 283, -89, -89, -89, 94, 355, -89, 67, 466, -89,
- -89, 418, 118, 435, 331, 331, 331, 442, 331, 331,
- 283, 283, 211, 181, 181, 31, -89, -89, 35, 466,
- 104, -89, 466, 466, 466, 150, 158, 466, 466, 466,
- 466, 466, -89, 159, 10, 142, 144, -89, 459, 156,
- -89, -89, 166, 161, -89, 7, 162, 170, 173, -89,
- -89, 197, 198, 199, -89, -89, -89, 200, -89, -89,
- -89, 203, 205, 213, 516, 524, 253, 466, 466, 53,
- 53, -89, -89, -89, 466, 466, 224, -89, -89, 227,
- -89, -89, -18, 219, 267, -89, 231, 246, 250, -18,
- 466, 502, 249, -89, -89, 279, 36, 36, 241, 247,
- 74, -89, -89, 291, 272, 7, -89, -89, -89, -89,
- -89, 254, 466, -89, -89, 295, 297, 277, -89, -89,
- -89, 261, 466, 466, -89, -89, 265, 271, -89, -89
+ -87, 14, -87, 242, -29, -23, 164, 313, 313, 361,
+ 265, -14, 337, 180, 417, 313, 313, 313, 417, 81,
+ 24, 313, 313, 16, 31, -87, -87, 33, -87, -87,
+ -87, -87, -87, 498, 498, -87, -87, -87, -87, -87,
+ -87, -87, 43, -87, 361, 58, 498, -87, -87, -87,
+ -87, -87, -87, 37, 39, 400, -87, -87, 42, -87,
+ -87, 44, -87, 48, 361, 43, 289, -87, -87, -87,
+ -87, -87, -87, -87, 62, -87, 99, 361, -87, -87,
+ -87, 13, 424, 498, -87, -87, 65, 73, 76, -87,
+ 78, -87, 80, -87, 86, 87, -87, 89, -87, 102,
+ -87, 106, -87, 113, -87, 498, 498, -87, -87, -87,
+ 123, 498, 498, 112, -87, -2, 119, -87, 175, -87,
+ 128, 50, 441, -87, -87, 448, -87, -87, -87, 361,
+ 313, -87, -87, -87, 112, 385, -87, -5, 498, -87,
+ -87, 424, 141, 465, 361, 361, 361, 474, 361, 361,
+ 313, 313, 242, 549, 549, 13, -87, -87, 12, 498,
+ 124, -87, 498, 498, 498, 184, 185, 498, 498, 498,
+ 498, 498, -87, 181, 1, 142, 144, -87, 481, 156,
+ -87, -87, 158, 163, -87, 7, 167, 147, 172, -87,
+ -87, 170, 177, 179, -87, -87, -87, 173, -87, -87,
+ -87, 199, 202, 196, 136, 229, 238, 498, 498, 59,
+ 59, -87, -87, -87, 498, 498, 225, -87, -87, 226,
+ -87, -87, 24, 246, 270, -87, 230, 245, 247, 24,
+ 498, 81, 248, -87, -87, 273, 96, 96, 234, 236,
+ 3, -87, -87, 281, 260, 7, -87, -87, -87, -87,
+ -87, 240, 498, -87, -87, 283, 284, 264, -87, -87,
+ -87, 253, 498, 498, -87, -87, 254, 257, -87, -87
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -89, -89, -89, 172, -89, -89, 299, -89, -89, -89,
- 315, -89, -89, -89, -89, -89, -89, -89, -89, -89,
- -89, -89, -89, -89, 18, 266, 20, -7, -9, -8,
- 84, 5, -3, -6, 4, -50, -89, -10, -88
+ -87, -87, -87, 159, -87, -87, 300, -87, -87, -87,
+ 301, -87, -87, -87, -87, -87, -87, -87, -87, -87,
+ -87, -87, -87, -87, 21, 251, 26, -7, -9, -8,
+ 74, -1, -3, -6, 4, -56, -87, -10, -86
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
#define YYTABLE_NINF -1
static const yytype_uint16 yytable[] =
{
- 72, 68, 69, 85, 71, 84, 83, 70, 2, 159,
- 97, 28, 99, 134, 29, 74, 223, 153, 154, 87,
- 215, 108, 109, 95, 46, 174, 175, 61, 59, 139,
- 46, 176, 53, 117, 119, 89, 91, 93, 224, 111,
- 112, 101, 103, 127, 167, 168, 169, 170, 171, 31,
- 32, 160, 40, 131, 72, 68, 69, 126, 71, 132,
- 114, 70, 216, 169, 170, 171, 133, 198, 107, 199,
- 85, 117, 33, 140, 204, 205, 206, 200, 106, 209,
- 210, 211, 212, 213, 79, 110, 41, 111, 112, 120,
- 80, 53, 81, 114, 44, 117, 117, 121, 31, 32,
- 182, 156, 157, 174, 175, 197, 104, 128, 105, 176,
- 255, 256, 109, 129, 130, 117, 138, 137, 141, 236,
- 237, 33, 142, 155, 143, 144, 131, 145, 183, 146,
- 177, 85, 132, 186, 184, 41, 147, 191, 148, 190,
- 149, 81, 150, 44, 151, 158, 173, 180, 161, 202,
- 181, 182, 117, 117, 117, 203, 207, 117, 117, 117,
- 117, 117, 187, 188, 189, 208, 192, 193, 109, 214,
- 194, 195, 31, 32, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 217, 33, 218, 117, 117, 34,
- 35, 36, 37, 38, 238, 239, 39, 40, 220, 41,
- 222, 226, 4, 42, 242, 43, 227, 44, 221, 228,
- 249, 248, 250, 172, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 261, 31, 32, 62, 229, 230, 231, 235,
- 243, 232, 266, 267, 23, 233, 24, 234, 25, 165,
- 166, 167, 168, 169, 170, 171, 33, 31, 32, 135,
- 34, 35, 36, 37, 38, 240, 244, 39, 63, 241,
- 41, 245, 246, 251, 64, 53, 43, 247, 44, 252,
- 33, 31, 32, 253, 34, 35, 36, 37, 38, 254,
- 257, 39, 63, 258, 41, 262, 260, 263, 264, 53,
- 43, 76, 44, 265, 33, 31, 32, 268, 34, 35,
- 36, 37, 38, 269, 196, 39, 40, 77, 41, 259,
- 136, 0, 0, 53, 43, 0, 44, 0, 33, 31,
- 32, 0, 34, 35, 36, 37, 38, 0, 0, 39,
- 40, 0, 41, 0, 0, 0, 75, 0, 43, 0,
- 44, 0, 33, 31, 32, 0, 34, 35, 36, 37,
- 38, 0, 0, 39, 40, 0, 41, 0, 31, 122,
- 0, 0, 43, 0, 44, 0, 33, 0, 0, 0,
- 34, 35, 36, 37, 38, 0, 0, 39, 0, 0,
- 41, 33, 31, 32, 0, 0, 43, 0, 44, 0,
- 123, 124, 0, 40, 0, 41, 0, 31, 32, 0,
- 0, 125, 0, 44, 0, 33, 31, 32, 0, 0,
- 115, 0, 0, 31, 178, 0, 116, 0, 0, 41,
- 33, 0, 0, 31, 32, 81, 0, 44, 0, 33,
- 31, 32, 40, 0, 41, 0, 33, 0, 0, 0,
- 43, 79, 44, 41, 0, 179, 33, 31, 32, 81,
- 41, 44, 0, 33, 31, 32, 81, 0, 44, 0,
- 41, 0, 0, 0, 0, 185, 81, 41, 44, 0,
- 33, 0, 53, 81, 0, 44, 0, 33, 0, 219,
- 0, 0, 0, 0, 41, 0, 0, 0, 0, 0,
- 81, 41, 44, 0, 0, 0, 0, 81, 0, 44,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 164,
- 165, 166, 167, 168, 169, 170, 171, 34, 35, 36,
- 37, 38, 0, 0, 39
+ 74, 70, 71, 87, 73, 86, 85, 72, 159, 134,
+ 97, 215, 99, 88, 2, 76, 223, 95, 30, 153,
+ 154, 111, 112, 108, 109, 139, 31, 48, 182, 42,
+ 63, 174, 175, 48, 61, 117, 119, 176, 224, 255,
+ 256, 90, 92, 94, 198, 127, 199, 101, 103, 110,
+ 160, 111, 112, 216, 200, 131, 74, 70, 71, 126,
+ 73, 132, 104, 72, 105, 114, 33, 34, 133, 169,
+ 170, 171, 87, 117, 55, 140, 204, 205, 206, 106,
+ 107, 209, 210, 211, 212, 213, 174, 175, 120, 35,
+ 121, 128, 176, 129, 115, 117, 117, 130, 114, 197,
+ 116, 156, 157, 43, 167, 168, 169, 170, 171, 83,
+ 138, 46, 109, 137, 141, 117, 36, 37, 38, 39,
+ 40, 236, 237, 41, 142, 143, 131, 144, 183, 145,
+ 155, 87, 132, 186, 184, 146, 147, 191, 148, 190,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 202,
+ 180, 149, 117, 117, 117, 150, 181, 117, 117, 117,
+ 117, 117, 151, 158, 173, 187, 188, 189, 109, 192,
+ 193, 161, 33, 34, 182, 203, 194, 195, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 33, 34,
+ 207, 214, 208, 227, 217, 35, 218, 117, 117, 36,
+ 37, 38, 39, 40, 238, 239, 41, 42, 220, 43,
+ 221, 35, 222, 44, 242, 45, 226, 46, 228, 229,
+ 249, 248, 250, 81, 232, 43, 230, 172, 231, 82,
+ 55, 83, 235, 46, 164, 165, 166, 167, 168, 169,
+ 170, 171, 261, 4, 165, 166, 167, 168, 169, 170,
+ 171, 233, 266, 267, 234, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 33, 34, 64, 240, 243, 241, 244,
+ 245, 246, 251, 252, 247, 23, 253, 24, 254, 25,
+ 257, 258, 260, 262, 263, 264, 35, 33, 34, 135,
+ 36, 37, 38, 39, 40, 265, 268, 41, 65, 269,
+ 43, 196, 78, 79, 66, 55, 45, 136, 46, 259,
+ 35, 33, 34, 0, 36, 37, 38, 39, 40, 0,
+ 0, 41, 65, 0, 43, 0, 0, 0, 0, 55,
+ 45, 0, 46, 0, 35, 33, 34, 0, 36, 37,
+ 38, 39, 40, 0, 0, 41, 42, 0, 43, 0,
+ 0, 0, 0, 55, 45, 0, 46, 0, 35, 33,
+ 34, 0, 36, 37, 38, 39, 40, 0, 0, 41,
+ 42, 0, 43, 0, 0, 0, 77, 0, 45, 0,
+ 46, 0, 35, 33, 34, 0, 36, 37, 38, 39,
+ 40, 0, 0, 41, 42, 0, 43, 0, 33, 122,
+ 0, 0, 45, 0, 46, 0, 35, 0, 0, 0,
+ 36, 37, 38, 39, 40, 33, 34, 41, 0, 0,
+ 43, 35, 33, 34, 0, 0, 45, 0, 46, 0,
+ 123, 124, 0, 42, 0, 43, 0, 0, 35, 33,
+ 34, 125, 0, 46, 0, 35, 33, 178, 0, 0,
+ 42, 0, 43, 0, 0, 0, 0, 81, 45, 43,
+ 46, 0, 35, 33, 34, 83, 0, 46, 0, 35,
+ 0, 177, 33, 34, 0, 0, 43, 0, 179, 33,
+ 34, 0, 83, 43, 46, 0, 35, 0, 0, 83,
+ 0, 46, 0, 0, 0, 35, 33, 34, 0, 0,
+ 43, 0, 35, 0, 0, 185, 83, 0, 46, 43,
+ 0, 219, 0, 0, 55, 83, 43, 46, 0, 35,
+ 0, 0, 83, 0, 46, 0, 0, 0, 0, 0,
+ 0, 0, 0, 43, 0, 0, 0, 0, 0, 83,
+ 0, 46, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171
};
static const yytype_int16 yycheck[] =
{
- 10, 10, 10, 13, 10, 13, 13, 10, 0, 10,
- 19, 47, 20, 63, 49, 11, 9, 105, 106, 14,
- 10, 31, 32, 18, 6, 36, 37, 9, 8, 79,
- 12, 42, 50, 43, 44, 15, 16, 17, 31, 8,
- 9, 21, 22, 53, 8, 9, 10, 11, 12, 8,
- 9, 52, 43, 62, 64, 64, 64, 53, 64, 62,
- 42, 64, 52, 10, 11, 12, 62, 32, 47, 34,
- 80, 81, 31, 80, 162, 163, 164, 42, 48, 167,
- 168, 169, 170, 171, 43, 6, 45, 8, 9, 51,
- 49, 50, 51, 75, 53, 105, 106, 51, 8, 9,
- 33, 111, 112, 36, 37, 155, 46, 49, 48, 42,
- 36, 37, 122, 49, 49, 125, 11, 51, 49, 207,
- 208, 31, 51, 7, 49, 49, 135, 49, 138, 49,
- 40, 141, 135, 143, 141, 45, 49, 147, 49, 147,
- 49, 51, 49, 53, 49, 51, 36, 129, 52, 159,
- 130, 33, 162, 163, 164, 51, 6, 167, 168, 169,
- 170, 171, 144, 145, 146, 7, 148, 149, 178, 10,
- 150, 151, 8, 9, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 52, 31, 52, 207, 208, 35,
+ 10, 10, 10, 13, 10, 13, 13, 10, 10, 65,
+ 19, 10, 20, 14, 0, 11, 9, 18, 47, 105,
+ 106, 8, 9, 33, 34, 81, 49, 6, 33, 43,
+ 9, 36, 37, 12, 8, 45, 46, 42, 31, 36,
+ 37, 15, 16, 17, 32, 55, 34, 21, 22, 6,
+ 52, 8, 9, 52, 42, 64, 66, 66, 66, 55,
+ 66, 64, 46, 66, 48, 44, 8, 9, 64, 10,
+ 11, 12, 82, 83, 50, 82, 162, 163, 164, 48,
+ 47, 167, 168, 169, 170, 171, 36, 37, 51, 31,
+ 51, 49, 42, 49, 36, 105, 106, 49, 77, 155,
+ 42, 111, 112, 45, 8, 9, 10, 11, 12, 51,
+ 11, 53, 122, 51, 49, 125, 35, 36, 37, 38,
+ 39, 207, 208, 42, 51, 49, 135, 49, 138, 49,
+ 7, 141, 135, 143, 141, 49, 49, 147, 49, 147,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 159,
+ 129, 49, 162, 163, 164, 49, 130, 167, 168, 169,
+ 170, 171, 49, 51, 36, 144, 145, 146, 178, 148,
+ 149, 52, 8, 9, 33, 51, 150, 151, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 8, 9,
+ 6, 10, 7, 46, 52, 31, 52, 207, 208, 35,
36, 37, 38, 39, 214, 215, 42, 43, 52, 45,
- 49, 49, 1, 49, 222, 51, 46, 53, 52, 46,
- 230, 229, 231, 52, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 252, 8, 9, 10, 49, 49, 49, 36,
- 31, 51, 262, 263, 43, 52, 45, 52, 47, 6,
- 7, 8, 9, 10, 11, 12, 31, 8, 9, 10,
- 35, 36, 37, 38, 39, 51, 9, 42, 43, 52,
- 45, 50, 36, 34, 49, 50, 51, 37, 53, 10,
- 31, 8, 9, 52, 35, 36, 37, 38, 39, 52,
- 9, 42, 43, 31, 45, 10, 52, 10, 31, 50,
- 51, 12, 53, 52, 31, 8, 9, 52, 35, 36,
- 37, 38, 39, 52, 152, 42, 43, 12, 45, 245,
- 64, -1, -1, 50, 51, -1, 53, -1, 31, 8,
+ 52, 31, 49, 49, 222, 51, 49, 53, 46, 49,
+ 230, 229, 231, 43, 51, 45, 49, 52, 49, 49,
+ 50, 51, 36, 53, 5, 6, 7, 8, 9, 10,
+ 11, 12, 252, 1, 6, 7, 8, 9, 10, 11,
+ 12, 52, 262, 263, 52, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 8, 9, 10, 51, 31, 52, 9,
+ 50, 36, 34, 10, 37, 43, 52, 45, 52, 47,
+ 9, 31, 52, 10, 10, 31, 31, 8, 9, 10,
+ 35, 36, 37, 38, 39, 52, 52, 42, 43, 52,
+ 45, 152, 12, 12, 49, 50, 51, 66, 53, 245,
+ 31, 8, 9, -1, 35, 36, 37, 38, 39, -1,
+ -1, 42, 43, -1, 45, -1, -1, -1, -1, 50,
+ 51, -1, 53, -1, 31, 8, 9, -1, 35, 36,
+ 37, 38, 39, -1, -1, 42, 43, -1, 45, -1,
+ -1, -1, -1, 50, 51, -1, 53, -1, 31, 8,
9, -1, 35, 36, 37, 38, 39, -1, -1, 42,
43, -1, 45, -1, -1, -1, 49, -1, 51, -1,
53, -1, 31, 8, 9, -1, 35, 36, 37, 38,
39, -1, -1, 42, 43, -1, 45, -1, 8, 9,
-1, -1, 51, -1, 53, -1, 31, -1, -1, -1,
- 35, 36, 37, 38, 39, -1, -1, 42, -1, -1,
+ 35, 36, 37, 38, 39, 8, 9, 42, -1, -1,
45, 31, 8, 9, -1, -1, 51, -1, 53, -1,
- 40, 41, -1, 43, -1, 45, -1, 8, 9, -1,
- -1, 51, -1, 53, -1, 31, 8, 9, -1, -1,
- 36, -1, -1, 8, 9, -1, 42, -1, -1, 45,
- 31, -1, -1, 8, 9, 51, -1, 53, -1, 31,
- 8, 9, 43, -1, 45, -1, 31, -1, -1, -1,
- 51, 43, 53, 45, -1, 40, 31, 8, 9, 51,
- 45, 53, -1, 31, 8, 9, 51, -1, 53, -1,
- 45, -1, -1, -1, -1, 50, 51, 45, 53, -1,
- 31, -1, 50, 51, -1, 53, -1, 31, -1, 40,
- -1, -1, -1, -1, 45, -1, -1, -1, -1, -1,
- 51, 45, 53, -1, -1, -1, -1, 51, -1, 53,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 5,
- 6, 7, 8, 9, 10, 11, 12, 35, 36, 37,
- 38, 39, -1, -1, 42
+ 40, 41, -1, 43, -1, 45, -1, -1, 31, 8,
+ 9, 51, -1, 53, -1, 31, 8, 9, -1, -1,
+ 43, -1, 45, -1, -1, -1, -1, 43, 51, 45,
+ 53, -1, 31, 8, 9, 51, -1, 53, -1, 31,
+ -1, 40, 8, 9, -1, -1, 45, -1, 40, 8,
+ 9, -1, 51, 45, 53, -1, 31, -1, -1, 51,
+ -1, 53, -1, -1, -1, 31, 8, 9, -1, -1,
+ 45, -1, 31, -1, -1, 50, 51, -1, 53, 45,
+ -1, 40, -1, -1, 50, 51, 45, 53, -1, 31,
+ -1, -1, 51, -1, 53, -1, -1, -1, -1, -1,
+ -1, -1, -1, 45, -1, -1, -1, -1, -1, 51,
+ -1, 53, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
{
0, 55, 0, 56, 1, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 43, 45, 47, 57, 59, 47, 49,
- 60, 8, 9, 31, 35, 36, 37, 38, 39, 42,
- 43, 45, 49, 51, 53, 64, 78, 82, 85, 86,
- 87, 88, 91, 50, 63, 78, 80, 83, 61, 80,
- 62, 78, 10, 43, 49, 68, 79, 81, 82, 83,
- 86, 87, 91, 66, 88, 49, 60, 64, 69, 43,
- 49, 51, 65, 81, 83, 91, 67, 85, 70, 80,
- 71, 80, 72, 80, 73, 85, 74, 82, 75, 83,
+ 28, 29, 30, 43, 45, 47, 57, 59, 67, 68,
+ 47, 49, 60, 8, 9, 31, 35, 36, 37, 38,
+ 39, 42, 43, 45, 49, 51, 53, 64, 78, 82,
+ 85, 86, 87, 88, 91, 50, 63, 78, 80, 83,
+ 61, 80, 62, 78, 10, 43, 49, 69, 79, 81,
+ 82, 83, 86, 87, 91, 66, 88, 49, 60, 64,
+ 70, 43, 49, 51, 65, 81, 83, 91, 85, 71,
+ 80, 72, 80, 73, 80, 85, 74, 82, 75, 83,
76, 80, 77, 80, 46, 48, 48, 47, 91, 91,
6, 8, 9, 89, 78, 36, 42, 91, 92, 91,
51, 51, 9, 40, 41, 51, 88, 91, 49, 49,
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
break;
- case 19:
-#line 104 "a.y"
- { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
- break;
-
case 20:
#line 105 "a.y"
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
break;
- case 25:
-#line 110 "a.y"
- { outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
- break;
-
case 26:
#line 111 "a.y"
{ outcode((yyvsp[(1) - (2)].lval), &(yyvsp[(2) - (2)].addr2)); }
case 42:
#line 192 "a.y"
{
- settext((yyvsp[(1) - (4)].addr).sym);
- (yyval.addr2).from = (yyvsp[(1) - (4)].addr);
- (yyval.addr2).to = (yyvsp[(4) - (4)].addr);
+ Addr2 a;
+ settext((yyvsp[(2) - (5)].addr).sym);
+ a.from = (yyvsp[(2) - (5)].addr);
+ a.to = (yyvsp[(5) - (5)].addr);
+ outcode(ATEXT, &a);
}
break;
case 43:
-#line 198 "a.y"
- {
- settext((yyvsp[(1) - (6)].addr).sym);
- (yyval.addr2).from = (yyvsp[(1) - (6)].addr);
- (yyval.addr2).from.scale = (yyvsp[(3) - (6)].lval);
- (yyval.addr2).to = (yyvsp[(6) - (6)].addr);
+#line 200 "a.y"
+ {
+ Addr2 a;
+ settext((yyvsp[(2) - (7)].addr).sym);
+ a.from = (yyvsp[(2) - (7)].addr);
+ a.to = (yyvsp[(7) - (7)].addr);
+ outcode(ATEXT, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (7)].lval);
+ }
}
break;
case 44:
-#line 207 "a.y"
+#line 214 "a.y"
+ {
+ Addr2 a;
+ settext((yyvsp[(2) - (4)].addr).sym);
+ a.from = (yyvsp[(2) - (4)].addr);
+ a.to = (yyvsp[(4) - (4)].addr);
+ outcode(AGLOBL, &a);
+ }
+ break;
+
+ case 45:
+#line 222 "a.y"
+ {
+ Addr2 a;
+ settext((yyvsp[(2) - (6)].addr).sym);
+ a.from = (yyvsp[(2) - (6)].addr);
+ a.to = (yyvsp[(6) - (6)].addr);
+ outcode(AGLOBL, &a);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (6)].lval);
+ }
+ }
+ break;
+
+ case 46:
+#line 236 "a.y"
{
(yyval.addr2).from = nullgen;
(yyval.addr2).to = (yyvsp[(2) - (2)].addr);
}
break;
- case 45:
-#line 212 "a.y"
+ case 47:
+#line 241 "a.y"
{
(yyval.addr2).from = nullgen;
(yyval.addr2).to = (yyvsp[(1) - (1)].addr);
}
break;
- case 46:
-#line 217 "a.y"
+ case 48:
+#line 246 "a.y"
{
(yyval.addr2).from = nullgen;
(yyval.addr2).to = (yyvsp[(2) - (2)].addr);
}
break;
- case 49:
-#line 229 "a.y"
+ case 51:
+#line 258 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (3)].addr);
(yyval.addr2).to = (yyvsp[(3) - (3)].addr);
}
break;
- case 50:
-#line 234 "a.y"
+ case 52:
+#line 263 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (5)].addr);
(yyval.addr2).to = (yyvsp[(3) - (5)].addr);
}
break;
- case 51:
-#line 244 "a.y"
+ case 53:
+#line 273 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (3)].addr);
(yyval.addr2).to = (yyvsp[(3) - (3)].addr);
}
break;
- case 52:
-#line 249 "a.y"
+ case 54:
+#line 278 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (5)].addr);
(yyval.addr2).to = (yyvsp[(3) - (5)].addr);
}
break;
- case 53:
-#line 259 "a.y"
+ case 55:
+#line 288 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (2)].addr);
(yyval.addr2).to = nullgen;
}
break;
- case 54:
-#line 264 "a.y"
+ case 56:
+#line 293 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (1)].addr);
(yyval.addr2).to = nullgen;
}
break;
- case 55:
-#line 269 "a.y"
- {
- (yyval.addr2).from = (yyvsp[(1) - (3)].addr);
- (yyval.addr2).to = (yyvsp[(3) - (3)].addr);
- }
- break;
-
- case 56:
-#line 276 "a.y"
+ case 57:
+#line 298 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (3)].addr);
(yyval.addr2).to = (yyvsp[(3) - (3)].addr);
}
break;
- case 57:
-#line 281 "a.y"
- {
- (yyval.addr2).from = (yyvsp[(1) - (5)].addr);
- (yyval.addr2).from.scale = (yyvsp[(3) - (5)].lval);
- (yyval.addr2).to = (yyvsp[(5) - (5)].addr);
- }
- break;
-
case 58:
-#line 289 "a.y"
+#line 305 "a.y"
{
(yyval.addr2).from = (yyvsp[(1) - (5)].addr);
(yyval.addr2).to = (yyvsp[(3) - (5)].addr);
break;
case 59:
-#line 297 "a.y"
+#line 313 "a.y"
{
(yyval.addr2).from = (yyvsp[(3) - (5)].addr);
(yyval.addr2).to = (yyvsp[(5) - (5)].addr);
break;
case 60:
-#line 307 "a.y"
+#line 323 "a.y"
{
if((yyvsp[(1) - (3)].addr).type != TYPE_CONST || (yyvsp[(3) - (3)].addr).type != TYPE_CONST)
yyerror("arguments to PCDATA must be integer constants");
break;
case 61:
-#line 316 "a.y"
+#line 332 "a.y"
{
if((yyvsp[(1) - (3)].addr).type != TYPE_CONST)
yyerror("index for FUNCDATA must be integer constant");
break;
case 66:
-#line 333 "a.y"
+#line 349 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
}
break;
case 67:
-#line 337 "a.y"
+#line 353 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
}
break;
case 73:
-#line 350 "a.y"
+#line 366 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_BRANCH;
break;
case 74:
-#line 356 "a.y"
+#line 372 "a.y"
{
(yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym));
(yyval.addr) = nullgen;
break;
case 75:
-#line 367 "a.y"
+#line 383 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 76:
-#line 373 "a.y"
+#line 389 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 77:
-#line 379 "a.y"
+#line 395 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 78:
-#line 385 "a.y"
+#line 401 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 79:
-#line 391 "a.y"
+#line 407 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 80:
-#line 397 "a.y"
+#line 413 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 81:
-#line 405 "a.y"
+#line 421 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_CONST;
break;
case 82:
-#line 411 "a.y"
+#line 427 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
(yyval.addr).type = TYPE_ADDR;
break;
case 83:
-#line 421 "a.y"
+#line 437 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SCONST;
break;
case 84:
-#line 427 "a.y"
+#line 443 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 85:
-#line 433 "a.y"
+#line 449 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 86:
-#line 439 "a.y"
+#line 455 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 87:
-#line 445 "a.y"
+#line 461 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 88:
-#line 453 "a.y"
+#line 469 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (1)].lval);
break;
case 89:
-#line 459 "a.y"
+#line 475 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (2)].lval);
break;
case 90:
-#line 465 "a.y"
+#line 481 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (3)].lval);
break;
case 91:
-#line 471 "a.y"
+#line 487 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (4)].lval);
break;
case 94:
-#line 483 "a.y"
+#line 499 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 95:
-#line 490 "a.y"
+#line 506 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 96:
-#line 497 "a.y"
+#line 513 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 97:
-#line 504 "a.y"
+#line 520 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 98:
-#line 514 "a.y"
+#line 530 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 99:
-#line 524 "a.y"
+#line 540 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 100:
-#line 534 "a.y"
+#line 550 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 101:
-#line 540 "a.y"
+#line 556 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 102:
-#line 546 "a.y"
+#line 562 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 103:
-#line 553 "a.y"
+#line 569 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 104:
-#line 562 "a.y"
+#line 578 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 105:
-#line 573 "a.y"
+#line 589 "a.y"
{
(yyval.addr) = (yyvsp[(1) - (1)].addr);
}
break;
case 106:
-#line 577 "a.y"
+#line 593 "a.y"
{
(yyval.addr) = (yyvsp[(1) - (6)].addr);
(yyval.addr).index = (yyvsp[(3) - (6)].lval);
break;
case 107:
-#line 586 "a.y"
+#line 602 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 108:
-#line 594 "a.y"
+#line 610 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 109:
-#line 603 "a.y"
+#line 619 "a.y"
{
(yyval.lval) = 0;
}
break;
case 110:
-#line 607 "a.y"
+#line 623 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 111:
-#line 611 "a.y"
+#line 627 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 113:
-#line 618 "a.y"
+#line 634 "a.y"
{
(yyval.lval) = NAME_AUTO;
}
break;
case 116:
-#line 626 "a.y"
+#line 642 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
}
break;
case 117:
-#line 630 "a.y"
+#line 646 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 118:
-#line 634 "a.y"
+#line 650 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 119:
-#line 638 "a.y"
+#line 654 "a.y"
{
(yyval.lval) = ~(yyvsp[(2) - (2)].lval);
}
break;
case 120:
-#line 642 "a.y"
+#line 658 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (3)].lval);
}
break;
case 122:
-#line 649 "a.y"
+#line 665 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
}
break;
case 123:
-#line 653 "a.y"
+#line 669 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
}
break;
case 124:
-#line 657 "a.y"
+#line 673 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
}
break;
case 125:
-#line 661 "a.y"
+#line 677 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
}
break;
case 126:
-#line 665 "a.y"
+#line 681 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
}
break;
case 127:
-#line 669 "a.y"
+#line 685 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
}
break;
case 128:
-#line 673 "a.y"
+#line 689 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
}
break;
case 129:
-#line 677 "a.y"
+#line 693 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
}
break;
case 130:
-#line 681 "a.y"
+#line 697 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
}
break;
case 131:
-#line 685 "a.y"
+#line 701 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
}
/* Line 1267 of yacc.c. */
-#line 2555 "y.tab.c"
+#line 2565 "y.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
#include "../gc/go.h"
#include "../8l/8.out.h"
-#define TEXTFLAG from.scale
-
// foptoas flags
enum
{
p->to.type = TYPE_CONST;
p->to.offset = nam->type->width;
if(nam->readonly)
- p->from.scale = RODATA;
+ p->from3.offset = RODATA;
if(nam->type != T && !haspointers(nam->type))
- p->from.scale |= NOPTR;
+ p->from3.offset |= NOPTR;
}
void
p->to.type = TYPE_CONST;
p->to.index = REG_NONE;
p->to.offset = width;
- p->from.scale = flags;
+ p->from3.offset = flags;
}
void
EXTERN Biobuf obuf;
EXTERN Link* ctxt;
EXTERN Biobuf bstdout;
+EXTERN Prog* lastpc;
void* alloc(int32);
void* allocn(void*, int32, int32);
| LTEXT name ',' con ',' '$' textsize
{
settext($2.sym);
- outcode($1, &$2, $4, &$7);
+ outcode($1, &$2, 0, &$7);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
}
/*
* GLOBL
| LGLOBL name ',' con ',' imm
{
settext($2.sym);
- outcode($1, &$2, $4, &$6);
+ outcode($1, &$2, 0, &$6);
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = $4;
+ }
}
/*
outcode(AEND, &nullgen, 0, &nullgen);
}
-static Prog *lastpc;
-
void
outcode(int a, Addr *g1, int reg, Addr *g2)
{
428, 432, 436, 443, 447, 451, 455, 459, 463, 470,
474, 478, 482, 489, 493, 497, 501, 508, 512, 520,
524, 528, 532, 536, 540, 544, 551, 555, 559, 563,
- 567, 571, 578, 582, 589, 598, 609, 616, 621, 629,
- 634, 643, 647, 651, 658, 664, 670, 681, 689, 690,
- 693, 701, 709, 717, 725, 731, 739, 742, 750, 756,
- 764, 770, 778, 786, 807, 813, 819, 825, 833, 838,
- 846, 852, 859, 867, 868, 876, 883, 893, 894, 903,
- 911, 919, 928, 929, 932, 935, 939, 945, 946, 947,
- 950, 951, 955, 959, 963, 967, 973, 974, 978, 982,
- 986, 990, 994, 998, 1002, 1006, 1010
+ 567, 571, 578, 582, 589, 598, 609, 616, 621, 633,
+ 638, 651, 655, 659, 666, 672, 678, 689, 697, 698,
+ 701, 709, 717, 725, 733, 739, 747, 750, 758, 764,
+ 772, 778, 786, 794, 815, 821, 827, 833, 841, 846,
+ 854, 860, 867, 875, 876, 884, 891, 901, 902, 911,
+ 919, 927, 936, 937, 940, 943, 947, 953, 954, 955,
+ 958, 959, 963, 967, 971, 975, 981, 982, 986, 990,
+ 994, 998, 1002, 1006, 1010, 1014, 1018
};
#endif
#line 622 "a.y"
{
settext((yyvsp[(2) - (7)].addr).sym);
- outcode((yyvsp[(1) - (7)].lval), &(yyvsp[(2) - (7)].addr), (yyvsp[(4) - (7)].lval), &(yyvsp[(7) - (7)].addr));
+ outcode((yyvsp[(1) - (7)].lval), &(yyvsp[(2) - (7)].addr), 0, &(yyvsp[(7) - (7)].addr));
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (7)].lval);
+ }
}
break;
case 119:
-#line 630 "a.y"
+#line 634 "a.y"
{
settext((yyvsp[(2) - (4)].addr).sym);
outcode((yyvsp[(1) - (4)].lval), &(yyvsp[(2) - (4)].addr), 0, &(yyvsp[(4) - (4)].addr));
break;
case 120:
-#line 635 "a.y"
+#line 639 "a.y"
{
settext((yyvsp[(2) - (6)].addr).sym);
- outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
+ outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), 0, &(yyvsp[(6) - (6)].addr));
+ if(pass > 1) {
+ lastpc->from3.type = TYPE_CONST;
+ lastpc->from3.offset = (yyvsp[(4) - (6)].lval);
+ }
}
break;
case 121:
-#line 644 "a.y"
+#line 652 "a.y"
{
outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
}
break;
case 122:
-#line 648 "a.y"
+#line 656 "a.y"
{
outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
}
break;
case 123:
-#line 652 "a.y"
+#line 660 "a.y"
{
outcode((yyvsp[(1) - (6)].lval), &(yyvsp[(2) - (6)].addr), (yyvsp[(4) - (6)].lval), &(yyvsp[(6) - (6)].addr));
}
break;
case 124:
-#line 659 "a.y"
+#line 667 "a.y"
{
outcode((yyvsp[(1) - (2)].lval), &nullgen, 0, &nullgen);
}
break;
case 125:
-#line 665 "a.y"
+#line 673 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_BRANCH;
break;
case 126:
-#line 671 "a.y"
+#line 679 "a.y"
{
(yyvsp[(1) - (2)].sym) = labellookup((yyvsp[(1) - (2)].sym));
(yyval.addr) = nullgen;
break;
case 127:
-#line 682 "a.y"
+#line 690 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 130:
-#line 694 "a.y"
+#line 702 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 131:
-#line 702 "a.y"
+#line 710 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 132:
-#line 710 "a.y"
+#line 718 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 133:
-#line 718 "a.y"
+#line 726 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 134:
-#line 726 "a.y"
+#line 734 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 135:
-#line 732 "a.y"
+#line 740 "a.y"
{
if((yyvsp[(3) - (4)].lval) < 0 || (yyvsp[(3) - (4)].lval) >= 1024)
yyerror("SPR/DCR out of range");
break;
case 137:
-#line 743 "a.y"
+#line 751 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 138:
-#line 751 "a.y"
+#line 759 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 139:
-#line 757 "a.y"
+#line 765 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 140:
-#line 765 "a.y"
+#line 773 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 141:
-#line 771 "a.y"
+#line 779 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 142:
-#line 779 "a.y"
+#line 787 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_REG;
break;
case 143:
-#line 787 "a.y"
+#line 795 "a.y"
{
int mb, me;
uint32 v;
break;
case 144:
-#line 808 "a.y"
+#line 816 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (1)].lval);
break;
case 145:
-#line 814 "a.y"
+#line 822 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (2)].lval);
break;
case 146:
-#line 820 "a.y"
+#line 828 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = (yyvsp[(1) - (3)].lval);
break;
case 147:
-#line 826 "a.y"
+#line 834 "a.y"
{
(yyval.addr).type = TYPE_TEXTSIZE;
(yyval.addr).offset = -(yyvsp[(2) - (4)].lval);
break;
case 148:
-#line 834 "a.y"
+#line 842 "a.y"
{
(yyval.addr) = (yyvsp[(2) - (2)].addr);
(yyval.addr).type = TYPE_CONST;
break;
case 149:
-#line 839 "a.y"
+#line 847 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_SCONST;
break;
case 150:
-#line 847 "a.y"
+#line 855 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 151:
-#line 853 "a.y"
+#line 861 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_FCONST;
break;
case 152:
-#line 860 "a.y"
+#line 868 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_CONST;
break;
case 154:
-#line 869 "a.y"
+#line 877 "a.y"
{
if((yyval.lval) < 0 || (yyval.lval) >= NREG)
print("register value out of range\n");
break;
case 155:
-#line 877 "a.y"
+#line 885 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 156:
-#line 884 "a.y"
+#line 892 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 158:
-#line 895 "a.y"
+#line 903 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 159:
-#line 904 "a.y"
+#line 912 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 160:
-#line 912 "a.y"
+#line 920 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 161:
-#line 920 "a.y"
+#line 928 "a.y"
{
(yyval.addr) = nullgen;
(yyval.addr).type = TYPE_MEM;
break;
case 164:
-#line 932 "a.y"
+#line 940 "a.y"
{
(yyval.lval) = 0;
}
break;
case 165:
-#line 936 "a.y"
+#line 944 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 166:
-#line 940 "a.y"
+#line 948 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 171:
-#line 952 "a.y"
+#line 960 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (1)].sym)->value;
}
break;
case 172:
-#line 956 "a.y"
+#line 964 "a.y"
{
(yyval.lval) = -(yyvsp[(2) - (2)].lval);
}
break;
case 173:
-#line 960 "a.y"
+#line 968 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (2)].lval);
}
break;
case 174:
-#line 964 "a.y"
+#line 972 "a.y"
{
(yyval.lval) = ~(yyvsp[(2) - (2)].lval);
}
break;
case 175:
-#line 968 "a.y"
+#line 976 "a.y"
{
(yyval.lval) = (yyvsp[(2) - (3)].lval);
}
break;
case 177:
-#line 975 "a.y"
+#line 983 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) + (yyvsp[(3) - (3)].lval);
}
break;
case 178:
-#line 979 "a.y"
+#line 987 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) - (yyvsp[(3) - (3)].lval);
}
break;
case 179:
-#line 983 "a.y"
+#line 991 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) * (yyvsp[(3) - (3)].lval);
}
break;
case 180:
-#line 987 "a.y"
+#line 995 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) / (yyvsp[(3) - (3)].lval);
}
break;
case 181:
-#line 991 "a.y"
+#line 999 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) % (yyvsp[(3) - (3)].lval);
}
break;
case 182:
-#line 995 "a.y"
+#line 1003 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) << (yyvsp[(4) - (4)].lval);
}
break;
case 183:
-#line 999 "a.y"
+#line 1007 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (4)].lval) >> (yyvsp[(4) - (4)].lval);
}
break;
case 184:
-#line 1003 "a.y"
+#line 1011 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) & (yyvsp[(3) - (3)].lval);
}
break;
case 185:
-#line 1007 "a.y"
+#line 1015 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) ^ (yyvsp[(3) - (3)].lval);
}
break;
case 186:
-#line 1011 "a.y"
+#line 1019 "a.y"
{
(yyval.lval) = (yyvsp[(1) - (3)].lval) | (yyvsp[(3) - (3)].lval);
}
/* Line 1267 of yacc.c. */
-#line 3232 "y.tab.c"
+#line 3240 "y.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
// TODO(minux): Remove when no longer used.
#define noimpl sysfatal("%s not implemented (%s:%d).", __func__, __FILE__, __LINE__)
-#define TEXTFLAG reg
-
EXTERN int32 dynloc;
EXTERN uchar reg[NREG+NFREG];
EXTERN int32 pcloc; // instruction counter
p->to.type = TYPE_CONST;
p->to.offset = nam->type->width;
if(nam->readonly)
- p->reg = RODATA;
+ p->from3.offset = RODATA;
if(nam->type != T && !haspointers(nam->type))
- p->reg |= NOPTR;
+ p->from3.offset |= NOPTR;
}
void
p->to.type = TYPE_CONST;
p->to.name = NAME_NONE;
p->to.offset = width;
- p->reg = flags;
+ p->from3.offset = flags;
}
int
nodconst(&nod1, types[TINT32], 0);
ptxt = arch.gins(arch.ATEXT, isblank(curfn->nname) ? N : curfn->nname, &nod1);
if(fn->dupok)
- arch.thelinkarch->settextflag(ptxt, arch.thelinkarch->textflag(ptxt) | DUPOK);
+ ptxt->from3.offset |= DUPOK;
if(fn->wrapper)
- arch.thelinkarch->settextflag(ptxt, arch.thelinkarch->textflag(ptxt) | WRAPPER);
+ ptxt->from3.offset |= WRAPPER;
if(fn->needctxt)
- arch.thelinkarch->settextflag(ptxt, arch.thelinkarch->textflag(ptxt) | NEEDCTXT);
+ ptxt->from3.offset |= NEEDCTXT;
if(fn->nosplit)
- arch.thelinkarch->settextflag(ptxt, arch.thelinkarch->textflag(ptxt) | NOSPLIT);
+ ptxt->from3.offset |= NOSPLIT;
// Clumsy but important.
// See test/recover.go for test cases and src/reflect/value.go
// for the actual functions being considered.
if(myimportpath != nil && strcmp(myimportpath, "reflect") == 0) {
if(strcmp(curfn->nname->sym->name, "callReflect") == 0 || strcmp(curfn->nname->sym->name, "callMethod") == 0)
- arch.thelinkarch->settextflag(ptxt, arch.thelinkarch->textflag(ptxt) | WRAPPER);
+ ptxt->from3.offset |= WRAPPER;
}
arch.afunclit(&ptxt->from, curfn->nname);
/* struct Optab:
OPCODE, from, prog->reg, to, type,size,param,flag */
{ ATEXT, C_ADDR, C_NONE, C_TEXTSIZE, 0, 0, 0 },
- { ATEXT, C_ADDR, C_REG, C_TEXTSIZE, 0, 0, 0 },
{ AADD, C_REG, C_REG, C_REG, 1, 4, 0 },
{ AADD, C_REG, C_NONE, C_REG, 1, 4, 0 },
static Optab optab[] = {
{ ATEXT, C_LEXT, C_NONE, C_NONE, C_TEXTSIZE, 0, 0, 0 },
- { ATEXT, C_LEXT, C_REG, C_NONE, C_TEXTSIZE, 0, 0, 0 },
{ ATEXT, C_LEXT, C_NONE, C_LCON, C_TEXTSIZE, 0, 0, 0 },
- { ATEXT, C_LEXT, C_REG, C_LCON, C_TEXTSIZE, 0, 0, 0 },
{ ATEXT, C_ADDR, C_NONE, C_NONE, C_TEXTSIZE, 0, 0, 0 },
- { ATEXT, C_ADDR, C_REG, C_NONE, C_TEXTSIZE, 0, 0, 0 },
{ ATEXT, C_ADDR, C_NONE, C_LCON, C_TEXTSIZE, 0, 0, 0 },
- { ATEXT, C_ADDR, C_REG, C_LCON, C_TEXTSIZE, 0, 0, 0 },
/* move register */
{ AMOVD, C_REG, C_NONE, C_NONE, C_REG, 1, 4, 0 },
sprint(str, "%.5lld (%L) %A %D/%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to);
else
if(p->as == ATEXT)
- sprint(str, "%.5lld (%L) %A %D,%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to);
+ sprint(str, "%.5lld (%L) %A %D,%lld,%D", p->pc, p->lineno, a, &p->from, p->from3.offset, &p->to);
else
if(p->reg == 0)
sprint(str, "%.5lld (%L) %A%s %D,%D", p->pc, p->lineno, a, sc, &p->from, &p->to);
break;
case ATEXT:
- if(p->from.scale) {
- sprint(str, "%.5lld (%L) %A %D,%d,%D",
- p->pc, p->lineno, p->as, &p->from, p->from.scale, &p->to);
+ if(p->from3.offset) {
+ sprint(str, "%.5lld (%L) %A %D,%lld,%D",
+ p->pc, p->lineno, p->as, &p->from, p->from3.offset, &p->to);
break;
}
sprint(str, "%.5lld (%L) %A %D,%D",
break;
case ATEXT:
- if(p->from.scale) {
- sprint(str, "%.5lld (%L) %A %D,%d,%D",
- p->pc, p->lineno, p->as, &p->from, p->from.scale, &p->to);
+ if(p->from3.offset) {
+ sprint(str, "%.5lld (%L) %A %D,%lld,%D",
+ p->pc, p->lineno, p->as, &p->from, p->from3.offset, &p->to);
break;
}
sprint(str, "%.5lld (%L) %A %D,%D",
str[0] = 0;
if(a == ADATA || a == AINIT || a == ADYNT)
sprint(str, "%.5lld (%L) %A %D/%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to);
- else if(a == ATEXT) {
- if(p->reg != 0)
- sprint(str, "%.5lld (%L) %A %D,%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to);
- else
- sprint(str, "%.5lld (%L) %A %D,%D", p->pc, p->lineno, a, &p->from, &p->to);
- } else if(a == AGLOBL) {
- if(p->reg != 0)
- sprint(str, "%.5lld (%L) %A %D,%d,%D", p->pc, p->lineno, a, &p->from, p->reg, &p->to);
+ else if(a == ATEXT || a == AGLOBL) {
+ if(p->from3.offset != 0)
+ sprint(str, "%.5lld (%L) %A %D,%lld,%D", p->pc, p->lineno, a, &p->from, p->from3.offset, &p->to);
else
sprint(str, "%.5lld (%L) %A %D,%D", p->pc, p->lineno, a, &p->from, &p->to);
} else {
return p->reg;
}
-static int
-textflag(Prog *p)
-{
- return p->reg;
-}
-
-static void
-settextflag(Prog *p, int f)
-{
- p->reg = f;
-}
-
static void
progedit(Link *ctxt, Prog *p)
{
cursym->args = p->to.u.argsize;
if(ctxt->debugzerostack) {
- if(autoffset && !(p->reg&NOSPLIT)) {
+ if(autoffset && !(p->from3.offset&NOSPLIT)) {
// MOVW $4(R13), R1
p = appendp(ctxt, p);
p->as = AMOVW;
break;
}
- if(!(p->reg & NOSPLIT))
- p = stacksplit(ctxt, p, autosize, !(cursym->text->reg&NEEDCTXT)); // emit split check
+ if(!(p->from3.offset & NOSPLIT))
+ p = stacksplit(ctxt, p, autosize, !(cursym->text->from3.offset&NEEDCTXT)); // emit split check
// MOVW.W R14,$-autosize(SP)
p = appendp(ctxt, p);
p->to.reg = REGSP;
p->spadj = autosize;
- if(cursym->text->reg & WRAPPER) {
+ if(cursym->text->from3.offset & WRAPPER) {
// if(g->panic != nil && g->panic->argp == FP) g->panic->argp = bottom-of-frame
//
// MOVW g_panic(g), R1
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 4,
.ptrsize = 4,
return p->from.scale;
}
-static int
-textflag(Prog *p)
-{
- return p->from.scale;
-}
-
-static void
-settextflag(Prog *p, int f)
-{
- p->from.scale = f;
-}
-
static void nacladdr(Link*, Prog*, Addr*);
static int
cursym->args = textarg;
cursym->locals = p->to.offset;
- if(autoffset < StackSmall && !(p->from.scale & NOSPLIT)) {
+ if(autoffset < StackSmall && !(p->from3.offset & NOSPLIT)) {
for(q = p; q != nil; q = q->link) {
if(q->as == ACALL)
goto noleaf;
if((q->as == ADUFFCOPY || q->as == ADUFFZERO) && autoffset >= StackSmall - 8)
goto noleaf;
}
- p->from.scale |= NOSPLIT;
+ p->from3.offset |= NOSPLIT;
noleaf:;
}
q = nil;
- if(!(p->from.scale & NOSPLIT) || (p->from.scale & WRAPPER)) {
+ if(!(p->from3.offset & NOSPLIT) || (p->from3.offset & WRAPPER)) {
p = appendp(ctxt, p);
p = load_g_cx(ctxt, p); // load g into CX
}
- if(!(cursym->text->from.scale & NOSPLIT))
- p = stacksplit(ctxt, p, autoffset, textarg, !(cursym->text->from.scale&NEEDCTXT), &q); // emit split check
+ if(!(cursym->text->from3.offset & NOSPLIT))
+ p = stacksplit(ctxt, p, autoffset, textarg, !(cursym->text->from3.offset&NEEDCTXT), &q); // emit split check
if(autoffset) {
if(autoffset%ctxt->arch->regsize != 0)
p->to.reg = REG_BP;
}
- if(cursym->text->from.scale & WRAPPER) {
+ if(cursym->text->from3.offset & WRAPPER) {
// if(g->panic != nil && g->panic->argp == FP) g->panic->argp = bottom-of-frame
//
// MOVQ g_panic(CX), BX
p2->pcond = p;
}
- if(ctxt->debugzerostack && autoffset && !(cursym->text->from.scale&NOSPLIT)) {
+ if(ctxt->debugzerostack && autoffset && !(cursym->text->from3.offset&NOSPLIT)) {
// 6l -Z means zero the stack frame on entry.
// This slows down function calls but can help avoid
// false positives in garbage collection.
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 1,
.ptrsize = 8,
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 1,
.ptrsize = 4,
return p->from.scale;
}
-static int
-textflag(Prog *p)
-{
- return p->from.scale;
-}
-
-static void
-settextflag(Prog *p, int f)
-{
- p->from.scale = f;
-}
-
static int
canuselocaltls(Link *ctxt)
{
q = nil;
- if(!(p->from.scale & NOSPLIT) || (p->from.scale & WRAPPER)) {
+ if(!(p->from3.offset & NOSPLIT) || (p->from3.offset & WRAPPER)) {
p = appendp(ctxt, p);
p = load_g_cx(ctxt, p); // load g into CX
}
- if(!(cursym->text->from.scale & NOSPLIT))
- p = stacksplit(ctxt, p, autoffset, !(cursym->text->from.scale&NEEDCTXT), &q); // emit split check
+ if(!(cursym->text->from3.offset & NOSPLIT))
+ p = stacksplit(ctxt, p, autoffset, !(cursym->text->from3.offset&NEEDCTXT), &q); // emit split check
if(autoffset) {
p = appendp(ctxt, p);
q->pcond = p;
deltasp = autoffset;
- if(cursym->text->from.scale & WRAPPER) {
+ if(cursym->text->from3.offset & WRAPPER) {
// if(g->panic != nil && g->panic->argp == FP) g->panic->argp = bottom-of-frame
//
// MOVL g_panic(CX), BX
p2->pcond = p;
}
- if(ctxt->debugzerostack && autoffset && !(cursym->text->from.scale&NOSPLIT)) {
+ if(ctxt->debugzerostack && autoffset && !(cursym->text->from3.offset&NOSPLIT)) {
// 8l -Z means zero the stack frame on entry.
// This slows down function calls but can help avoid
// false positives in garbage collection.
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 1,
.ptrsize = 4,
return p->reg;
}
-static int
-textflag(Prog *p)
-{
- return p->reg;
-}
-
-static void
-settextflag(Prog *p, int f)
-{
- p->reg = f;
-}
-
static void
progedit(Link *ctxt, Prog *p)
{
autosize += 4;
p->to.offset = autosize-8;
- if(!(p->reg & NOSPLIT))
- p = stacksplit(ctxt, p, autosize, !(cursym->text->reg&NEEDCTXT)); // emit split check
+ if(!(p->from3.offset & NOSPLIT))
+ p = stacksplit(ctxt, p, autosize, !(cursym->text->from3.offset&NEEDCTXT)); // emit split check
q = p;
if(autosize) {
if(q->as == AMOVDU)
q->spadj = -aoffset;
- if(cursym->text->reg & WRAPPER) {
+ if(cursym->text->from3.offset & WRAPPER) {
// if(g->panic != nil && g->panic->argp == FP) g->panic->argp = bottom-of-frame
//
// MOVD g_panic(g), R3
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 4,
.ptrsize = 8,
.isdata = isdata,
.prg = prg,
.progedit = progedit,
- .settextflag = settextflag,
- .textflag = textflag,
.minlc = 4,
.ptrsize = 8,
s->size = p->to.offset;
if(s->type == 0 || s->type == SXREF)
s->type = SBSS;
- flag = ctxt->arch->textflag(p);
+ flag = p->from3.offset;
if(flag & DUPOK)
s->dupok = 1;
if(flag & RODATA)
else
etext->next = s;
etext = s;
- flag = ctxt->arch->textflag(p);
+ flag = p->from3.offset;
if(flag & DUPOK)
s->dupok = 1;
if(flag & NOSPLIT)