1/* A Bison parser, made by GNU Bison 3.0. */ 2 3/* Bison implementation for Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. 6 7 This program is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20/* As a special exception, you may create a larger work that contains 21 part or all of the Bison parser skeleton and distribute that work 22 under terms of your choice, so long as that work isn't itself a 23 parser generator using the skeleton or a modified version thereof 24 as a parser skeleton. Alternatively, if you modify or redistribute 25 the parser skeleton itself, you may (at your option) remove this 26 special exception, which will cause the skeleton and the resulting 27 Bison output files to be licensed under the GNU General Public 28 License without this special exception. 29 30 This special exception was added by the Free Software Foundation in 31 version 2.2 of Bison. */ 32 33/* C LALR(1) parser skeleton written by Richard Stallman, by 34 simplifying the original so-called "semantic" parser. */ 35 36/* All symbols defined below should begin with yy or YY, to avoid 37 infringing on user name space. This should be done even for local 38 variables, as they might otherwise be expanded by user macros. 39 There are some unavoidable exceptions within include files to 40 define necessary library symbols; they are noted "INFRINGES ON 41 USER NAME SPACE" below. */ 42 43/* Identify Bison output. */ 44#define YYBISON 1 45 46/* Bison version. */ 47#define YYBISON_VERSION "3.0" 48 49/* Skeleton name. */ 50#define YYSKELETON_NAME "yacc.c" 51 52/* Pure parsers. */ 53#define YYPURE 0 54 55/* Push parsers. */ 56#define YYPUSH 0 57 58/* Pull parsers. */ 59#define YYPULL 1 60 61 62/* Substitute the variable and function names. */ 63#define yyparse rl78_parse 64#define yylex rl78_lex 65#define yyerror rl78_error 66#define yydebug rl78_debug 67#define yynerrs rl78_nerrs 68 69#define yylval rl78_lval 70#define yychar rl78_char 71 72/* Copy the first part of user declarations. */ 73#line 20 "./config/rl78-parse.y" /* yacc.c:339 */ 74 75 76#include "as.h" 77#include "safe-ctype.h" 78#include "rl78-defs.h" 79 80static int rl78_lex (void); 81 82/* Ok, here are the rules for using these macros... 83 84 B*() is used to specify the base opcode bytes. Fields to be filled 85 in later, leave zero. Call this first. 86 87 F() and FE() are used to fill in fields within the base opcode bytes. You MUST 88 call B*() before any F() or FE(). 89 90 [UN]*O*(), PC*() appends operands to the end of the opcode. You 91 must call P() and B*() before any of these, so that the fixups 92 have the right byte location. 93 O = signed, UO = unsigned, NO = negated, PC = pcrel 94 95 IMM() adds an immediate and fills in the field for it. 96 NIMM() same, but negates the immediate. 97 NBIMM() same, but negates the immediate, for sbb. 98 DSP() adds a displacement, and fills in the field for it. 99 100 Note that order is significant for the O, IMM, and DSP macros, as 101 they append their data to the operand buffer in the order that you 102 call them. 103 104 Use "disp" for displacements whenever possible; this handles the 105 "0" case properly. */ 106 107#define B1(b1) rl78_base1 (b1) 108#define B2(b1, b2) rl78_base2 (b1, b2) 109#define B3(b1, b2, b3) rl78_base3 (b1, b2, b3) 110#define B4(b1, b2, b3, b4) rl78_base4 (b1, b2, b3, b4) 111 112/* POS is bits from the MSB of the first byte to the LSB of the last byte. */ 113#define F(val,pos,sz) rl78_field (val, pos, sz) 114#define FE(exp,pos,sz) rl78_field (exp_val (exp), pos, sz); 115 116#define O1(v) rl78_op (v, 1, RL78REL_DATA) 117#define O2(v) rl78_op (v, 2, RL78REL_DATA) 118#define O3(v) rl78_op (v, 3, RL78REL_DATA) 119#define O4(v) rl78_op (v, 4, RL78REL_DATA) 120 121#define PC1(v) rl78_op (v, 1, RL78REL_PCREL) 122#define PC2(v) rl78_op (v, 2, RL78REL_PCREL) 123#define PC3(v) rl78_op (v, 3, RL78REL_PCREL) 124 125#define IMM(v,pos) F (immediate (v, RL78REL_SIGNED, pos), pos, 2); \ 126 if (v.X_op != O_constant && v.X_op != O_big) rl78_linkrelax_imm (pos) 127#define NIMM(v,pos) F (immediate (v, RL78REL_NEGATIVE, pos), pos, 2) 128#define NBIMM(v,pos) F (immediate (v, RL78REL_NEGATIVE_BORROW, pos), pos, 2) 129#define DSP(v,pos,msz) if (!v.X_md) rl78_relax (RL78_RELAX_DISP, pos); \ 130 else rl78_linkrelax_dsp (pos); \ 131 F (displacement (v, msz), pos, 2) 132 133#define id24(a,b2,b3) B3 (0xfb+a, b2, b3) 134 135static int expr_is_sfr (expressionS); 136static int expr_is_saddr (expressionS); 137static int expr_is_word_aligned (expressionS); 138static int exp_val (expressionS exp); 139 140static int need_flag = 0; 141static int rl78_in_brackets = 0; 142static int rl78_last_token = 0; 143static char * rl78_init_start; 144static char * rl78_last_exp_start = 0; 145static int rl78_bit_insn = 0; 146 147#define YYDEBUG 1 148#define YYERROR_VERBOSE 1 149 150#define NOT_SADDR rl78_error ("Expression not 0xFFE20 to 0xFFF1F") 151#define SA(e) if (!expr_is_saddr (e)) NOT_SADDR; 152 153#define SET_SA(e) e.X_md = BFD_RELOC_RL78_SADDR 154 155#define NOT_SFR rl78_error ("Expression not 0xFFF00 to 0xFFFFF") 156#define SFR(e) if (!expr_is_sfr (e)) NOT_SFR; 157 158#define NOT_SFR_OR_SADDR rl78_error ("Expression not 0xFFE20 to 0xFFFFF") 159 160#define NOT_ES if (rl78_has_prefix()) rl78_error ("ES: prefix not allowed here"); 161 162#define WA(x) if (!expr_is_word_aligned (x)) rl78_error ("Expression not word-aligned"); 163 164#define ISA_G10(s) if (!rl78_isa_g10()) rl78_error (s " is only supported on the G10") 165#define ISA_G13(s) if (!rl78_isa_g13()) rl78_error (s " is only supported on the G13") 166#define ISA_G14(s) if (!rl78_isa_g14()) rl78_error (s " is only supported on the G14") 167 168static void check_expr_is_bit_index (expressionS); 169#define Bit(e) check_expr_is_bit_index (e); 170 171/* Returns TRUE (non-zero) if the expression is a constant in the 172 given range. */ 173static int check_expr_is_const (expressionS, int vmin, int vmax); 174 175/* Convert a "regb" value to a "reg_xbc" value. Error if other 176 registers are passed. Needed to avoid reduce-reduce conflicts. */ 177static int 178reg_xbc (int reg) 179{ 180 switch (reg) 181 { 182 case 0: /* X */ 183 return 0x10; 184 case 3: /* B */ 185 return 0x20; 186 case 2: /* C */ 187 return 0x30; 188 default: 189 rl78_error ("Only X, B, or C allowed here"); 190 return 0; 191 } 192} 193 194 195#line 196 "rl78-parse.c" /* yacc.c:339 */ 196 197# ifndef YY_NULL 198# if defined __cplusplus && 201103L <= __cplusplus 199# define YY_NULL nullptr 200# else 201# define YY_NULL 0 202# endif 203# endif 204 205/* Enabling verbose error messages. */ 206#ifdef YYERROR_VERBOSE 207# undef YYERROR_VERBOSE 208# define YYERROR_VERBOSE 1 209#else 210# define YYERROR_VERBOSE 0 211#endif 212 213/* In a future release of Bison, this section will be replaced 214 by #include "y.tab.h". */ 215#ifndef YY_RL78_RL_PARSE_H_INCLUDED 216# define YY_RL78_RL_PARSE_H_INCLUDED 217/* Debug traces. */ 218#ifndef YYDEBUG 219# define YYDEBUG 0 220#endif 221#if YYDEBUG 222extern int rl78_debug; 223#endif 224 225/* Token type. */ 226#ifndef YYTOKENTYPE 227# define YYTOKENTYPE 228 enum yytokentype 229 { 230 A = 258, 231 X = 259, 232 B = 260, 233 C = 261, 234 D = 262, 235 E = 263, 236 H = 264, 237 L = 265, 238 AX = 266, 239 BC = 267, 240 DE = 268, 241 HL = 269, 242 SPL = 270, 243 SPH = 271, 244 PSW = 272, 245 CS = 273, 246 ES = 274, 247 PMC = 275, 248 MEM = 276, 249 FLAG = 277, 250 SP = 278, 251 CY = 279, 252 RB0 = 280, 253 RB1 = 281, 254 RB2 = 282, 255 RB3 = 283, 256 EXPR = 284, 257 UNKNOWN_OPCODE = 285, 258 IS_OPCODE = 286, 259 DOT_S = 287, 260 DOT_B = 288, 261 DOT_W = 289, 262 DOT_L = 290, 263 DOT_A = 291, 264 DOT_UB = 292, 265 DOT_UW = 293, 266 ADD = 294, 267 ADDC = 295, 268 ADDW = 296, 269 AND_ = 297, 270 AND1 = 298, 271 BF = 299, 272 BH = 300, 273 BNC = 301, 274 BNH = 302, 275 BNZ = 303, 276 BR = 304, 277 BRK = 305, 278 BRK1 = 306, 279 BT = 307, 280 BTCLR = 308, 281 BZ = 309, 282 CALL = 310, 283 CALLT = 311, 284 CLR1 = 312, 285 CLRB = 313, 286 CLRW = 314, 287 CMP = 315, 288 CMP0 = 316, 289 CMPS = 317, 290 CMPW = 318, 291 DEC = 319, 292 DECW = 320, 293 DI = 321, 294 DIVHU = 322, 295 DIVWU = 323, 296 EI = 324, 297 HALT = 325, 298 INC = 326, 299 INCW = 327, 300 MACH = 328, 301 MACHU = 329, 302 MOV = 330, 303 MOV1 = 331, 304 MOVS = 332, 305 MOVW = 333, 306 MULH = 334, 307 MULHU = 335, 308 MULU = 336, 309 NOP = 337, 310 NOT1 = 338, 311 ONEB = 339, 312 ONEW = 340, 313 OR = 341, 314 OR1 = 342, 315 POP = 343, 316 PUSH = 344, 317 RET = 345, 318 RETI = 346, 319 RETB = 347, 320 ROL = 348, 321 ROLC = 349, 322 ROLWC = 350, 323 ROR = 351, 324 RORC = 352, 325 SAR = 353, 326 SARW = 354, 327 SEL = 355, 328 SET1 = 356, 329 SHL = 357, 330 SHLW = 358, 331 SHR = 359, 332 SHRW = 360, 333 SKC = 361, 334 SKH = 362, 335 SKNC = 363, 336 SKNH = 364, 337 SKNZ = 365, 338 SKZ = 366, 339 STOP = 367, 340 SUB = 368, 341 SUBC = 369, 342 SUBW = 370, 343 XCH = 371, 344 XCHW = 372, 345 XOR = 373, 346 XOR1 = 374 347 }; 348#endif 349/* Tokens. */ 350#define A 258 351#define X 259 352#define B 260 353#define C 261 354#define D 262 355#define E 263 356#define H 264 357#define L 265 358#define AX 266 359#define BC 267 360#define DE 268 361#define HL 269 362#define SPL 270 363#define SPH 271 364#define PSW 272 365#define CS 273 366#define ES 274 367#define PMC 275 368#define MEM 276 369#define FLAG 277 370#define SP 278 371#define CY 279 372#define RB0 280 373#define RB1 281 374#define RB2 282 375#define RB3 283 376#define EXPR 284 377#define UNKNOWN_OPCODE 285 378#define IS_OPCODE 286 379#define DOT_S 287 380#define DOT_B 288 381#define DOT_W 289 382#define DOT_L 290 383#define DOT_A 291 384#define DOT_UB 292 385#define DOT_UW 293 386#define ADD 294 387#define ADDC 295 388#define ADDW 296 389#define AND_ 297 390#define AND1 298 391#define BF 299 392#define BH 300 393#define BNC 301 394#define BNH 302 395#define BNZ 303 396#define BR 304 397#define BRK 305 398#define BRK1 306 399#define BT 307 400#define BTCLR 308 401#define BZ 309 402#define CALL 310 403#define CALLT 311 404#define CLR1 312 405#define CLRB 313 406#define CLRW 314 407#define CMP 315 408#define CMP0 316 409#define CMPS 317 410#define CMPW 318 411#define DEC 319 412#define DECW 320 413#define DI 321 414#define DIVHU 322 415#define DIVWU 323 416#define EI 324 417#define HALT 325 418#define INC 326 419#define INCW 327 420#define MACH 328 421#define MACHU 329 422#define MOV 330 423#define MOV1 331 424#define MOVS 332 425#define MOVW 333 426#define MULH 334 427#define MULHU 335 428#define MULU 336 429#define NOP 337 430#define NOT1 338 431#define ONEB 339 432#define ONEW 340 433#define OR 341 434#define OR1 342 435#define POP 343 436#define PUSH 344 437#define RET 345 438#define RETI 346 439#define RETB 347 440#define ROL 348 441#define ROLC 349 442#define ROLWC 350 443#define ROR 351 444#define RORC 352 445#define SAR 353 446#define SARW 354 447#define SEL 355 448#define SET1 356 449#define SHL 357 450#define SHLW 358 451#define SHR 359 452#define SHRW 360 453#define SKC 361 454#define SKH 362 455#define SKNC 363 456#define SKNH 364 457#define SKNZ 365 458#define SKZ 366 459#define STOP 367 460#define SUB 368 461#define SUBC 369 462#define SUBW 370 463#define XCH 371 464#define XCHW 372 465#define XOR 373 466#define XOR1 374 467 468/* Value type. */ 469#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 470typedef union YYSTYPE YYSTYPE; 471union YYSTYPE 472{ 473#line 144 "./config/rl78-parse.y" /* yacc.c:355 */ 474 475 int regno; 476 expressionS exp; 477 478#line 479 "rl78-parse.c" /* yacc.c:355 */ 479}; 480# define YYSTYPE_IS_TRIVIAL 1 481# define YYSTYPE_IS_DECLARED 1 482#endif 483 484 485extern YYSTYPE rl78_lval; 486 487int rl78_parse (void); 488 489#endif /* !YY_RL78_RL_PARSE_H_INCLUDED */ 490 491/* Copy the second part of user declarations. */ 492 493#line 494 "rl78-parse.c" /* yacc.c:358 */ 494 495#ifdef short 496# undef short 497#endif 498 499#ifdef YYTYPE_UINT8 500typedef YYTYPE_UINT8 yytype_uint8; 501#else 502typedef unsigned char yytype_uint8; 503#endif 504 505#ifdef YYTYPE_INT8 506typedef YYTYPE_INT8 yytype_int8; 507#else 508typedef signed char yytype_int8; 509#endif 510 511#ifdef YYTYPE_UINT16 512typedef YYTYPE_UINT16 yytype_uint16; 513#else 514typedef unsigned short int yytype_uint16; 515#endif 516 517#ifdef YYTYPE_INT16 518typedef YYTYPE_INT16 yytype_int16; 519#else 520typedef short int yytype_int16; 521#endif 522 523#ifndef YYSIZE_T 524# ifdef __SIZE_TYPE__ 525# define YYSIZE_T __SIZE_TYPE__ 526# elif defined size_t 527# define YYSIZE_T size_t 528# elif ! defined YYSIZE_T 529# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 530# define YYSIZE_T size_t 531# else 532# define YYSIZE_T unsigned int 533# endif 534#endif 535 536#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 537 538#ifndef YY_ 539# if defined YYENABLE_NLS && YYENABLE_NLS 540# if ENABLE_NLS 541# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 542# define YY_(Msgid) dgettext ("bison-runtime", Msgid) 543# endif 544# endif 545# ifndef YY_ 546# define YY_(Msgid) Msgid 547# endif 548#endif 549 550#ifndef __attribute__ 551/* This feature is available in gcc versions 2.5 and later. */ 552# if (! defined __GNUC__ || __GNUC__ < 2 \ 553 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) 554# define __attribute__(Spec) /* empty */ 555# endif 556#endif 557 558/* Suppress unused-variable warnings by "using" E. */ 559#if ! defined lint || defined __GNUC__ 560# define YYUSE(E) ((void) (E)) 561#else 562# define YYUSE(E) /* empty */ 563#endif 564 565#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 566/* Suppress an incorrect diagnostic about yylval being uninitialized. */ 567# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 568 _Pragma ("GCC diagnostic push") \ 569 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ 570 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 571# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 572 _Pragma ("GCC diagnostic pop") 573#else 574# define YY_INITIAL_VALUE(Value) Value 575#endif 576#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 577# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 578# define YY_IGNORE_MAYBE_UNINITIALIZED_END 579#endif 580#ifndef YY_INITIAL_VALUE 581# define YY_INITIAL_VALUE(Value) /* Nothing. */ 582#endif 583 584 585#if ! defined yyoverflow || YYERROR_VERBOSE 586 587/* The parser invokes alloca or malloc; define the necessary symbols. */ 588 589# ifdef YYSTACK_USE_ALLOCA 590# if YYSTACK_USE_ALLOCA 591# ifdef __GNUC__ 592# define YYSTACK_ALLOC __builtin_alloca 593# elif defined __BUILTIN_VA_ARG_INCR 594# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 595# elif defined _AIX 596# define YYSTACK_ALLOC __alloca 597# elif defined _MSC_VER 598# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 599# define alloca _alloca 600# else 601# define YYSTACK_ALLOC alloca 602# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS 603# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 604 /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 605# ifndef EXIT_SUCCESS 606# define EXIT_SUCCESS 0 607# endif 608# endif 609# endif 610# endif 611# endif 612 613# ifdef YYSTACK_ALLOC 614 /* Pacify GCC's 'empty if-body' warning. */ 615# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 616# ifndef YYSTACK_ALLOC_MAXIMUM 617 /* The OS might guarantee only one guard page at the bottom of the stack, 618 and a page size can be as small as 4096 bytes. So we cannot safely 619 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 620 to allow for a few compiler-allocated temporary stack slots. */ 621# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 622# endif 623# else 624# define YYSTACK_ALLOC YYMALLOC 625# define YYSTACK_FREE YYFREE 626# ifndef YYSTACK_ALLOC_MAXIMUM 627# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 628# endif 629# if (defined __cplusplus && ! defined EXIT_SUCCESS \ 630 && ! ((defined YYMALLOC || defined malloc) \ 631 && (defined YYFREE || defined free))) 632# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 633# ifndef EXIT_SUCCESS 634# define EXIT_SUCCESS 0 635# endif 636# endif 637# ifndef YYMALLOC 638# define YYMALLOC malloc 639# if ! defined malloc && ! defined EXIT_SUCCESS 640void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 641# endif 642# endif 643# ifndef YYFREE 644# define YYFREE free 645# if ! defined free && ! defined EXIT_SUCCESS 646void free (void *); /* INFRINGES ON USER NAME SPACE */ 647# endif 648# endif 649# endif 650#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 651 652 653#if (! defined yyoverflow \ 654 && (! defined __cplusplus \ 655 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 656 657/* A type that is properly aligned for any stack member. */ 658union yyalloc 659{ 660 yytype_int16 yyss_alloc; 661 YYSTYPE yyvs_alloc; 662}; 663 664/* The size of the maximum gap between one aligned stack and the next. */ 665# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 666 667/* The size of an array large to enough to hold all stacks, each with 668 N elements. */ 669# define YYSTACK_BYTES(N) \ 670 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 671 + YYSTACK_GAP_MAXIMUM) 672 673# define YYCOPY_NEEDED 1 674 675/* Relocate STACK from its old location to the new one. The 676 local variables YYSIZE and YYSTACKSIZE give the old and new number of 677 elements in the stack, and YYPTR gives the new location of the 678 stack. Advance YYPTR to a properly aligned location for the next 679 stack. */ 680# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 681 do \ 682 { \ 683 YYSIZE_T yynewbytes; \ 684 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 685 Stack = &yyptr->Stack_alloc; \ 686 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 687 yyptr += yynewbytes / sizeof (*yyptr); \ 688 } \ 689 while (0) 690 691#endif 692 693#if defined YYCOPY_NEEDED && YYCOPY_NEEDED 694/* Copy COUNT objects from SRC to DST. The source and destination do 695 not overlap. */ 696# ifndef YYCOPY 697# if defined __GNUC__ && 1 < __GNUC__ 698# define YYCOPY(Dst, Src, Count) \ 699 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) 700# else 701# define YYCOPY(Dst, Src, Count) \ 702 do \ 703 { \ 704 YYSIZE_T yyi; \ 705 for (yyi = 0; yyi < (Count); yyi++) \ 706 (Dst)[yyi] = (Src)[yyi]; \ 707 } \ 708 while (0) 709# endif 710# endif 711#endif /* !YYCOPY_NEEDED */ 712 713/* YYFINAL -- State number of the termination state. */ 714#define YYFINAL 180 715/* YYLAST -- Last index in YYTABLE. */ 716#define YYLAST 844 717 718/* YYNTOKENS -- Number of terminals. */ 719#define YYNTOKENS 129 720/* YYNNTS -- Number of nonterminals. */ 721#define YYNNTS 56 722/* YYNRULES -- Number of rules. */ 723#define YYNRULES 324 724/* YYNSTATES -- Number of states. */ 725#define YYNSTATES 744 726 727/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned 728 by yylex, with out-of-bounds checking. */ 729#define YYUNDEFTOK 2 730#define YYMAXUTOK 374 731 732#define YYTRANSLATE(YYX) \ 733 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 734 735/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM 736 as returned by yylex, without out-of-bounds checking. */ 737static const yytype_uint8 yytranslate[] = 738{ 739 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 740 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 741 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 742 2, 2, 2, 122, 2, 121, 127, 2, 2, 2, 743 2, 2, 2, 125, 120, 2, 126, 2, 2, 2, 744 2, 2, 2, 2, 2, 2, 2, 2, 128, 2, 745 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 746 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 747 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 748 2, 123, 2, 124, 2, 2, 2, 2, 2, 2, 749 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 750 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 751 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 752 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 753 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 754 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 755 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 756 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 757 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 760 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 761 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 762 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 763 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 764 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 765 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 766 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 767 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 768 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 769 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 770 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 771 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 772 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 773 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 774 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 775 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 776 115, 116, 117, 118, 119 777}; 778 779#if YYDEBUG 780 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 781static const yytype_uint16 yyrline[] = 782{ 783 0, 187, 187, 208, 211, 211, 214, 217, 220, 223, 784 223, 226, 229, 232, 235, 238, 241, 250, 253, 256, 785 256, 259, 262, 265, 268, 276, 276, 279, 279, 288, 786 288, 291, 291, 296, 299, 302, 305, 308, 311, 316, 787 319, 328, 331, 336, 339, 342, 345, 348, 353, 356, 788 361, 364, 367, 370, 373, 394, 397, 400, 409, 412, 789 415, 420, 422, 424, 426, 429, 429, 432, 437, 439, 790 444, 447, 450, 453, 456, 456, 459, 464, 469, 472, 791 472, 474, 476, 478, 480, 485, 488, 488, 491, 494, 792 499, 502, 507, 507, 510, 510, 513, 516, 516, 524, 793 524, 527, 527, 530, 530, 535, 543, 545, 548, 555, 794 555, 564, 567, 570, 573, 576, 576, 585, 588, 591, 795 594, 597, 597, 606, 606, 606, 609, 612, 619, 619, 796 619, 626, 629, 632, 635, 638, 641, 644, 647, 650, 797 653, 656, 659, 662, 665, 668, 671, 674, 677, 680, 798 683, 686, 689, 692, 695, 698, 701, 704, 704, 707, 799 707, 710, 710, 713, 713, 716, 716, 719, 719, 724, 800 733, 736, 739, 742, 751, 754, 757, 762, 767, 770, 801 773, 773, 782, 782, 791, 791, 800, 803, 806, 809, 802 812, 815, 818, 821, 824, 827, 830, 833, 836, 839, 803 842, 845, 848, 851, 854, 857, 860, 860, 863, 863, 804 866, 866, 869, 869, 872, 872, 875, 878, 881, 884, 805 887, 892, 897, 902, 905, 908, 911, 916, 919, 922, 806 927, 932, 937, 942, 947, 952, 959, 964, 971, 974, 807 977, 980, 985, 990, 995, 1000, 1005, 1012, 1017, 1024, 808 1027, 1030, 1033, 1036, 1039, 1044, 1049, 1056, 1059, 1062, 809 1065, 1068, 1071, 1074, 1077, 1088, 1097, 1098, 1102, 1103, 810 1104, 1105, 1106, 1107, 1108, 1109, 1112, 1113, 1114, 1115, 811 1116, 1117, 1118, 1121, 1122, 1123, 1124, 1127, 1128, 1129, 812 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1144, 1145, 1146, 813 1147, 1148, 1149, 1150, 1151, 1154, 1155, 1156, 1159, 1160, 814 1161, 1164, 1165, 1166, 1169, 1170, 1173, 1174, 1177, 1178, 815 1181, 1182, 1185, 1186, 1189 816}; 817#endif 818 819#if YYDEBUG || YYERROR_VERBOSE || 0 820/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 821 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 822static const char *const yytname[] = 823{ 824 "$end", "error", "$undefined", "A", "X", "B", "C", "D", "E", "H", "L", 825 "AX", "BC", "DE", "HL", "SPL", "SPH", "PSW", "CS", "ES", "PMC", "MEM", 826 "FLAG", "SP", "CY", "RB0", "RB1", "RB2", "RB3", "EXPR", "UNKNOWN_OPCODE", 827 "IS_OPCODE", "DOT_S", "DOT_B", "DOT_W", "DOT_L", "DOT_A", "DOT_UB", 828 "DOT_UW", "ADD", "ADDC", "ADDW", "AND_", "AND1", "BF", "BH", "BNC", 829 "BNH", "BNZ", "BR", "BRK", "BRK1", "BT", "BTCLR", "BZ", "CALL", "CALLT", 830 "CLR1", "CLRB", "CLRW", "CMP", "CMP0", "CMPS", "CMPW", "DEC", "DECW", 831 "DI", "DIVHU", "DIVWU", "EI", "HALT", "INC", "INCW", "MACH", "MACHU", 832 "MOV", "MOV1", "MOVS", "MOVW", "MULH", "MULHU", "MULU", "NOP", "NOT1", 833 "ONEB", "ONEW", "OR", "OR1", "POP", "PUSH", "RET", "RETI", "RETB", "ROL", 834 "ROLC", "ROLWC", "ROR", "RORC", "SAR", "SARW", "SEL", "SET1", "SHL", 835 "SHLW", "SHR", "SHRW", "SKC", "SKH", "SKNC", "SKNH", "SKNZ", "SKZ", 836 "STOP", "SUB", "SUBC", "SUBW", "XCH", "XCHW", "XOR", "XOR1", "','", 837 "'#'", "'!'", "'['", "']'", "'+'", "'.'", "'$'", "':'", "$accept", 838 "statement", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", 839 "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", 840 "$@18", "$@19", "$@20", "$@21", "$@22", "$@23", "$@24", "$@25", "$@26", 841 "$@27", "$@28", "$@29", "$@30", "$@31", "$@32", "$@33", "$@34", "$@35", 842 "$@36", "$@37", "$@38", "opt_es", "regb", "regb_na", "regw", "regw_na", 843 "sfr", "addsub", "addsubw", "andor1", "bt_bf", "setclr1", "oneclrb", 844 "oneclrw", "incdec", "incdecw", "mov1", YY_NULL 845}; 846#endif 847 848# ifdef YYPRINT 849/* YYTOKNUM[NUM] -- (External) token number corresponding to the 850 (internal) symbol number NUM (which must be that of a token). */ 851static const yytype_uint16 yytoknum[] = 852{ 853 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 854 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 855 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 856 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 857 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 858 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 859 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 860 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 861 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 862 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 863 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 864 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 865 44, 35, 33, 91, 93, 43, 46, 36, 58 866}; 867# endif 868 869#define YYPACT_NINF -212 870 871#define yypact_value_is_default(Yystate) \ 872 (!!((Yystate) == (-212))) 873 874#define YYTABLE_NINF -1 875 876#define yytable_value_is_error(Yytable_value) \ 877 0 878 879 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 880 STATE-NUM. */ 881static const yytype_int16 yypact[] = 882{ 883 226, -44, -212, -212, -212, -212, -212, -212, -212, -34, 884 -15, 14, 20, 42, -212, -212, -212, -212, 45, 91, 885 -80, -212, -212, -212, -212, 347, 134, -212, -212, -212, 886 -212, -212, -212, -212, -212, -212, -212, -212, -212, 53, 887 -212, 136, 430, -212, -212, 153, -212, 150, -212, -212, 888 -212, -212, 413, 451, -212, -212, -212, 181, 186, 198, 889 192, 212, 214, 225, 232, -212, 368, 210, 236, 231, 890 -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, 891 242, 244, -212, -212, 261, 221, 107, 325, 162, 343, 892 403, 222, 10, 235, 362, 328, 341, 385, 394, 402, 893 -212, 38, 81, 411, -212, -212, -212, -212, 82, 263, 894 -212, 428, -212, -212, -212, -212, 300, -212, 273, 351, 895 -212, -212, -212, -212, 367, -212, -212, -212, -212, -212, 896 -212, -212, -212, -212, -212, -212, 376, -212, -212, 457, 897 11, 372, 383, 384, 386, -212, -212, -212, 388, 36, 898 389, -212, -212, -212, -212, -212, -212, -212, -212, 390, 899 391, 392, 393, 395, 396, 397, 398, -212, -212, -212, 900 -212, 401, 404, 405, 406, 407, 408, 409, 410, 412, 901 -212, 414, -212, 415, 416, 418, 419, 420, 379, 300, 902 417, 421, 422, 423, -212, 424, 0, 425, -212, -212, 903 -212, -212, -212, 431, -212, -212, -212, -212, -212, -212, 904 -212, -212, -212, -212, 426, -212, 485, 505, -212, -212, 905 233, -212, 432, 427, 434, 436, 435, -212, -212, -212, 906 -212, -212, -212, 491, -212, 493, -212, -212, 494, 502, 907 439, -212, -212, 504, 136, 80, 440, 437, -79, 184, 908 29, 72, 521, 123, 41, 79, 512, 239, 102, 513, 909 516, 517, 523, 526, 527, 535, 536, 537, 538, 539, 910 540, 541, 542, 543, 429, 399, 18, 453, 545, 572, 911 95, 455, 381, 548, 549, 565, 551, 552, 553, 554, 912 570, 556, -212, 557, 267, -212, -212, 462, -212, 559, 913 575, 561, 400, 562, 578, 564, -212, -212, -212, -212, 914 -212, -212, 471, 566, 63, -212, -212, 567, 5, 6, 915 161, 473, 268, 280, 330, -212, 569, 86, 571, 573, 916 -212, 474, -212, 574, 65, -212, -212, 576, 55, 342, 917 481, 480, 335, 345, 348, -212, -212, -212, 577, 486, 918 -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, 919 -212, -212, -212, -212, -212, -212, 344, -212, -212, -212, 920 -212, 580, 352, -212, 489, 487, -212, -212, 582, 354, 921 -212, 583, 488, 490, 492, 495, 497, 498, 496, 499, 922 -212, -212, 500, 501, -212, -212, 584, 608, 594, -212, 923 503, 507, 506, 508, 510, 509, 511, 514, 519, 610, 924 -212, 518, 600, 433, 520, -212, 601, -212, 607, 522, 925 524, 525, 530, 531, 613, 532, 111, 533, 614, -212, 926 -212, 615, -212, -212, 616, -212, 534, 618, 438, -212, 927 -212, 625, 544, 546, 547, 626, 555, 558, 627, 560, 928 629, 563, 630, -212, -212, 631, 632, 465, -212, -212, 929 633, 641, 634, 568, -212, -212, 635, 651, -212, 637, 930 638, 655, 643, 550, 579, 581, 585, 644, 587, -212, 931 586, 590, 645, 652, 650, 653, 667, 656, 660, 589, 932 662, 591, 363, -212, -212, 593, 356, 358, 360, 7, 933 -212, -212, -212, 588, 598, 599, 8, 684, 596, 685, 934 597, 602, 603, 27, 604, -212, -212, -212, 605, 382, 935 -212, -212, 606, 364, 366, 369, -212, -212, 611, 612, 936 617, -212, 679, 680, 609, 681, 619, 682, 620, -212, 937 -212, 371, 373, -212, 375, -212, 665, -212, 377, -212, 938 -212, 621, -212, 666, 668, 669, 670, -212, 671, 672, 939 -212, 622, -212, -212, -212, 623, -212, -212, 673, -212, 940 674, 624, 628, 636, -212, -212, 675, -212, 114, -212, 941 676, -212, 693, -212, 28, 30, 31, -212, 694, -212, 942 639, -212, 642, 646, 647, -212, 695, 648, -212, -212, 943 649, 640, 654, 657, -212, -212, 696, -212, 705, -212, 944 706, -212, 698, 699, 725, -212, -212, 659, -212, 663, 945 -212, 664, -212, 709, -212, 139, -212, 165, -212, -212, 946 710, -212, -212, 661, -212, -212, -212, 677, -212, -212, 947 658, -212, 678, 683, 686, -212, -212, -212, 687, 688, 948 689, 690, -212, 691, -212, -212, 711, -212, 712, -212, 949 713, -212, 32, 746, 747, 33, -212, -212, 35, 692, 950 -212, -212, -212, 697, 700, -212, 701, -212, -212, -212, 951 740, 742, -212, 743, 702, 703, 704, 707, 708, 714, 952 715, 716, 726, 717, -212, 727, 733, -212, -212, -212, 953 -212, -212, -212, -212, -212, -212, -212, 729, -212, -212, 954 -212, 732, -212, -212, 734, -212, -212, -212, -212, -212, 955 -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, 956 -212, 736, -212, -212, -212, -212, -212, -212, -212, -212, 957 -212, -212, -212, -212 958}; 959 960 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. 961 Performed when YYTABLE does not specify something else to do. Zero 962 means the default is an error. */ 963static const yytype_uint16 yydefact[] = 964{ 965 0, 0, 2, 297, 298, 305, 302, 308, 312, 0, 966 0, 0, 0, 0, 48, 49, 311, 313, 0, 0, 967 0, 315, 317, 319, 301, 266, 0, 307, 321, 323, 968 90, 97, 99, 91, 105, 320, 322, 103, 101, 266, 969 324, 266, 266, 94, 92, 0, 221, 0, 316, 318, 970 303, 309, 0, 0, 227, 228, 229, 0, 0, 0, 971 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, 972 249, 250, 251, 252, 253, 254, 255, 299, 300, 306, 973 0, 0, 304, 310, 0, 266, 0, 0, 266, 266, 974 266, 0, 0, 266, 266, 0, 0, 0, 0, 0, 975 43, 0, 0, 0, 283, 284, 285, 286, 0, 0, 976 50, 0, 70, 71, 72, 73, 0, 74, 0, 0, 977 98, 100, 104, 102, 0, 276, 278, 277, 280, 279, 978 282, 281, 290, 291, 292, 293, 294, 295, 296, 0, 979 0, 0, 0, 0, 0, 287, 288, 289, 0, 0, 980 0, 95, 93, 96, 222, 224, 223, 226, 225, 0, 981 0, 0, 0, 0, 0, 0, 0, 238, 239, 240, 982 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 983 1, 0, 4, 0, 0, 0, 0, 0, 0, 294, 984 0, 0, 0, 0, 55, 0, 0, 0, 61, 62, 985 63, 64, 65, 0, 68, 69, 269, 268, 271, 270, 986 273, 272, 275, 274, 0, 79, 0, 0, 78, 86, 987 0, 85, 0, 0, 0, 0, 0, 33, 37, 34, 988 38, 36, 46, 0, 44, 0, 35, 52, 0, 0, 989 0, 267, 75, 0, 266, 266, 267, 0, 0, 0, 990 266, 266, 0, 266, 0, 0, 0, 0, 266, 0, 991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 992 0, 0, 0, 0, 266, 0, 266, 0, 0, 0, 993 266, 0, 266, 0, 0, 0, 0, 0, 0, 0, 994 0, 0, 66, 0, 0, 80, 81, 0, 87, 0, 995 0, 0, 266, 0, 0, 0, 47, 45, 53, 51, 996 54, 76, 0, 0, 0, 114, 126, 0, 0, 0, 997 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 998 127, 0, 219, 0, 0, 186, 218, 0, 0, 0, 999 0, 0, 0, 0, 0, 187, 220, 214, 0, 0, 1000 230, 231, 232, 233, 234, 235, 236, 237, 242, 243, 1001 244, 245, 246, 247, 248, 264, 0, 256, 265, 6, 1002 9, 0, 0, 7, 0, 0, 8, 19, 0, 0, 1003 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004 58, 57, 0, 0, 56, 67, 0, 0, 0, 88, 1005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1006 106, 121, 0, 0, 0, 118, 0, 115, 0, 0, 1007 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 1008 123, 0, 108, 128, 0, 178, 182, 0, 0, 217, 1009 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1010 0, 0, 0, 215, 179, 0, 0, 0, 10, 3, 1011 0, 0, 0, 0, 20, 17, 0, 0, 24, 0, 1012 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 1013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1014 0, 0, 0, 122, 117, 0, 0, 0, 0, 0, 1015 111, 116, 109, 0, 0, 0, 0, 0, 0, 0, 1016 0, 0, 0, 0, 0, 124, 120, 129, 0, 0, 1017 183, 188, 0, 0, 0, 0, 185, 180, 0, 0, 1018 0, 189, 0, 0, 0, 0, 0, 0, 0, 216, 1019 257, 0, 0, 11, 0, 5, 0, 21, 0, 29, 1020 27, 0, 25, 0, 0, 0, 0, 59, 0, 0, 1021 83, 0, 174, 170, 169, 0, 171, 173, 0, 175, 1022 0, 0, 0, 0, 154, 131, 0, 136, 0, 163, 1023 0, 119, 0, 110, 0, 0, 0, 156, 0, 132, 1024 0, 137, 0, 0, 0, 167, 0, 0, 125, 130, 1025 0, 0, 0, 0, 203, 190, 0, 194, 0, 208, 1026 0, 181, 0, 0, 0, 205, 191, 0, 195, 0, 1027 212, 0, 258, 0, 260, 0, 12, 0, 16, 23, 1028 0, 30, 28, 0, 26, 41, 40, 0, 39, 60, 1029 0, 89, 0, 0, 0, 146, 149, 153, 0, 0, 1030 0, 0, 164, 0, 112, 147, 0, 150, 0, 155, 1031 0, 152, 0, 0, 0, 0, 168, 159, 0, 0, 1032 198, 200, 202, 0, 0, 209, 0, 199, 201, 204, 1033 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 1034 0, 0, 0, 0, 84, 0, 0, 77, 134, 141, 1035 143, 139, 161, 145, 148, 151, 135, 0, 142, 144, 1036 140, 0, 160, 165, 0, 177, 192, 196, 206, 193, 1037 197, 210, 259, 262, 263, 261, 14, 15, 13, 22, 1038 31, 0, 172, 176, 162, 133, 138, 166, 157, 207, 1039 211, 32, 42, 158 1040}; 1041 1042 /* YYPGOTO[NTERM-NUM]. */ 1043static const yytype_int16 yypgoto[] = 1044{ 1045 -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, 1046 -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, 1047 -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, 1048 -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, 1049 -39, 529, -84, -48, -211, -82, -212, -212, -212, -212, 1050 -212, -212, -212, -212, -212, -212 1051}; 1052 1053 /* YYDEFGOTO[NTERM-NUM]. */ 1054static const yytype_int16 yydefgoto[] = 1055{ 1056 -1, 84, 277, 458, 464, 634, 632, 631, 741, 292, 1057 242, 295, 298, 152, 151, 120, 121, 123, 122, 583, 1058 501, 493, 515, 598, 517, 599, 743, 712, 734, 652, 1059 737, 666, 611, 520, 526, 739, 675, 740, 682, 453, 1060 118, 218, 141, 110, 150, 142, 85, 86, 87, 88, 1061 89, 90, 91, 92, 93, 94 1062}; 1063 1064 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If 1065 positive, shift that token. If negative, reduce the rule whose 1066 number is the opposite. If YYTABLE_NINF, syntax error. */ 1067static const yytype_uint16 yytable[] = 1068{ 1069 140, 184, 143, 149, 156, 158, 192, 197, 415, 417, 1070 581, 587, 226, 206, 207, 208, 209, 210, 211, 212, 1071 213, 369, 125, 126, 127, 128, 129, 130, 131, 214, 1072 595, 655, 325, 657, 659, 706, 710, 116, 713, 215, 1073 248, 319, 335, 111, 320, 221, 183, 370, 116, 191, 1074 196, 203, 336, 100, 220, 225, 124, 125, 126, 127, 1075 128, 129, 130, 131, 368, 255, 440, 232, 132, 133, 1076 134, 135, 136, 137, 138, 206, 207, 208, 209, 210, 1077 211, 212, 213, 95, 125, 126, 127, 128, 129, 130, 1078 131, 116, 411, 96, 436, 132, 133, 134, 135, 189, 1079 137, 138, 104, 105, 106, 107, 104, 105, 106, 107, 1080 234, 237, 97, 345, 116, 430, 510, 511, 185, 649, 1081 650, 116, 289, 290, 377, 346, 416, 418, 582, 588, 1082 186, 347, 216, 217, 249, 145, 146, 147, 119, 371, 1083 512, 98, 116, 651, 685, 686, 332, 99, 596, 656, 1084 326, 658, 660, 707, 711, 116, 714, 153, 256, 257, 1085 233, 315, 337, 316, 101, 188, 419, 420, 687, 102, 1086 688, 689, 103, 421, 154, 139, 441, 132, 133, 134, 1087 135, 189, 137, 138, 159, 412, 413, 437, 438, 160, 1088 367, 190, 373, 328, 690, 163, 321, 322, 323, 338, 1089 385, 313, 339, 235, 238, 312, 314, 324, 431, 161, 1090 162, 327, 329, 108, 334, 164, 378, 165, 109, 349, 1091 405, 174, 175, 348, 181, 125, 126, 127, 128, 129, 1092 130, 131, 380, 204, 205, 366, 166, 372, 1, 176, 1093 116, 379, 177, 384, 333, 178, 104, 105, 106, 107, 1094 182, 341, 342, 343, 116, 179, 2, 167, 168, 169, 1095 170, 180, 344, 404, 219, 3, 4, 5, 6, 7, 1096 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1097 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 1098 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 1099 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 1100 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 1101 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1102 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 1103 78, 79, 80, 81, 82, 83, 193, 442, 443, 187, 1104 112, 113, 114, 115, 444, 299, 300, 227, 132, 133, 1105 134, 135, 189, 137, 138, 222, 116, 194, 571, 572, 1106 228, 171, 195, 172, 173, 573, 117, 132, 133, 134, 1107 135, 189, 137, 138, 382, 239, 223, 601, 602, 396, 1108 397, 224, 423, 424, 603, 243, 132, 133, 134, 135, 1109 189, 137, 138, 402, 425, 426, 198, 199, 200, 201, 1110 383, 145, 146, 147, 229, 132, 133, 134, 135, 189, 1111 137, 138, 116, 230, 104, 105, 106, 107, 241, 403, 1112 155, 231, 202, 125, 126, 127, 128, 129, 130, 131, 1113 236, 144, 145, 146, 147, 495, 496, 497, 116, 116, 1114 522, 523, 524, 148, 427, 428, 498, 240, 365, 447, 1115 448, 525, 104, 105, 106, 107, 456, 457, 157, 449, 1116 450, 244, 451, 452, 460, 461, 466, 467, 541, 542, 1117 575, 576, 577, 578, 579, 580, 247, 245, 605, 606, 1118 607, 608, 250, 609, 610, 622, 623, 624, 625, 626, 1119 627, 629, 630, 251, 246, 283, 253, 252, 254, 258, 1120 259, 260, 261, 262, 296, 263, 264, 265, 266, 297, 1121 306, 267, 307, 308, 268, 269, 270, 271, 272, 273, 1122 274, 309, 275, 311, 276, 331, 279, 278, 280, 281, 1123 282, 340, 350, 284, 285, 351, 352, 302, 286, 287, 1124 288, 291, 353, 293, 294, 354, 355, 318, 301, 304, 1125 303, 305, 317, 310, 356, 357, 358, 359, 360, 361, 1126 362, 363, 364, 374, 375, 376, 381, 386, 387, 388, 1127 389, 390, 391, 392, 393, 394, 395, 398, 399, 400, 1128 401, 406, 407, 408, 409, 410, 414, 422, 429, 434, 1129 432, 445, 433, 435, 446, 439, 454, 463, 455, 459, 1130 462, 465, 468, 479, 469, 471, 470, 473, 474, 476, 1131 475, 472, 480, 481, 491, 478, 477, 483, 482, 494, 1132 500, 488, 484, 486, 485, 487, 502, 531, 489, 490, 1133 499, 492, 508, 514, 516, 518, 503, 521, 504, 505, 1134 506, 507, 509, 513, 527, 544, 534, 519, 536, 538, 1135 539, 540, 543, 545, 547, 548, 549, 550, 528, 551, 1136 529, 530, 552, 557, 561, 532, 562, 553, 533, 563, 1137 535, 565, 564, 537, 567, 566, 569, 589, 591, 546, 1138 615, 616, 618, 620, 628, 635, 715, 636, 637, 638, 1139 639, 640, 643, 644, 648, 653, 554, 555, 584, 677, 1140 678, 559, 556, 558, 560, 568, 570, 574, 585, 586, 1141 590, 592, 654, 661, 667, 673, 593, 594, 597, 600, 1142 604, 612, 613, 617, 674, 676, 679, 614, 684, 691, 1143 703, 704, 705, 619, 621, 633, 641, 642, 645, 708, 1144 709, 719, 646, 720, 721, 730, 732, 733, 735, 662, 1145 647, 736, 663, 738, 670, 742, 664, 665, 668, 669, 1146 0, 0, 0, 0, 0, 0, 0, 0, 671, 680, 1147 330, 672, 694, 681, 683, 0, 0, 692, 0, 0, 1148 0, 0, 0, 0, 0, 0, 0, 693, 0, 0, 1149 0, 0, 0, 696, 695, 0, 0, 0, 0, 0, 1150 697, 698, 699, 700, 701, 702, 0, 0, 0, 0, 1151 0, 716, 0, 0, 717, 718, 722, 723, 724, 0, 1152 0, 725, 726, 0, 0, 0, 0, 0, 727, 728, 1153 729, 0, 0, 0, 731 1154}; 1155 1156static const yytype_int16 yycheck[] = 1157{ 1158 39, 85, 41, 42, 52, 53, 88, 89, 3, 3, 1159 3, 3, 94, 3, 4, 5, 6, 7, 8, 9, 1160 10, 3, 4, 5, 6, 7, 8, 9, 10, 19, 1161 3, 3, 3, 3, 3, 3, 3, 19, 3, 29, 1162 29, 120, 253, 123, 123, 93, 85, 29, 19, 88, 1163 89, 90, 11, 11, 93, 94, 3, 4, 5, 6, 1164 7, 8, 9, 10, 275, 29, 11, 29, 15, 16, 1165 17, 18, 19, 20, 21, 3, 4, 5, 6, 7, 1166 8, 9, 10, 127, 4, 5, 6, 7, 8, 9, 1167 10, 19, 29, 127, 29, 15, 16, 17, 18, 19, 1168 20, 21, 11, 12, 13, 14, 11, 12, 13, 14, 1169 29, 29, 127, 11, 19, 29, 5, 6, 11, 5, 1170 6, 19, 122, 123, 29, 23, 121, 121, 121, 121, 1171 23, 29, 122, 123, 123, 12, 13, 14, 4, 121, 1172 29, 127, 19, 29, 5, 6, 23, 127, 121, 121, 1173 121, 121, 121, 121, 121, 19, 121, 4, 122, 123, 1174 122, 245, 121, 245, 122, 3, 5, 6, 29, 127, 1175 5, 6, 127, 12, 24, 122, 121, 15, 16, 17, 1176 18, 19, 20, 21, 3, 122, 123, 122, 123, 3, 1177 274, 29, 276, 121, 29, 3, 12, 13, 14, 120, 1178 282, 121, 123, 122, 122, 244, 245, 23, 122, 11, 1179 12, 250, 251, 122, 253, 3, 121, 3, 127, 258, 1180 302, 11, 12, 121, 3, 4, 5, 6, 7, 8, 1181 9, 10, 280, 11, 12, 274, 11, 276, 12, 3, 1182 19, 280, 11, 282, 121, 3, 11, 12, 13, 14, 1183 29, 12, 13, 14, 19, 11, 30, 25, 26, 27, 1184 28, 0, 23, 302, 29, 39, 40, 41, 42, 43, 1185 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1186 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1187 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 1188 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 1189 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 1190 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 1191 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 1192 114, 115, 116, 117, 118, 119, 3, 5, 6, 24, 1193 3, 4, 5, 6, 12, 122, 123, 29, 15, 16, 1194 17, 18, 19, 20, 21, 3, 19, 24, 5, 6, 1195 29, 3, 29, 5, 6, 12, 29, 15, 16, 17, 1196 18, 19, 20, 21, 3, 122, 24, 5, 6, 122, 1197 123, 29, 124, 125, 12, 122, 15, 16, 17, 18, 1198 19, 20, 21, 3, 124, 125, 3, 4, 5, 6, 1199 29, 12, 13, 14, 29, 15, 16, 17, 18, 19, 1200 20, 21, 19, 29, 11, 12, 13, 14, 128, 29, 1201 17, 29, 29, 4, 5, 6, 7, 8, 9, 10, 1202 29, 11, 12, 13, 14, 12, 13, 14, 19, 19, 1203 12, 13, 14, 23, 124, 125, 23, 29, 29, 124, 1204 125, 23, 11, 12, 13, 14, 122, 123, 17, 124, 1205 125, 120, 124, 125, 122, 123, 122, 123, 13, 14, 1206 124, 125, 124, 125, 124, 125, 29, 120, 124, 125, 1207 124, 125, 120, 124, 125, 124, 125, 124, 125, 124, 1208 125, 124, 125, 120, 128, 126, 120, 123, 120, 120, 1209 120, 120, 120, 120, 29, 120, 120, 120, 120, 14, 1210 29, 120, 29, 29, 120, 120, 120, 120, 120, 120, 1211 120, 29, 120, 29, 120, 14, 120, 122, 120, 120, 1212 120, 29, 29, 126, 123, 29, 29, 120, 126, 126, 1213 126, 126, 29, 122, 128, 29, 29, 120, 126, 123, 1214 126, 126, 122, 124, 29, 29, 29, 29, 29, 29, 1215 29, 29, 29, 120, 29, 3, 121, 29, 29, 14, 1216 29, 29, 29, 29, 14, 29, 29, 125, 29, 14, 1217 29, 29, 14, 29, 123, 29, 29, 124, 29, 125, 1218 29, 120, 29, 29, 124, 29, 29, 120, 122, 29, 1219 121, 29, 29, 29, 126, 123, 126, 120, 120, 120, 1220 124, 126, 14, 29, 14, 124, 126, 120, 125, 29, 1221 29, 120, 126, 123, 126, 126, 29, 11, 124, 120, 1222 120, 123, 29, 29, 29, 29, 124, 29, 124, 124, 1223 120, 120, 120, 120, 29, 14, 29, 123, 29, 29, 1224 29, 29, 29, 29, 29, 14, 29, 29, 124, 14, 1225 124, 124, 29, 29, 29, 120, 24, 127, 120, 29, 1226 120, 14, 29, 120, 24, 29, 24, 3, 3, 121, 1227 11, 11, 11, 11, 29, 29, 4, 29, 29, 29, 1228 29, 29, 29, 29, 29, 29, 127, 126, 120, 11, 1229 11, 125, 127, 126, 124, 126, 125, 124, 120, 120, 1230 124, 124, 29, 29, 29, 29, 124, 124, 124, 124, 1231 124, 120, 120, 124, 29, 29, 11, 120, 29, 29, 1232 29, 29, 29, 124, 124, 124, 124, 124, 124, 3, 1233 3, 11, 124, 11, 11, 29, 29, 24, 29, 120, 1234 124, 29, 120, 29, 124, 29, 120, 120, 120, 120, 1235 -1, -1, -1, -1, -1, -1, -1, -1, 124, 120, 1236 251, 124, 124, 120, 120, -1, -1, 126, -1, -1, 1237 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1, 1238 -1, -1, -1, 120, 126, -1, -1, -1, -1, -1, 1239 124, 124, 124, 124, 124, 124, -1, -1, -1, -1, 1240 -1, 124, -1, -1, 124, 124, 124, 124, 124, -1, 1241 -1, 124, 124, -1, -1, -1, -1, -1, 124, 124, 1242 124, -1, -1, -1, 127 1243}; 1244 1245 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1246 symbol of state STATE-NUM. */ 1247static const yytype_uint8 yystos[] = 1248{ 1249 0, 12, 30, 39, 40, 41, 42, 43, 44, 45, 1250 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 1251 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 1252 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 1253 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 1254 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 1255 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 1256 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 1257 116, 117, 118, 119, 130, 175, 176, 177, 178, 179, 1258 180, 181, 182, 183, 184, 127, 127, 127, 127, 127, 1259 11, 122, 127, 127, 11, 12, 13, 14, 122, 127, 1260 172, 123, 3, 4, 5, 6, 19, 29, 169, 4, 1261 144, 145, 147, 146, 3, 4, 5, 6, 7, 8, 1262 9, 10, 15, 16, 17, 18, 19, 20, 21, 122, 1263 169, 171, 174, 169, 11, 12, 13, 14, 23, 169, 1264 173, 143, 142, 4, 24, 17, 172, 17, 172, 3, 1265 3, 11, 12, 3, 3, 3, 11, 25, 26, 27, 1266 28, 3, 5, 6, 11, 12, 3, 11, 3, 11, 1267 0, 3, 29, 169, 171, 11, 23, 24, 3, 19, 1268 29, 169, 174, 3, 24, 29, 169, 174, 3, 4, 1269 5, 6, 29, 169, 11, 12, 3, 4, 5, 6, 1270 7, 8, 9, 10, 19, 29, 122, 123, 170, 29, 1271 169, 172, 3, 24, 29, 169, 174, 29, 29, 29, 1272 29, 29, 29, 122, 29, 122, 29, 29, 122, 122, 1273 29, 128, 139, 122, 120, 120, 128, 29, 29, 123, 1274 120, 120, 123, 120, 120, 29, 122, 123, 120, 120, 1275 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1276 120, 120, 120, 120, 120, 120, 120, 131, 122, 120, 1277 120, 120, 120, 126, 126, 123, 126, 126, 126, 122, 1278 123, 126, 138, 122, 128, 140, 29, 14, 141, 122, 1279 123, 126, 120, 126, 123, 126, 29, 29, 29, 29, 1280 124, 29, 169, 121, 169, 171, 174, 122, 120, 120, 1281 123, 12, 13, 14, 23, 3, 121, 169, 121, 169, 1282 170, 14, 23, 121, 169, 173, 11, 121, 120, 123, 1283 29, 12, 13, 14, 23, 11, 23, 29, 121, 169, 1284 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 1285 29, 29, 29, 29, 29, 29, 169, 171, 173, 3, 1286 29, 121, 169, 171, 120, 29, 3, 29, 121, 169, 1287 172, 121, 3, 29, 169, 174, 29, 29, 14, 29, 1288 29, 29, 29, 14, 29, 29, 122, 123, 125, 29, 1289 14, 29, 3, 29, 169, 174, 29, 14, 29, 123, 1290 29, 29, 122, 123, 29, 3, 121, 3, 121, 5, 1291 6, 12, 124, 124, 125, 124, 125, 124, 125, 29, 1292 29, 122, 29, 29, 125, 29, 29, 122, 123, 29, 1293 11, 121, 5, 6, 12, 120, 124, 124, 125, 124, 1294 125, 124, 125, 168, 29, 122, 122, 123, 132, 29, 1295 122, 123, 121, 120, 133, 29, 122, 123, 29, 126, 1296 126, 123, 126, 120, 120, 124, 120, 126, 124, 29, 1297 14, 29, 125, 120, 126, 126, 123, 126, 120, 124, 1298 120, 14, 123, 150, 29, 12, 13, 14, 23, 120, 1299 29, 149, 29, 124, 124, 124, 120, 120, 29, 120, 1300 5, 6, 29, 120, 29, 151, 29, 153, 29, 123, 1301 162, 29, 12, 13, 14, 23, 163, 29, 124, 124, 1302 124, 11, 120, 120, 29, 120, 29, 120, 29, 29, 1303 29, 13, 14, 29, 14, 29, 121, 29, 14, 29, 1304 29, 14, 29, 127, 127, 126, 127, 29, 126, 125, 1305 124, 29, 24, 29, 29, 14, 29, 24, 126, 24, 1306 125, 5, 6, 12, 124, 124, 125, 124, 125, 124, 1307 125, 3, 121, 148, 120, 120, 120, 3, 121, 3, 1308 124, 3, 124, 124, 124, 3, 121, 124, 152, 154, 1309 124, 5, 6, 12, 124, 124, 125, 124, 125, 124, 1310 125, 161, 120, 120, 120, 11, 11, 124, 11, 124, 1311 11, 124, 124, 125, 124, 125, 124, 125, 29, 124, 1312 125, 136, 135, 124, 134, 29, 29, 29, 29, 29, 1313 29, 124, 124, 29, 29, 124, 124, 124, 29, 5, 1314 6, 29, 158, 29, 29, 3, 121, 3, 121, 3, 1315 121, 29, 120, 120, 120, 120, 160, 29, 120, 120, 1316 124, 124, 124, 29, 29, 165, 29, 11, 11, 11, 1317 120, 120, 167, 120, 29, 5, 6, 29, 5, 6, 1318 29, 29, 126, 120, 124, 126, 120, 124, 124, 124, 1319 124, 124, 124, 29, 29, 29, 3, 121, 3, 3, 1320 3, 121, 156, 3, 121, 4, 124, 124, 124, 11, 1321 11, 11, 124, 124, 124, 124, 124, 124, 124, 124, 1322 29, 127, 29, 24, 157, 29, 29, 159, 29, 164, 1323 166, 137, 29, 155 1324}; 1325 1326 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 1327static const yytype_uint8 yyr1[] = 1328{ 1329 0, 129, 130, 130, 131, 130, 130, 130, 130, 132, 1330 130, 130, 130, 130, 130, 130, 130, 130, 130, 133, 1331 130, 130, 130, 130, 130, 134, 130, 135, 130, 136, 1332 130, 137, 130, 130, 130, 130, 130, 130, 130, 130, 1333 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1334 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1335 130, 130, 130, 130, 130, 138, 130, 130, 130, 130, 1336 130, 130, 130, 130, 139, 130, 130, 130, 130, 140, 1337 130, 130, 130, 130, 130, 130, 141, 130, 130, 130, 1338 130, 130, 142, 130, 143, 130, 130, 144, 130, 145, 1339 130, 146, 130, 147, 130, 130, 130, 130, 130, 148, 1340 130, 130, 130, 130, 130, 149, 130, 130, 130, 130, 1341 130, 150, 130, 151, 152, 130, 130, 130, 153, 154, 1342 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1343 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1344 130, 130, 130, 130, 130, 130, 130, 155, 130, 156, 1345 130, 157, 130, 158, 130, 159, 130, 160, 130, 130, 1346 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1347 161, 130, 162, 130, 163, 130, 130, 130, 130, 130, 1348 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1349 130, 130, 130, 130, 130, 130, 164, 130, 165, 130, 1350 166, 130, 167, 130, 168, 130, 130, 130, 130, 130, 1351 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1352 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1353 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1354 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 1355 130, 130, 130, 130, 130, 130, 169, 169, 170, 170, 1356 170, 170, 170, 170, 170, 170, 171, 171, 171, 171, 1357 171, 171, 171, 172, 172, 172, 172, 173, 173, 173, 1358 174, 174, 174, 174, 174, 174, 174, 175, 175, 175, 1359 175, 175, 175, 175, 175, 176, 176, 176, 177, 177, 1360 177, 178, 178, 178, 179, 179, 180, 180, 181, 181, 1361 182, 182, 183, 183, 184 1362}; 1363 1364 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ 1365static const yytype_uint8 yyr2[] = 1366{ 1367 0, 2, 1, 5, 0, 6, 4, 4, 4, 0, 1368 5, 6, 7, 9, 9, 9, 7, 5, 4, 0, 1369 5, 6, 9, 7, 5, 0, 7, 0, 7, 0, 1370 7, 0, 10, 3, 3, 3, 3, 3, 3, 7, 1371 7, 7, 10, 2, 3, 4, 3, 4, 1, 1, 1372 2, 4, 3, 4, 4, 2, 4, 4, 4, 6, 1373 7, 2, 2, 2, 2, 0, 3, 4, 2, 2, 1374 2, 2, 2, 2, 0, 3, 4, 9, 2, 0, 1375 3, 3, 5, 6, 8, 2, 0, 3, 4, 7, 1376 1, 1, 0, 2, 0, 2, 2, 0, 2, 0, 1377 2, 0, 2, 0, 2, 1, 5, 5, 5, 0, 1378 7, 6, 8, 4, 4, 0, 6, 6, 5, 7, 1379 6, 0, 6, 0, 0, 7, 4, 4, 0, 0, 1380 7, 7, 7, 10, 9, 9, 7, 7, 10, 9, 1381 9, 9, 9, 9, 9, 9, 8, 8, 9, 8, 1382 8, 9, 8, 8, 7, 8, 7, 0, 11, 0, 1383 9, 0, 10, 0, 8, 0, 10, 0, 8, 6, 1384 6, 6, 9, 6, 6, 6, 9, 9, 5, 5, 1385 0, 7, 0, 6, 0, 6, 4, 4, 6, 6, 1386 7, 7, 9, 9, 7, 7, 9, 9, 8, 8, 1387 8, 8, 8, 7, 8, 7, 0, 10, 0, 8, 1388 0, 10, 0, 8, 0, 5, 6, 5, 4, 4, 1389 4, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1390 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 1391 2, 2, 4, 4, 4, 4, 4, 4, 4, 1, 1392 1, 1, 1, 1, 1, 1, 4, 6, 7, 9, 1393 7, 9, 9, 9, 4, 4, 0, 2, 1, 1, 1394 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1395 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1396 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1397 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1398 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1399 1, 1, 1, 1, 1 1400}; 1401 1402 1403#define yyerrok (yyerrstatus = 0) 1404#define yyclearin (yychar = YYEMPTY) 1405#define YYEMPTY (-2) 1406#define YYEOF 0 1407 1408#define YYACCEPT goto yyacceptlab 1409#define YYABORT goto yyabortlab 1410#define YYERROR goto yyerrorlab 1411 1412 1413#define YYRECOVERING() (!!yyerrstatus) 1414 1415#define YYBACKUP(Token, Value) \ 1416do \ 1417 if (yychar == YYEMPTY) \ 1418 { \ 1419 yychar = (Token); \ 1420 yylval = (Value); \ 1421 YYPOPSTACK (yylen); \ 1422 yystate = *yyssp; \ 1423 goto yybackup; \ 1424 } \ 1425 else \ 1426 { \ 1427 yyerror (YY_("syntax error: cannot back up")); \ 1428 YYERROR; \ 1429 } \ 1430while (0) 1431 1432/* Error token number */ 1433#define YYTERROR 1 1434#define YYERRCODE 256 1435 1436 1437 1438/* Enable debugging if requested. */ 1439#if YYDEBUG 1440 1441# ifndef YYFPRINTF 1442# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1443# define YYFPRINTF fprintf 1444# endif 1445 1446# define YYDPRINTF(Args) \ 1447do { \ 1448 if (yydebug) \ 1449 YYFPRINTF Args; \ 1450} while (0) 1451 1452/* This macro is provided for backward compatibility. */ 1453#ifndef YY_LOCATION_PRINT 1454# define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1455#endif 1456 1457 1458# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1459do { \ 1460 if (yydebug) \ 1461 { \ 1462 YYFPRINTF (stderr, "%s ", Title); \ 1463 yy_symbol_print (stderr, \ 1464 Type, Value); \ 1465 YYFPRINTF (stderr, "\n"); \ 1466 } \ 1467} while (0) 1468 1469 1470/*----------------------------------------. 1471| Print this symbol's value on YYOUTPUT. | 1472`----------------------------------------*/ 1473 1474static void 1475yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1476{ 1477 FILE *yyo = yyoutput; 1478 YYUSE (yyo); 1479 if (!yyvaluep) 1480 return; 1481# ifdef YYPRINT 1482 if (yytype < YYNTOKENS) 1483 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1484# endif 1485 YYUSE (yytype); 1486} 1487 1488 1489/*--------------------------------. 1490| Print this symbol on YYOUTPUT. | 1491`--------------------------------*/ 1492 1493static void 1494yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1495{ 1496 YYFPRINTF (yyoutput, "%s %s (", 1497 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); 1498 1499 yy_symbol_value_print (yyoutput, yytype, yyvaluep); 1500 YYFPRINTF (yyoutput, ")"); 1501} 1502 1503/*------------------------------------------------------------------. 1504| yy_stack_print -- Print the state stack from its BOTTOM up to its | 1505| TOP (included). | 1506`------------------------------------------------------------------*/ 1507 1508static void 1509yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 1510{ 1511 YYFPRINTF (stderr, "Stack now"); 1512 for (; yybottom <= yytop; yybottom++) 1513 { 1514 int yybot = *yybottom; 1515 YYFPRINTF (stderr, " %d", yybot); 1516 } 1517 YYFPRINTF (stderr, "\n"); 1518} 1519 1520# define YY_STACK_PRINT(Bottom, Top) \ 1521do { \ 1522 if (yydebug) \ 1523 yy_stack_print ((Bottom), (Top)); \ 1524} while (0) 1525 1526 1527/*------------------------------------------------. 1528| Report that the YYRULE is going to be reduced. | 1529`------------------------------------------------*/ 1530 1531static void 1532yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) 1533{ 1534 unsigned long int yylno = yyrline[yyrule]; 1535 int yynrhs = yyr2[yyrule]; 1536 int yyi; 1537 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1538 yyrule - 1, yylno); 1539 /* The symbols being reduced. */ 1540 for (yyi = 0; yyi < yynrhs; yyi++) 1541 { 1542 YYFPRINTF (stderr, " $%d = ", yyi + 1); 1543 yy_symbol_print (stderr, 1544 yystos[yyssp[yyi + 1 - yynrhs]], 1545 &(yyvsp[(yyi + 1) - (yynrhs)]) 1546 ); 1547 YYFPRINTF (stderr, "\n"); 1548 } 1549} 1550 1551# define YY_REDUCE_PRINT(Rule) \ 1552do { \ 1553 if (yydebug) \ 1554 yy_reduce_print (yyssp, yyvsp, Rule); \ 1555} while (0) 1556 1557/* Nonzero means print parse trace. It is left uninitialized so that 1558 multiple parsers can coexist. */ 1559int yydebug; 1560#else /* !YYDEBUG */ 1561# define YYDPRINTF(Args) 1562# define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1563# define YY_STACK_PRINT(Bottom, Top) 1564# define YY_REDUCE_PRINT(Rule) 1565#endif /* !YYDEBUG */ 1566 1567 1568/* YYINITDEPTH -- initial size of the parser's stacks. */ 1569#ifndef YYINITDEPTH 1570# define YYINITDEPTH 200 1571#endif 1572 1573/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1574 if the built-in stack extension method is used). 1575 1576 Do not make this value too large; the results are undefined if 1577 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1578 evaluated with infinite-precision integer arithmetic. */ 1579 1580#ifndef YYMAXDEPTH 1581# define YYMAXDEPTH 10000 1582#endif 1583 1584 1585#if YYERROR_VERBOSE 1586 1587# ifndef yystrlen 1588# if defined __GLIBC__ && defined _STRING_H 1589# define yystrlen strlen 1590# else 1591/* Return the length of YYSTR. */ 1592static YYSIZE_T 1593yystrlen (const char *yystr) 1594{ 1595 YYSIZE_T yylen; 1596 for (yylen = 0; yystr[yylen]; yylen++) 1597 continue; 1598 return yylen; 1599} 1600# endif 1601# endif 1602 1603# ifndef yystpcpy 1604# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1605# define yystpcpy stpcpy 1606# else 1607/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1608 YYDEST. */ 1609static char * 1610yystpcpy (char *yydest, const char *yysrc) 1611{ 1612 char *yyd = yydest; 1613 const char *yys = yysrc; 1614 1615 while ((*yyd++ = *yys++) != '\0') 1616 continue; 1617 1618 return yyd - 1; 1619} 1620# endif 1621# endif 1622 1623# ifndef yytnamerr 1624/* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1625 quotes and backslashes, so that it's suitable for yyerror. The 1626 heuristic is that double-quoting is unnecessary unless the string 1627 contains an apostrophe, a comma, or backslash (other than 1628 backslash-backslash). YYSTR is taken from yytname. If YYRES is 1629 null, do not copy; instead, return the length of what the result 1630 would have been. */ 1631static YYSIZE_T 1632yytnamerr (char *yyres, const char *yystr) 1633{ 1634 if (*yystr == '"') 1635 { 1636 YYSIZE_T yyn = 0; 1637 char const *yyp = yystr; 1638 1639 for (;;) 1640 switch (*++yyp) 1641 { 1642 case '\'': 1643 case ',': 1644 goto do_not_strip_quotes; 1645 1646 case '\\': 1647 if (*++yyp != '\\') 1648 goto do_not_strip_quotes; 1649 /* Fall through. */ 1650 default: 1651 if (yyres) 1652 yyres[yyn] = *yyp; 1653 yyn++; 1654 break; 1655 1656 case '"': 1657 if (yyres) 1658 yyres[yyn] = '\0'; 1659 return yyn; 1660 } 1661 do_not_strip_quotes: ; 1662 } 1663 1664 if (! yyres) 1665 return yystrlen (yystr); 1666 1667 return yystpcpy (yyres, yystr) - yyres; 1668} 1669# endif 1670 1671/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message 1672 about the unexpected token YYTOKEN for the state stack whose top is 1673 YYSSP. 1674 1675 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is 1676 not large enough to hold the message. In that case, also set 1677 *YYMSG_ALLOC to the required number of bytes. Return 2 if the 1678 required number of bytes is too large to store. */ 1679static int 1680yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, 1681 yytype_int16 *yyssp, int yytoken) 1682{ 1683 YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); 1684 YYSIZE_T yysize = yysize0; 1685 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1686 /* Internationalized format string. */ 1687 const char *yyformat = YY_NULL; 1688 /* Arguments of yyformat. */ 1689 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1690 /* Number of reported tokens (one for the "unexpected", one per 1691 "expected"). */ 1692 int yycount = 0; 1693 1694 /* There are many possibilities here to consider: 1695 - If this state is a consistent state with a default action, then 1696 the only way this function was invoked is if the default action 1697 is an error action. In that case, don't check for expected 1698 tokens because there are none. 1699 - The only way there can be no lookahead present (in yychar) is if 1700 this state is a consistent state with a default action. Thus, 1701 detecting the absence of a lookahead is sufficient to determine 1702 that there is no unexpected or expected token to report. In that 1703 case, just report a simple "syntax error". 1704 - Don't assume there isn't a lookahead just because this state is a 1705 consistent state with a default action. There might have been a 1706 previous inconsistent state, consistent state with a non-default 1707 action, or user semantic action that manipulated yychar. 1708 - Of course, the expected token list depends on states to have 1709 correct lookahead information, and it depends on the parser not 1710 to perform extra reductions after fetching a lookahead from the 1711 scanner and before detecting a syntax error. Thus, state merging 1712 (from LALR or IELR) and default reductions corrupt the expected 1713 token list. However, the list is correct for canonical LR with 1714 one exception: it will still contain any token that will not be 1715 accepted due to an error action in a later state. 1716 */ 1717 if (yytoken != YYEMPTY) 1718 { 1719 int yyn = yypact[*yyssp]; 1720 yyarg[yycount++] = yytname[yytoken]; 1721 if (!yypact_value_is_default (yyn)) 1722 { 1723 /* Start YYX at -YYN if negative to avoid negative indexes in 1724 YYCHECK. In other words, skip the first -YYN actions for 1725 this state because they are default actions. */ 1726 int yyxbegin = yyn < 0 ? -yyn : 0; 1727 /* Stay within bounds of both yycheck and yytname. */ 1728 int yychecklim = YYLAST - yyn + 1; 1729 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1730 int yyx; 1731 1732 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1733 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR 1734 && !yytable_value_is_error (yytable[yyx + yyn])) 1735 { 1736 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1737 { 1738 yycount = 1; 1739 yysize = yysize0; 1740 break; 1741 } 1742 yyarg[yycount++] = yytname[yyx]; 1743 { 1744 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); 1745 if (! (yysize <= yysize1 1746 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1747 return 2; 1748 yysize = yysize1; 1749 } 1750 } 1751 } 1752 } 1753 1754 switch (yycount) 1755 { 1756# define YYCASE_(N, S) \ 1757 case N: \ 1758 yyformat = S; \ 1759 break 1760 YYCASE_(0, YY_("syntax error")); 1761 YYCASE_(1, YY_("syntax error, unexpected %s")); 1762 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); 1763 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); 1764 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); 1765 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); 1766# undef YYCASE_ 1767 } 1768 1769 { 1770 YYSIZE_T yysize1 = yysize + yystrlen (yyformat); 1771 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) 1772 return 2; 1773 yysize = yysize1; 1774 } 1775 1776 if (*yymsg_alloc < yysize) 1777 { 1778 *yymsg_alloc = 2 * yysize; 1779 if (! (yysize <= *yymsg_alloc 1780 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) 1781 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; 1782 return 1; 1783 } 1784 1785 /* Avoid sprintf, as that infringes on the user's name space. 1786 Don't have undefined behavior even if the translation 1787 produced a string with the wrong number of "%s"s. */ 1788 { 1789 char *yyp = *yymsg; 1790 int yyi = 0; 1791 while ((*yyp = *yyformat) != '\0') 1792 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) 1793 { 1794 yyp += yytnamerr (yyp, yyarg[yyi++]); 1795 yyformat += 2; 1796 } 1797 else 1798 { 1799 yyp++; 1800 yyformat++; 1801 } 1802 } 1803 return 0; 1804} 1805#endif /* YYERROR_VERBOSE */ 1806 1807/*-----------------------------------------------. 1808| Release the memory associated to this symbol. | 1809`-----------------------------------------------*/ 1810 1811static void 1812yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1813{ 1814 YYUSE (yyvaluep); 1815 if (!yymsg) 1816 yymsg = "Deleting"; 1817 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1818 1819 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 1820 YYUSE (yytype); 1821 YY_IGNORE_MAYBE_UNINITIALIZED_END 1822} 1823 1824 1825 1826 1827/* The lookahead symbol. */ 1828int yychar; 1829 1830/* The semantic value of the lookahead symbol. */ 1831YYSTYPE yylval; 1832/* Number of syntax errors so far. */ 1833int yynerrs; 1834 1835 1836/*----------. 1837| yyparse. | 1838`----------*/ 1839 1840int 1841yyparse (void) 1842{ 1843 int yystate; 1844 /* Number of tokens to shift before error messages enabled. */ 1845 int yyerrstatus; 1846 1847 /* The stacks and their tools: 1848 'yyss': related to states. 1849 'yyvs': related to semantic values. 1850 1851 Refer to the stacks through separate pointers, to allow yyoverflow 1852 to reallocate them elsewhere. */ 1853 1854 /* The state stack. */ 1855 yytype_int16 yyssa[YYINITDEPTH]; 1856 yytype_int16 *yyss; 1857 yytype_int16 *yyssp; 1858 1859 /* The semantic value stack. */ 1860 YYSTYPE yyvsa[YYINITDEPTH]; 1861 YYSTYPE *yyvs; 1862 YYSTYPE *yyvsp; 1863 1864 YYSIZE_T yystacksize; 1865 1866 int yyn; 1867 int yyresult; 1868 /* Lookahead token as an internal (translated) token number. */ 1869 int yytoken = 0; 1870 /* The variables used to return semantic value and location from the 1871 action routines. */ 1872 YYSTYPE yyval; 1873 1874#if YYERROR_VERBOSE 1875 /* Buffer for error messages, and its allocated size. */ 1876 char yymsgbuf[128]; 1877 char *yymsg = yymsgbuf; 1878 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1879#endif 1880 1881#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1882 1883 /* The number of symbols on the RHS of the reduced rule. 1884 Keep to zero when no symbol should be popped. */ 1885 int yylen = 0; 1886 1887 yyssp = yyss = yyssa; 1888 yyvsp = yyvs = yyvsa; 1889 yystacksize = YYINITDEPTH; 1890 1891 YYDPRINTF ((stderr, "Starting parse\n")); 1892 1893 yystate = 0; 1894 yyerrstatus = 0; 1895 yynerrs = 0; 1896 yychar = YYEMPTY; /* Cause a token to be read. */ 1897 goto yysetstate; 1898 1899/*------------------------------------------------------------. 1900| yynewstate -- Push a new state, which is found in yystate. | 1901`------------------------------------------------------------*/ 1902 yynewstate: 1903 /* In all cases, when you get here, the value and location stacks 1904 have just been pushed. So pushing a state here evens the stacks. */ 1905 yyssp++; 1906 1907 yysetstate: 1908 *yyssp = yystate; 1909 1910 if (yyss + yystacksize - 1 <= yyssp) 1911 { 1912 /* Get the current used size of the three stacks, in elements. */ 1913 YYSIZE_T yysize = yyssp - yyss + 1; 1914 1915#ifdef yyoverflow 1916 { 1917 /* Give user a chance to reallocate the stack. Use copies of 1918 these so that the &'s don't force the real ones into 1919 memory. */ 1920 YYSTYPE *yyvs1 = yyvs; 1921 yytype_int16 *yyss1 = yyss; 1922 1923 /* Each stack pointer address is followed by the size of the 1924 data in use in that stack, in bytes. This used to be a 1925 conditional around just the two extra args, but that might 1926 be undefined if yyoverflow is a macro. */ 1927 yyoverflow (YY_("memory exhausted"), 1928 &yyss1, yysize * sizeof (*yyssp), 1929 &yyvs1, yysize * sizeof (*yyvsp), 1930 &yystacksize); 1931 1932 yyss = yyss1; 1933 yyvs = yyvs1; 1934 } 1935#else /* no yyoverflow */ 1936# ifndef YYSTACK_RELOCATE 1937 goto yyexhaustedlab; 1938# else 1939 /* Extend the stack our own way. */ 1940 if (YYMAXDEPTH <= yystacksize) 1941 goto yyexhaustedlab; 1942 yystacksize *= 2; 1943 if (YYMAXDEPTH < yystacksize) 1944 yystacksize = YYMAXDEPTH; 1945 1946 { 1947 yytype_int16 *yyss1 = yyss; 1948 union yyalloc *yyptr = 1949 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1950 if (! yyptr) 1951 goto yyexhaustedlab; 1952 YYSTACK_RELOCATE (yyss_alloc, yyss); 1953 YYSTACK_RELOCATE (yyvs_alloc, yyvs); 1954# undef YYSTACK_RELOCATE 1955 if (yyss1 != yyssa) 1956 YYSTACK_FREE (yyss1); 1957 } 1958# endif 1959#endif /* no yyoverflow */ 1960 1961 yyssp = yyss + yysize - 1; 1962 yyvsp = yyvs + yysize - 1; 1963 1964 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1965 (unsigned long int) yystacksize)); 1966 1967 if (yyss + yystacksize - 1 <= yyssp) 1968 YYABORT; 1969 } 1970 1971 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1972 1973 if (yystate == YYFINAL) 1974 YYACCEPT; 1975 1976 goto yybackup; 1977 1978/*-----------. 1979| yybackup. | 1980`-----------*/ 1981yybackup: 1982 1983 /* Do appropriate processing given the current state. Read a 1984 lookahead token if we need one and don't already have one. */ 1985 1986 /* First try to decide what to do without reference to lookahead token. */ 1987 yyn = yypact[yystate]; 1988 if (yypact_value_is_default (yyn)) 1989 goto yydefault; 1990 1991 /* Not known => get a lookahead token if don't already have one. */ 1992 1993 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 1994 if (yychar == YYEMPTY) 1995 { 1996 YYDPRINTF ((stderr, "Reading a token: ")); 1997 yychar = yylex (); 1998 } 1999 2000 if (yychar <= YYEOF) 2001 { 2002 yychar = yytoken = YYEOF; 2003 YYDPRINTF ((stderr, "Now at end of input.\n")); 2004 } 2005 else 2006 { 2007 yytoken = YYTRANSLATE (yychar); 2008 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2009 } 2010 2011 /* If the proper action on seeing token YYTOKEN is to reduce or to 2012 detect an error, take that action. */ 2013 yyn += yytoken; 2014 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 2015 goto yydefault; 2016 yyn = yytable[yyn]; 2017 if (yyn <= 0) 2018 { 2019 if (yytable_value_is_error (yyn)) 2020 goto yyerrlab; 2021 yyn = -yyn; 2022 goto yyreduce; 2023 } 2024 2025 /* Count tokens shifted since error; after three, turn off error 2026 status. */ 2027 if (yyerrstatus) 2028 yyerrstatus--; 2029 2030 /* Shift the lookahead token. */ 2031 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 2032 2033 /* Discard the shifted token. */ 2034 yychar = YYEMPTY; 2035 2036 yystate = yyn; 2037 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 2038 *++yyvsp = yylval; 2039 YY_IGNORE_MAYBE_UNINITIALIZED_END 2040 2041 goto yynewstate; 2042 2043 2044/*-----------------------------------------------------------. 2045| yydefault -- do the default action for the current state. | 2046`-----------------------------------------------------------*/ 2047yydefault: 2048 yyn = yydefact[yystate]; 2049 if (yyn == 0) 2050 goto yyerrlab; 2051 goto yyreduce; 2052 2053 2054/*-----------------------------. 2055| yyreduce -- Do a reduction. | 2056`-----------------------------*/ 2057yyreduce: 2058 /* yyn is the number of a rule to reduce with. */ 2059 yylen = yyr2[yyn]; 2060 2061 /* If YYLEN is nonzero, implement the default value of the action: 2062 '$$ = $1'. 2063 2064 Otherwise, the following line sets YYVAL to garbage. 2065 This behavior is undocumented and Bison 2066 users should not rely upon it. Assigning to YYVAL 2067 unconditionally makes the parser a bit smaller, and it avoids a 2068 GCC warning that YYVAL may be used uninitialized. */ 2069 yyval = yyvsp[1-yylen]; 2070 2071 2072 YY_REDUCE_PRINT (yyn); 2073 switch (yyn) 2074 { 2075 case 2: 2076#line 188 "./config/rl78-parse.y" /* yacc.c:1661 */ 2077 { as_bad (_("Unknown opcode: %s"), rl78_init_start); } 2078#line 2079 "rl78-parse.c" /* yacc.c:1661 */ 2079 break; 2080 2081 case 3: 2082#line 209 "./config/rl78-parse.y" /* yacc.c:1661 */ 2083 { B1 (0x0c|(yyvsp[-4].regno)); O1 ((yyvsp[0].exp)); } 2084#line 2085 "rl78-parse.c" /* yacc.c:1661 */ 2085 break; 2086 2087 case 4: 2088#line 211 "./config/rl78-parse.y" /* yacc.c:1661 */ 2089 {SA((yyvsp[0].exp))} 2090#line 2091 "rl78-parse.c" /* yacc.c:1661 */ 2091 break; 2092 2093 case 5: 2094#line 212 "./config/rl78-parse.y" /* yacc.c:1661 */ 2095 { B1 (0x0a|(yyvsp[-5].regno)); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); } 2096#line 2097 "rl78-parse.c" /* yacc.c:1661 */ 2097 break; 2098 2099 case 6: 2100#line 215 "./config/rl78-parse.y" /* yacc.c:1661 */ 2101 { B2 (0x61, 0x01|(yyvsp[-3].regno)); } 2102#line 2103 "rl78-parse.c" /* yacc.c:1661 */ 2103 break; 2104 2105 case 7: 2106#line 218 "./config/rl78-parse.y" /* yacc.c:1661 */ 2107 { B2 (0x61, 0x08|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 13, 3); } 2108#line 2109 "rl78-parse.c" /* yacc.c:1661 */ 2109 break; 2110 2111 case 8: 2112#line 221 "./config/rl78-parse.y" /* yacc.c:1661 */ 2113 { B2 (0x61, 0x00|(yyvsp[-3].regno)); F ((yyvsp[-2].regno), 13, 3); } 2114#line 2115 "rl78-parse.c" /* yacc.c:1661 */ 2115 break; 2116 2117 case 9: 2118#line 223 "./config/rl78-parse.y" /* yacc.c:1661 */ 2119 {SA((yyvsp[0].exp))} 2120#line 2121 "rl78-parse.c" /* yacc.c:1661 */ 2121 break; 2122 2123 case 10: 2124#line 224 "./config/rl78-parse.y" /* yacc.c:1661 */ 2125 { B1 (0x0b|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } 2126#line 2127 "rl78-parse.c" /* yacc.c:1661 */ 2127 break; 2128 2129 case 11: 2130#line 227 "./config/rl78-parse.y" /* yacc.c:1661 */ 2131 { B1 (0x0f|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2132#line 2133 "rl78-parse.c" /* yacc.c:1661 */ 2133 break; 2134 2135 case 12: 2136#line 230 "./config/rl78-parse.y" /* yacc.c:1661 */ 2137 { B1 (0x0d|(yyvsp[-6].regno)); } 2138#line 2139 "rl78-parse.c" /* yacc.c:1661 */ 2139 break; 2140 2141 case 13: 2142#line 233 "./config/rl78-parse.y" /* yacc.c:1661 */ 2143 { B1 (0x0e|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); } 2144#line 2145 "rl78-parse.c" /* yacc.c:1661 */ 2145 break; 2146 2147 case 14: 2148#line 236 "./config/rl78-parse.y" /* yacc.c:1661 */ 2149 { B2 (0x61, 0x80|(yyvsp[-8].regno)); } 2150#line 2151 "rl78-parse.c" /* yacc.c:1661 */ 2151 break; 2152 2153 case 15: 2154#line 239 "./config/rl78-parse.y" /* yacc.c:1661 */ 2155 { B2 (0x61, 0x82|(yyvsp[-8].regno)); } 2156#line 2157 "rl78-parse.c" /* yacc.c:1661 */ 2157 break; 2158 2159 case 16: 2160#line 242 "./config/rl78-parse.y" /* yacc.c:1661 */ 2161 { if ((yyvsp[-6].regno) != 0x40) 2162 { rl78_error ("Only CMP takes these operands"); } 2163 else 2164 { B1 (0x00|(yyvsp[-6].regno)); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2165 } 2166#line 2167 "rl78-parse.c" /* yacc.c:1661 */ 2167 break; 2168 2169 case 17: 2170#line 251 "./config/rl78-parse.y" /* yacc.c:1661 */ 2171 { B1 (0x04|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); } 2172#line 2173 "rl78-parse.c" /* yacc.c:1661 */ 2173 break; 2174 2175 case 18: 2176#line 254 "./config/rl78-parse.y" /* yacc.c:1661 */ 2177 { B1 (0x01|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 5, 2); } 2178#line 2179 "rl78-parse.c" /* yacc.c:1661 */ 2179 break; 2180 2181 case 19: 2182#line 256 "./config/rl78-parse.y" /* yacc.c:1661 */ 2183 {SA((yyvsp[0].exp))} 2184#line 2185 "rl78-parse.c" /* yacc.c:1661 */ 2185 break; 2186 2187 case 20: 2188#line 257 "./config/rl78-parse.y" /* yacc.c:1661 */ 2189 { B1 (0x06|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } 2190#line 2191 "rl78-parse.c" /* yacc.c:1661 */ 2191 break; 2192 2193 case 21: 2194#line 260 "./config/rl78-parse.y" /* yacc.c:1661 */ 2195 { B1 (0x02|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2196#line 2197 "rl78-parse.c" /* yacc.c:1661 */ 2197 break; 2198 2199 case 22: 2200#line 263 "./config/rl78-parse.y" /* yacc.c:1661 */ 2201 { B2 (0x61, 0x09|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); } 2202#line 2203 "rl78-parse.c" /* yacc.c:1661 */ 2203 break; 2204 2205 case 23: 2206#line 266 "./config/rl78-parse.y" /* yacc.c:1661 */ 2207 { B3 (0x61, 0x09|(yyvsp[-6].regno), 0); } 2208#line 2209 "rl78-parse.c" /* yacc.c:1661 */ 2209 break; 2210 2211 case 24: 2212#line 269 "./config/rl78-parse.y" /* yacc.c:1661 */ 2213 { B1 ((yyvsp[-4].regno) ? 0x20 : 0x10); O1 ((yyvsp[0].exp)); 2214 if ((yyvsp[-4].regno) == 0x40) 2215 rl78_error ("CMPW SP,#imm not allowed"); 2216 } 2217#line 2218 "rl78-parse.c" /* yacc.c:1661 */ 2218 break; 2219 2220 case 25: 2221#line 276 "./config/rl78-parse.y" /* yacc.c:1661 */ 2222 {Bit((yyvsp[0].exp))} 2223#line 2224 "rl78-parse.c" /* yacc.c:1661 */ 2224 break; 2225 2226 case 26: 2227#line 277 "./config/rl78-parse.y" /* yacc.c:1661 */ 2228 { B3 (0x71, 0x08|(yyvsp[-6].regno), (yyvsp[-3].regno)); FE ((yyvsp[-1].exp), 9, 3); } 2229#line 2230 "rl78-parse.c" /* yacc.c:1661 */ 2230 break; 2231 2232 case 27: 2233#line 279 "./config/rl78-parse.y" /* yacc.c:1661 */ 2234 {Bit((yyvsp[0].exp))} 2235#line 2236 "rl78-parse.c" /* yacc.c:1661 */ 2236 break; 2237 2238 case 28: 2239#line 280 "./config/rl78-parse.y" /* yacc.c:1661 */ 2240 { if (expr_is_sfr ((yyvsp[-3].exp))) 2241 { B2 (0x71, 0x08|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); O1 ((yyvsp[-3].exp)); } 2242 else if (expr_is_saddr ((yyvsp[-3].exp))) 2243 { B2 (0x71, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); } 2244 else 2245 NOT_SFR_OR_SADDR; 2246 } 2247#line 2248 "rl78-parse.c" /* yacc.c:1661 */ 2248 break; 2249 2250 case 29: 2251#line 288 "./config/rl78-parse.y" /* yacc.c:1661 */ 2252 {Bit((yyvsp[0].exp))} 2253#line 2254 "rl78-parse.c" /* yacc.c:1661 */ 2254 break; 2255 2256 case 30: 2257#line 289 "./config/rl78-parse.y" /* yacc.c:1661 */ 2258 { B2 (0x71, 0x88|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); } 2259#line 2260 "rl78-parse.c" /* yacc.c:1661 */ 2260 break; 2261 2262 case 31: 2263#line 291 "./config/rl78-parse.y" /* yacc.c:1661 */ 2264 {Bit((yyvsp[0].exp))} 2265#line 2266 "rl78-parse.c" /* yacc.c:1661 */ 2266 break; 2267 2268 case 32: 2269#line 292 "./config/rl78-parse.y" /* yacc.c:1661 */ 2270 { B2 (0x71, 0x80|(yyvsp[-9].regno)); FE ((yyvsp[-1].exp), 9, 3); } 2271#line 2272 "rl78-parse.c" /* yacc.c:1661 */ 2272 break; 2273 2274 case 33: 2275#line 297 "./config/rl78-parse.y" /* yacc.c:1661 */ 2276 { B1 (0xdc); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2277#line 2278 "rl78-parse.c" /* yacc.c:1661 */ 2278 break; 2279 2280 case 34: 2281#line 300 "./config/rl78-parse.y" /* yacc.c:1661 */ 2282 { B1 (0xde); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2283#line 2284 "rl78-parse.c" /* yacc.c:1661 */ 2284 break; 2285 2286 case 35: 2287#line 303 "./config/rl78-parse.y" /* yacc.c:1661 */ 2288 { B1 (0xdd); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2289#line 2290 "rl78-parse.c" /* yacc.c:1661 */ 2290 break; 2291 2292 case 36: 2293#line 306 "./config/rl78-parse.y" /* yacc.c:1661 */ 2294 { B1 (0xdf); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2295#line 2296 "rl78-parse.c" /* yacc.c:1661 */ 2296 break; 2297 2298 case 37: 2299#line 309 "./config/rl78-parse.y" /* yacc.c:1661 */ 2300 { B2 (0x61, 0xc3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2301#line 2302 "rl78-parse.c" /* yacc.c:1661 */ 2302 break; 2303 2304 case 38: 2305#line 312 "./config/rl78-parse.y" /* yacc.c:1661 */ 2306 { B2 (0x61, 0xd3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2307#line 2308 "rl78-parse.c" /* yacc.c:1661 */ 2308 break; 2309 2310 case 39: 2311#line 317 "./config/rl78-parse.y" /* yacc.c:1661 */ 2312 { B3 (0x31, 0x80|(yyvsp[-6].regno), (yyvsp[-5].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); } 2313#line 2314 "rl78-parse.c" /* yacc.c:1661 */ 2314 break; 2315 2316 case 40: 2317#line 320 "./config/rl78-parse.y" /* yacc.c:1661 */ 2318 { if (expr_is_sfr ((yyvsp[-5].exp))) 2319 { B2 (0x31, 0x80|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); } 2320 else if (expr_is_saddr ((yyvsp[-5].exp))) 2321 { B2 (0x31, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); SET_SA ((yyvsp[-5].exp)); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); } 2322 else 2323 NOT_SFR_OR_SADDR; 2324 } 2325#line 2326 "rl78-parse.c" /* yacc.c:1661 */ 2326 break; 2327 2328 case 41: 2329#line 329 "./config/rl78-parse.y" /* yacc.c:1661 */ 2330 { B2 (0x31, 0x01|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); } 2331#line 2332 "rl78-parse.c" /* yacc.c:1661 */ 2332 break; 2333 2334 case 42: 2335#line 332 "./config/rl78-parse.y" /* yacc.c:1661 */ 2336 { B2 (0x31, 0x81|(yyvsp[-9].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); } 2337#line 2338 "rl78-parse.c" /* yacc.c:1661 */ 2338 break; 2339 2340 case 43: 2341#line 337 "./config/rl78-parse.y" /* yacc.c:1661 */ 2342 { B2 (0x61, 0xcb); } 2343#line 2344 "rl78-parse.c" /* yacc.c:1661 */ 2344 break; 2345 2346 case 44: 2347#line 340 "./config/rl78-parse.y" /* yacc.c:1661 */ 2348 { B1 (0xef); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2349#line 2350 "rl78-parse.c" /* yacc.c:1661 */ 2350 break; 2351 2352 case 45: 2353#line 343 "./config/rl78-parse.y" /* yacc.c:1661 */ 2354 { B1 (0xee); PC2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2355#line 2356 "rl78-parse.c" /* yacc.c:1661 */ 2356 break; 2357 2358 case 46: 2359#line 346 "./config/rl78-parse.y" /* yacc.c:1661 */ 2360 { B1 (0xed); O2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2361#line 2362 "rl78-parse.c" /* yacc.c:1661 */ 2362 break; 2363 2364 case 47: 2365#line 349 "./config/rl78-parse.y" /* yacc.c:1661 */ 2366 { B1 (0xec); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2367#line 2368 "rl78-parse.c" /* yacc.c:1661 */ 2368 break; 2369 2370 case 48: 2371#line 354 "./config/rl78-parse.y" /* yacc.c:1661 */ 2372 { B2 (0x61, 0xcc); } 2373#line 2374 "rl78-parse.c" /* yacc.c:1661 */ 2374 break; 2375 2376 case 49: 2377#line 357 "./config/rl78-parse.y" /* yacc.c:1661 */ 2378 { B1 (0xff); } 2379#line 2380 "rl78-parse.c" /* yacc.c:1661 */ 2380 break; 2381 2382 case 50: 2383#line 362 "./config/rl78-parse.y" /* yacc.c:1661 */ 2384 { B2 (0x61, 0xca); F ((yyvsp[0].regno), 10, 2); } 2385#line 2386 "rl78-parse.c" /* yacc.c:1661 */ 2386 break; 2387 2388 case 51: 2389#line 365 "./config/rl78-parse.y" /* yacc.c:1661 */ 2390 { B1 (0xfe); PC2 ((yyvsp[0].exp)); } 2391#line 2392 "rl78-parse.c" /* yacc.c:1661 */ 2392 break; 2393 2394 case 52: 2395#line 368 "./config/rl78-parse.y" /* yacc.c:1661 */ 2396 { B1 (0xfd); O2 ((yyvsp[0].exp)); } 2397#line 2398 "rl78-parse.c" /* yacc.c:1661 */ 2398 break; 2399 2400 case 53: 2401#line 371 "./config/rl78-parse.y" /* yacc.c:1661 */ 2402 { B1 (0xfc); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); } 2403#line 2404 "rl78-parse.c" /* yacc.c:1661 */ 2404 break; 2405 2406 case 54: 2407#line 374 "./config/rl78-parse.y" /* yacc.c:1661 */ 2408 { if ((yyvsp[-1].exp).X_op != O_constant) 2409 rl78_error ("CALLT requires a numeric address"); 2410 else 2411 { 2412 int i = (yyvsp[-1].exp).X_add_number; 2413 if (i < 0x80 || i > 0xbe) 2414 rl78_error ("CALLT address not 0x80..0xbe"); 2415 else if (i & 1) 2416 rl78_error ("CALLT address not even"); 2417 else 2418 { 2419 B2 (0x61, 0x84); 2420 F ((i >> 1) & 7, 9, 3); 2421 F ((i >> 4) & 7, 14, 2); 2422 } 2423 } 2424 } 2425#line 2426 "rl78-parse.c" /* yacc.c:1661 */ 2426 break; 2427 2428 case 55: 2429#line 395 "./config/rl78-parse.y" /* yacc.c:1661 */ 2430 { B2 (0x71, (yyvsp[-1].regno) ? 0x88 : 0x80); } 2431#line 2432 "rl78-parse.c" /* yacc.c:1661 */ 2432 break; 2433 2434 case 56: 2435#line 398 "./config/rl78-parse.y" /* yacc.c:1661 */ 2436 { B3 (0x71, 0x0a|(yyvsp[-3].regno), (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); } 2437#line 2438 "rl78-parse.c" /* yacc.c:1661 */ 2438 break; 2439 2440 case 57: 2441#line 401 "./config/rl78-parse.y" /* yacc.c:1661 */ 2442 { if (expr_is_sfr ((yyvsp[-2].exp))) 2443 { B2 (0x71, 0x0a|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); } 2444 else if (expr_is_saddr ((yyvsp[-2].exp))) 2445 { B2 (0x71, 0x02|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } 2446 else 2447 NOT_SFR_OR_SADDR; 2448 } 2449#line 2450 "rl78-parse.c" /* yacc.c:1661 */ 2450 break; 2451 2452 case 58: 2453#line 410 "./config/rl78-parse.y" /* yacc.c:1661 */ 2454 { B2 (0x71, 0x8a|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); } 2455#line 2456 "rl78-parse.c" /* yacc.c:1661 */ 2456 break; 2457 2458 case 59: 2459#line 413 "./config/rl78-parse.y" /* yacc.c:1661 */ 2460 { B2 (0x71, 0x00+(yyvsp[-5].regno)*0x08); FE ((yyvsp[0].exp), 9, 3); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); } 2461#line 2462 "rl78-parse.c" /* yacc.c:1661 */ 2462 break; 2463 2464 case 60: 2465#line 416 "./config/rl78-parse.y" /* yacc.c:1661 */ 2466 { B2 (0x71, 0x82|(yyvsp[-6].regno)); FE ((yyvsp[0].exp), 9, 3); } 2467#line 2468 "rl78-parse.c" /* yacc.c:1661 */ 2468 break; 2469 2470 case 61: 2471#line 421 "./config/rl78-parse.y" /* yacc.c:1661 */ 2472 { B1 (0xe1|(yyvsp[-1].regno)); } 2473#line 2474 "rl78-parse.c" /* yacc.c:1661 */ 2474 break; 2475 2476 case 62: 2477#line 423 "./config/rl78-parse.y" /* yacc.c:1661 */ 2478 { B1 (0xe0|(yyvsp[-1].regno)); } 2479#line 2480 "rl78-parse.c" /* yacc.c:1661 */ 2480 break; 2481 2482 case 63: 2483#line 425 "./config/rl78-parse.y" /* yacc.c:1661 */ 2484 { B1 (0xe3|(yyvsp[-1].regno)); } 2485#line 2486 "rl78-parse.c" /* yacc.c:1661 */ 2486 break; 2487 2488 case 64: 2489#line 427 "./config/rl78-parse.y" /* yacc.c:1661 */ 2490 { B1 (0xe2|(yyvsp[-1].regno)); } 2491#line 2492 "rl78-parse.c" /* yacc.c:1661 */ 2492 break; 2493 2494 case 65: 2495#line 429 "./config/rl78-parse.y" /* yacc.c:1661 */ 2496 {SA((yyvsp[0].exp))} 2497#line 2498 "rl78-parse.c" /* yacc.c:1661 */ 2498 break; 2499 2500 case 66: 2501#line 430 "./config/rl78-parse.y" /* yacc.c:1661 */ 2502 { B1 (0xe4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } 2503#line 2504 "rl78-parse.c" /* yacc.c:1661 */ 2504 break; 2505 2506 case 67: 2507#line 433 "./config/rl78-parse.y" /* yacc.c:1661 */ 2508 { B1 (0xe5|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2509#line 2510 "rl78-parse.c" /* yacc.c:1661 */ 2510 break; 2511 2512 case 68: 2513#line 438 "./config/rl78-parse.y" /* yacc.c:1661 */ 2514 { B1 (0xe6|(yyvsp[-1].regno)); } 2515#line 2516 "rl78-parse.c" /* yacc.c:1661 */ 2516 break; 2517 2518 case 69: 2519#line 440 "./config/rl78-parse.y" /* yacc.c:1661 */ 2520 { B1 (0xe7|(yyvsp[-1].regno)); } 2521#line 2522 "rl78-parse.c" /* yacc.c:1661 */ 2522 break; 2523 2524 case 70: 2525#line 445 "./config/rl78-parse.y" /* yacc.c:1661 */ 2526 { B1 (0xd1); } 2527#line 2528 "rl78-parse.c" /* yacc.c:1661 */ 2528 break; 2529 2530 case 71: 2531#line 448 "./config/rl78-parse.y" /* yacc.c:1661 */ 2532 { B1 (0xd0); } 2533#line 2534 "rl78-parse.c" /* yacc.c:1661 */ 2534 break; 2535 2536 case 72: 2537#line 451 "./config/rl78-parse.y" /* yacc.c:1661 */ 2538 { B1 (0xd3); } 2539#line 2540 "rl78-parse.c" /* yacc.c:1661 */ 2540 break; 2541 2542 case 73: 2543#line 454 "./config/rl78-parse.y" /* yacc.c:1661 */ 2544 { B1 (0xd2); } 2545#line 2546 "rl78-parse.c" /* yacc.c:1661 */ 2546 break; 2547 2548 case 74: 2549#line 456 "./config/rl78-parse.y" /* yacc.c:1661 */ 2550 {SA((yyvsp[0].exp))} 2551#line 2552 "rl78-parse.c" /* yacc.c:1661 */ 2552 break; 2553 2554 case 75: 2555#line 457 "./config/rl78-parse.y" /* yacc.c:1661 */ 2556 { B1 (0xd4); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } 2557#line 2558 "rl78-parse.c" /* yacc.c:1661 */ 2558 break; 2559 2560 case 76: 2561#line 460 "./config/rl78-parse.y" /* yacc.c:1661 */ 2562 { B1 (0xd5); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2563#line 2564 "rl78-parse.c" /* yacc.c:1661 */ 2564 break; 2565 2566 case 77: 2567#line 465 "./config/rl78-parse.y" /* yacc.c:1661 */ 2568 { B2 (0x61, 0xde); O1 ((yyvsp[-1].exp)); } 2569#line 2570 "rl78-parse.c" /* yacc.c:1661 */ 2570 break; 2571 2572 case 78: 2573#line 470 "./config/rl78-parse.y" /* yacc.c:1661 */ 2574 { B1 (0x80|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 3); } 2575#line 2576 "rl78-parse.c" /* yacc.c:1661 */ 2576 break; 2577 2578 case 79: 2579#line 472 "./config/rl78-parse.y" /* yacc.c:1661 */ 2580 {SA((yyvsp[0].exp))} 2581#line 2582 "rl78-parse.c" /* yacc.c:1661 */ 2582 break; 2583 2584 case 80: 2585#line 473 "./config/rl78-parse.y" /* yacc.c:1661 */ 2586 { B1 (0xa4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } 2587#line 2588 "rl78-parse.c" /* yacc.c:1661 */ 2588 break; 2589 2590 case 81: 2591#line 475 "./config/rl78-parse.y" /* yacc.c:1661 */ 2592 { B1 (0xa0|(yyvsp[-2].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2593#line 2594 "rl78-parse.c" /* yacc.c:1661 */ 2594 break; 2595 2596 case 82: 2597#line 477 "./config/rl78-parse.y" /* yacc.c:1661 */ 2598 { B2 (0x11, 0xa0|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); } 2599#line 2600 "rl78-parse.c" /* yacc.c:1661 */ 2600 break; 2601 2602 case 83: 2603#line 479 "./config/rl78-parse.y" /* yacc.c:1661 */ 2604 { B2 (0x61, 0x59+(yyvsp[-5].regno)); O1 ((yyvsp[-1].exp)); } 2605#line 2606 "rl78-parse.c" /* yacc.c:1661 */ 2606 break; 2607 2608 case 84: 2609#line 481 "./config/rl78-parse.y" /* yacc.c:1661 */ 2610 { B3 (0x11, 0x61, 0x59+(yyvsp[-7].regno)); O1 ((yyvsp[-1].exp)); } 2611#line 2612 "rl78-parse.c" /* yacc.c:1661 */ 2612 break; 2613 2614 case 85: 2615#line 486 "./config/rl78-parse.y" /* yacc.c:1661 */ 2616 { B1 (0xa1|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 2); } 2617#line 2618 "rl78-parse.c" /* yacc.c:1661 */ 2618 break; 2619 2620 case 86: 2621#line 488 "./config/rl78-parse.y" /* yacc.c:1661 */ 2622 {SA((yyvsp[0].exp))} 2623#line 2624 "rl78-parse.c" /* yacc.c:1661 */ 2624 break; 2625 2626 case 87: 2627#line 489 "./config/rl78-parse.y" /* yacc.c:1661 */ 2628 { B1 (0xa6|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } 2629#line 2630 "rl78-parse.c" /* yacc.c:1661 */ 2630 break; 2631 2632 case 88: 2633#line 492 "./config/rl78-parse.y" /* yacc.c:1661 */ 2634 { B1 (0xa2|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2635#line 2636 "rl78-parse.c" /* yacc.c:1661 */ 2636 break; 2637 2638 case 89: 2639#line 495 "./config/rl78-parse.y" /* yacc.c:1661 */ 2640 { B2 (0x61, 0x79+(yyvsp[-6].regno)); O1 ((yyvsp[-1].exp)); } 2641#line 2642 "rl78-parse.c" /* yacc.c:1661 */ 2642 break; 2643 2644 case 90: 2645#line 500 "./config/rl78-parse.y" /* yacc.c:1661 */ 2646 { B3 (0x71, 0x7b, 0xfa); } 2647#line 2648 "rl78-parse.c" /* yacc.c:1661 */ 2648 break; 2649 2650 case 91: 2651#line 503 "./config/rl78-parse.y" /* yacc.c:1661 */ 2652 { B3 (0x71, 0x7a, 0xfa); } 2653#line 2654 "rl78-parse.c" /* yacc.c:1661 */ 2654 break; 2655 2656 case 92: 2657#line 507 "./config/rl78-parse.y" /* yacc.c:1661 */ 2658 { ISA_G14 ("MULHU"); } 2659#line 2660 "rl78-parse.c" /* yacc.c:1661 */ 2660 break; 2661 2662 case 93: 2663#line 508 "./config/rl78-parse.y" /* yacc.c:1661 */ 2664 { B3 (0xce, 0xfb, 0x01); } 2665#line 2666 "rl78-parse.c" /* yacc.c:1661 */ 2666 break; 2667 2668 case 94: 2669#line 510 "./config/rl78-parse.y" /* yacc.c:1661 */ 2670 { ISA_G14 ("MULH"); } 2671#line 2672 "rl78-parse.c" /* yacc.c:1661 */ 2672 break; 2673 2674 case 95: 2675#line 511 "./config/rl78-parse.y" /* yacc.c:1661 */ 2676 { B3 (0xce, 0xfb, 0x02); } 2677#line 2678 "rl78-parse.c" /* yacc.c:1661 */ 2678 break; 2679 2680 case 96: 2681#line 514 "./config/rl78-parse.y" /* yacc.c:1661 */ 2682 { B1 (0xd6); } 2683#line 2684 "rl78-parse.c" /* yacc.c:1661 */ 2684 break; 2685 2686 case 97: 2687#line 516 "./config/rl78-parse.y" /* yacc.c:1661 */ 2688 { ISA_G14 ("DIVHU"); } 2689#line 2690 "rl78-parse.c" /* yacc.c:1661 */ 2690 break; 2691 2692 case 98: 2693#line 517 "./config/rl78-parse.y" /* yacc.c:1661 */ 2694 { B3 (0xce, 0xfb, 0x03); } 2695#line 2696 "rl78-parse.c" /* yacc.c:1661 */ 2696 break; 2697 2698 case 99: 2699#line 524 "./config/rl78-parse.y" /* yacc.c:1661 */ 2700 { ISA_G14 ("DIVWU"); } 2701#line 2702 "rl78-parse.c" /* yacc.c:1661 */ 2702 break; 2703 2704 case 100: 2705#line 525 "./config/rl78-parse.y" /* yacc.c:1661 */ 2706 { B3 (0xce, 0xfb, 0x0b); } 2707#line 2708 "rl78-parse.c" /* yacc.c:1661 */ 2708 break; 2709 2710 case 101: 2711#line 527 "./config/rl78-parse.y" /* yacc.c:1661 */ 2712 { ISA_G14 ("MACHU"); } 2713#line 2714 "rl78-parse.c" /* yacc.c:1661 */ 2714 break; 2715 2716 case 102: 2717#line 528 "./config/rl78-parse.y" /* yacc.c:1661 */ 2718 { B3 (0xce, 0xfb, 0x05); } 2719#line 2720 "rl78-parse.c" /* yacc.c:1661 */ 2720 break; 2721 2722 case 103: 2723#line 530 "./config/rl78-parse.y" /* yacc.c:1661 */ 2724 { ISA_G14 ("MACH"); } 2725#line 2726 "rl78-parse.c" /* yacc.c:1661 */ 2726 break; 2727 2728 case 104: 2729#line 531 "./config/rl78-parse.y" /* yacc.c:1661 */ 2730 { B3 (0xce, 0xfb, 0x06); } 2731#line 2732 "rl78-parse.c" /* yacc.c:1661 */ 2732 break; 2733 2734 case 105: 2735#line 536 "./config/rl78-parse.y" /* yacc.c:1661 */ 2736 { B2 (0x61, 0xed); } 2737#line 2738 "rl78-parse.c" /* yacc.c:1661 */ 2738 break; 2739 2740 case 106: 2741#line 544 "./config/rl78-parse.y" /* yacc.c:1661 */ 2742 { B1 (0x51); O1 ((yyvsp[0].exp)); } 2743#line 2744 "rl78-parse.c" /* yacc.c:1661 */ 2744 break; 2745 2746 case 107: 2747#line 546 "./config/rl78-parse.y" /* yacc.c:1661 */ 2748 { B1 (0x50); F((yyvsp[-3].regno), 5, 3); O1 ((yyvsp[0].exp)); } 2749#line 2750 "rl78-parse.c" /* yacc.c:1661 */ 2750 break; 2751 2752 case 108: 2753#line 549 "./config/rl78-parse.y" /* yacc.c:1661 */ 2754 { if ((yyvsp[-3].regno) != 0xfd) 2755 { B2 (0xce, (yyvsp[-3].regno)); O1 ((yyvsp[0].exp)); } 2756 else 2757 { B1 (0x41); O1 ((yyvsp[0].exp)); } 2758 } 2759#line 2760 "rl78-parse.c" /* yacc.c:1661 */ 2760 break; 2761 2762 case 109: 2763#line 555 "./config/rl78-parse.y" /* yacc.c:1661 */ 2764 {NOT_ES} 2765#line 2766 "rl78-parse.c" /* yacc.c:1661 */ 2766 break; 2767 2768 case 110: 2769#line 556 "./config/rl78-parse.y" /* yacc.c:1661 */ 2770 { if (expr_is_sfr ((yyvsp[-4].exp))) 2771 { B1 (0xce); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); } 2772 else if (expr_is_saddr ((yyvsp[-4].exp))) 2773 { B1 (0xcd); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); } 2774 else 2775 NOT_SFR_OR_SADDR; 2776 } 2777#line 2778 "rl78-parse.c" /* yacc.c:1661 */ 2778 break; 2779 2780 case 111: 2781#line 565 "./config/rl78-parse.y" /* yacc.c:1661 */ 2782 { B1 (0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2783#line 2784 "rl78-parse.c" /* yacc.c:1661 */ 2784 break; 2785 2786 case 112: 2787#line 568 "./config/rl78-parse.y" /* yacc.c:1661 */ 2788 { B2 (0x11, 0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); } 2789#line 2790 "rl78-parse.c" /* yacc.c:1661 */ 2790 break; 2791 2792 case 113: 2793#line 571 "./config/rl78-parse.y" /* yacc.c:1661 */ 2794 { B1 (0x70); F ((yyvsp[-2].regno), 5, 3); } 2795#line 2796 "rl78-parse.c" /* yacc.c:1661 */ 2796 break; 2797 2798 case 114: 2799#line 574 "./config/rl78-parse.y" /* yacc.c:1661 */ 2800 { B1 (0x60); F ((yyvsp[0].regno), 5, 3); } 2801#line 2802 "rl78-parse.c" /* yacc.c:1661 */ 2802 break; 2803 2804 case 115: 2805#line 576 "./config/rl78-parse.y" /* yacc.c:1661 */ 2806 {NOT_ES} 2807#line 2808 "rl78-parse.c" /* yacc.c:1661 */ 2808 break; 2809 2810 case 116: 2811#line 577 "./config/rl78-parse.y" /* yacc.c:1661 */ 2812 { if (expr_is_sfr ((yyvsp[-3].exp))) 2813 { B1 (0x9e); O1 ((yyvsp[-3].exp)); } 2814 else if (expr_is_saddr ((yyvsp[-3].exp))) 2815 { B1 (0x9d); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); } 2816 else 2817 NOT_SFR_OR_SADDR; 2818 } 2819#line 2820 "rl78-parse.c" /* yacc.c:1661 */ 2820 break; 2821 2822 case 117: 2823#line 586 "./config/rl78-parse.y" /* yacc.c:1661 */ 2824 { B1 (0x8f); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2825#line 2826 "rl78-parse.c" /* yacc.c:1661 */ 2826 break; 2827 2828 case 118: 2829#line 589 "./config/rl78-parse.y" /* yacc.c:1661 */ 2830 { B1 (0x9f); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); } 2831#line 2832 "rl78-parse.c" /* yacc.c:1661 */ 2832 break; 2833 2834 case 119: 2835#line 592 "./config/rl78-parse.y" /* yacc.c:1661 */ 2836 { B2 (0x11, 0x9f); O2 ((yyvsp[-2].exp)); } 2837#line 2838 "rl78-parse.c" /* yacc.c:1661 */ 2838 break; 2839 2840 case 120: 2841#line 595 "./config/rl78-parse.y" /* yacc.c:1661 */ 2842 { B1 (0xc9|reg_xbc((yyvsp[-4].regno))); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 2843#line 2844 "rl78-parse.c" /* yacc.c:1661 */ 2844 break; 2845 2846 case 121: 2847#line 597 "./config/rl78-parse.y" /* yacc.c:1661 */ 2848 {NOT_ES} 2849#line 2850 "rl78-parse.c" /* yacc.c:1661 */ 2850 break; 2851 2852 case 122: 2853#line 598 "./config/rl78-parse.y" /* yacc.c:1661 */ 2854 { if (expr_is_saddr ((yyvsp[-1].exp))) 2855 { B1 (0x8d); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); } 2856 else if (expr_is_sfr ((yyvsp[-1].exp))) 2857 { B1 (0x8e); O1 ((yyvsp[-1].exp)); } 2858 else 2859 NOT_SFR_OR_SADDR; 2860 } 2861#line 2862 "rl78-parse.c" /* yacc.c:1661 */ 2862 break; 2863 2864 case 123: 2865#line 606 "./config/rl78-parse.y" /* yacc.c:1661 */ 2866 {SA((yyvsp[0].exp))} 2867#line 2868 "rl78-parse.c" /* yacc.c:1661 */ 2868 break; 2869 2870 case 124: 2871#line 606 "./config/rl78-parse.y" /* yacc.c:1661 */ 2872 {NOT_ES} 2873#line 2874 "rl78-parse.c" /* yacc.c:1661 */ 2874 break; 2875 2876 case 125: 2877#line 607 "./config/rl78-parse.y" /* yacc.c:1661 */ 2878 { B1 (0xc8|reg_xbc((yyvsp[-5].regno))); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } 2879#line 2880 "rl78-parse.c" /* yacc.c:1661 */ 2880 break; 2881 2882 case 126: 2883#line 610 "./config/rl78-parse.y" /* yacc.c:1661 */ 2884 { B2 (0x8e, (yyvsp[0].regno)); } 2885#line 2886 "rl78-parse.c" /* yacc.c:1661 */ 2886 break; 2887 2888 case 127: 2889#line 613 "./config/rl78-parse.y" /* yacc.c:1661 */ 2890 { if ((yyvsp[0].regno) != 1) 2891 rl78_error ("Only A allowed here"); 2892 else 2893 { B2 (0x9e, (yyvsp[-2].regno)); } 2894 } 2895#line 2896 "rl78-parse.c" /* yacc.c:1661 */ 2896 break; 2897 2898 case 128: 2899#line 619 "./config/rl78-parse.y" /* yacc.c:1661 */ 2900 {SA((yyvsp[0].exp))} 2901#line 2902 "rl78-parse.c" /* yacc.c:1661 */ 2902 break; 2903 2904 case 129: 2905#line 619 "./config/rl78-parse.y" /* yacc.c:1661 */ 2906 {NOT_ES} 2907#line 2908 "rl78-parse.c" /* yacc.c:1661 */ 2908 break; 2909 2910 case 130: 2911#line 620 "./config/rl78-parse.y" /* yacc.c:1661 */ 2912 { if ((yyvsp[-5].regno) != 0xfd) 2913 rl78_error ("Only ES allowed here"); 2914 else 2915 { B2 (0x61, 0xb8); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } 2916 } 2917#line 2918 "rl78-parse.c" /* yacc.c:1661 */ 2918 break; 2919 2920 case 131: 2921#line 627 "./config/rl78-parse.y" /* yacc.c:1661 */ 2922 { B1 (0x89); } 2923#line 2924 "rl78-parse.c" /* yacc.c:1661 */ 2924 break; 2925 2926 case 132: 2927#line 630 "./config/rl78-parse.y" /* yacc.c:1661 */ 2928 { B1 (0x99); } 2929#line 2930 "rl78-parse.c" /* yacc.c:1661 */ 2930 break; 2931 2932 case 133: 2933#line 633 "./config/rl78-parse.y" /* yacc.c:1661 */ 2934 { B1 (0xca); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); } 2935#line 2936 "rl78-parse.c" /* yacc.c:1661 */ 2936 break; 2937 2938 case 134: 2939#line 636 "./config/rl78-parse.y" /* yacc.c:1661 */ 2940 { B1 (0x8a); O1 ((yyvsp[-1].exp)); } 2941#line 2942 "rl78-parse.c" /* yacc.c:1661 */ 2942 break; 2943 2944 case 135: 2945#line 639 "./config/rl78-parse.y" /* yacc.c:1661 */ 2946 { B1 (0x9a); O1 ((yyvsp[-3].exp)); } 2947#line 2948 "rl78-parse.c" /* yacc.c:1661 */ 2948 break; 2949 2950 case 136: 2951#line 642 "./config/rl78-parse.y" /* yacc.c:1661 */ 2952 { B1 (0x8b); } 2953#line 2954 "rl78-parse.c" /* yacc.c:1661 */ 2954 break; 2955 2956 case 137: 2957#line 645 "./config/rl78-parse.y" /* yacc.c:1661 */ 2958 { B1 (0x9b); } 2959#line 2960 "rl78-parse.c" /* yacc.c:1661 */ 2960 break; 2961 2962 case 138: 2963#line 648 "./config/rl78-parse.y" /* yacc.c:1661 */ 2964 { B1 (0xcc); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); } 2965#line 2966 "rl78-parse.c" /* yacc.c:1661 */ 2966 break; 2967 2968 case 139: 2969#line 651 "./config/rl78-parse.y" /* yacc.c:1661 */ 2970 { B1 (0x8c); O1 ((yyvsp[-1].exp)); } 2971#line 2972 "rl78-parse.c" /* yacc.c:1661 */ 2972 break; 2973 2974 case 140: 2975#line 654 "./config/rl78-parse.y" /* yacc.c:1661 */ 2976 { B1 (0x9c); O1 ((yyvsp[-3].exp)); } 2977#line 2978 "rl78-parse.c" /* yacc.c:1661 */ 2978 break; 2979 2980 case 141: 2981#line 657 "./config/rl78-parse.y" /* yacc.c:1661 */ 2982 { B2 (0x61, 0xc9); } 2983#line 2984 "rl78-parse.c" /* yacc.c:1661 */ 2984 break; 2985 2986 case 142: 2987#line 660 "./config/rl78-parse.y" /* yacc.c:1661 */ 2988 { B2 (0x61, 0xd9); } 2989#line 2990 "rl78-parse.c" /* yacc.c:1661 */ 2990 break; 2991 2992 case 143: 2993#line 663 "./config/rl78-parse.y" /* yacc.c:1661 */ 2994 { B2 (0x61, 0xe9); } 2995#line 2996 "rl78-parse.c" /* yacc.c:1661 */ 2996 break; 2997 2998 case 144: 2999#line 666 "./config/rl78-parse.y" /* yacc.c:1661 */ 3000 { B2 (0x61, 0xf9); } 3001#line 3002 "rl78-parse.c" /* yacc.c:1661 */ 3002 break; 3003 3004 case 145: 3005#line 669 "./config/rl78-parse.y" /* yacc.c:1661 */ 3006 { B1 (0x19); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); } 3007#line 3008 "rl78-parse.c" /* yacc.c:1661 */ 3008 break; 3009 3010 case 146: 3011#line 672 "./config/rl78-parse.y" /* yacc.c:1661 */ 3012 { B1 (0x09); O2 ((yyvsp[-3].exp)); } 3013#line 3014 "rl78-parse.c" /* yacc.c:1661 */ 3014 break; 3015 3016 case 147: 3017#line 675 "./config/rl78-parse.y" /* yacc.c:1661 */ 3018 { B1 (0x18); O2 ((yyvsp[-5].exp)); } 3019#line 3020 "rl78-parse.c" /* yacc.c:1661 */ 3020 break; 3021 3022 case 148: 3023#line 678 "./config/rl78-parse.y" /* yacc.c:1661 */ 3024 { B1 (0x38); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); } 3025#line 3026 "rl78-parse.c" /* yacc.c:1661 */ 3026 break; 3027 3028 case 149: 3029#line 681 "./config/rl78-parse.y" /* yacc.c:1661 */ 3030 { B1 (0x29); O2 ((yyvsp[-3].exp)); } 3031#line 3032 "rl78-parse.c" /* yacc.c:1661 */ 3032 break; 3033 3034 case 150: 3035#line 684 "./config/rl78-parse.y" /* yacc.c:1661 */ 3036 { B1 (0x28); O2 ((yyvsp[-5].exp)); } 3037#line 3038 "rl78-parse.c" /* yacc.c:1661 */ 3038 break; 3039 3040 case 151: 3041#line 687 "./config/rl78-parse.y" /* yacc.c:1661 */ 3042 { B1 (0x39); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); } 3043#line 3044 "rl78-parse.c" /* yacc.c:1661 */ 3044 break; 3045 3046 case 152: 3047#line 690 "./config/rl78-parse.y" /* yacc.c:1661 */ 3048 { B3 (0x39, 0, 0); O1 ((yyvsp[0].exp)); } 3049#line 3050 "rl78-parse.c" /* yacc.c:1661 */ 3050 break; 3051 3052 case 153: 3053#line 693 "./config/rl78-parse.y" /* yacc.c:1661 */ 3054 { B1 (0x49); O2 ((yyvsp[-3].exp)); } 3055#line 3056 "rl78-parse.c" /* yacc.c:1661 */ 3056 break; 3057 3058 case 154: 3059#line 696 "./config/rl78-parse.y" /* yacc.c:1661 */ 3060 { B3 (0x49, 0, 0); } 3061#line 3062 "rl78-parse.c" /* yacc.c:1661 */ 3062 break; 3063 3064 case 155: 3065#line 699 "./config/rl78-parse.y" /* yacc.c:1661 */ 3066 { B1 (0x48); O2 ((yyvsp[-5].exp)); } 3067#line 3068 "rl78-parse.c" /* yacc.c:1661 */ 3068 break; 3069 3070 case 156: 3071#line 702 "./config/rl78-parse.y" /* yacc.c:1661 */ 3072 { B3 (0x48, 0, 0); } 3073#line 3074 "rl78-parse.c" /* yacc.c:1661 */ 3074 break; 3075 3076 case 157: 3077#line 704 "./config/rl78-parse.y" /* yacc.c:1661 */ 3078 {NOT_ES} 3079#line 3080 "rl78-parse.c" /* yacc.c:1661 */ 3080 break; 3081 3082 case 158: 3083#line 705 "./config/rl78-parse.y" /* yacc.c:1661 */ 3084 { B1 (0xc8); O1 ((yyvsp[-5].exp)); O1 ((yyvsp[-1].exp)); } 3085#line 3086 "rl78-parse.c" /* yacc.c:1661 */ 3086 break; 3087 3088 case 159: 3089#line 707 "./config/rl78-parse.y" /* yacc.c:1661 */ 3090 {NOT_ES} 3091#line 3092 "rl78-parse.c" /* yacc.c:1661 */ 3092 break; 3093 3094 case 160: 3095#line 708 "./config/rl78-parse.y" /* yacc.c:1661 */ 3096 { B2 (0xc8, 0); O1 ((yyvsp[-1].exp)); } 3097#line 3098 "rl78-parse.c" /* yacc.c:1661 */ 3098 break; 3099 3100 case 161: 3101#line 710 "./config/rl78-parse.y" /* yacc.c:1661 */ 3102 {NOT_ES} 3103#line 3104 "rl78-parse.c" /* yacc.c:1661 */ 3104 break; 3105 3106 case 162: 3107#line 711 "./config/rl78-parse.y" /* yacc.c:1661 */ 3108 { B1 (0x88); O1 ((yyvsp[-2].exp)); } 3109#line 3110 "rl78-parse.c" /* yacc.c:1661 */ 3110 break; 3111 3112 case 163: 3113#line 713 "./config/rl78-parse.y" /* yacc.c:1661 */ 3114 {NOT_ES} 3115#line 3116 "rl78-parse.c" /* yacc.c:1661 */ 3116 break; 3117 3118 case 164: 3119#line 714 "./config/rl78-parse.y" /* yacc.c:1661 */ 3120 { B2 (0x88, 0); } 3121#line 3122 "rl78-parse.c" /* yacc.c:1661 */ 3122 break; 3123 3124 case 165: 3125#line 716 "./config/rl78-parse.y" /* yacc.c:1661 */ 3126 {NOT_ES} 3127#line 3128 "rl78-parse.c" /* yacc.c:1661 */ 3128 break; 3129 3130 case 166: 3131#line 717 "./config/rl78-parse.y" /* yacc.c:1661 */ 3132 { B1 (0x98); O1 ((yyvsp[-4].exp)); } 3133#line 3134 "rl78-parse.c" /* yacc.c:1661 */ 3134 break; 3135 3136 case 167: 3137#line 719 "./config/rl78-parse.y" /* yacc.c:1661 */ 3138 {NOT_ES} 3139#line 3140 "rl78-parse.c" /* yacc.c:1661 */ 3140 break; 3141 3142 case 168: 3143#line 720 "./config/rl78-parse.y" /* yacc.c:1661 */ 3144 { B2 (0x98, 0); } 3145#line 3146 "rl78-parse.c" /* yacc.c:1661 */ 3146 break; 3147 3148 case 169: 3149#line 725 "./config/rl78-parse.y" /* yacc.c:1661 */ 3150 { if (expr_is_saddr ((yyvsp[-2].exp))) 3151 { B2 (0x71, 0x04); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); } 3152 else if (expr_is_sfr ((yyvsp[-2].exp))) 3153 { B2 (0x71, 0x0c); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); } 3154 else 3155 NOT_SFR_OR_SADDR; 3156 } 3157#line 3158 "rl78-parse.c" /* yacc.c:1661 */ 3158 break; 3159 3160 case 170: 3161#line 734 "./config/rl78-parse.y" /* yacc.c:1661 */ 3162 { B2 (0x71, 0x8c); FE ((yyvsp[0].exp), 9, 3); } 3163#line 3164 "rl78-parse.c" /* yacc.c:1661 */ 3164 break; 3165 3166 case 171: 3167#line 737 "./config/rl78-parse.y" /* yacc.c:1661 */ 3168 { B3 (0x71, 0x0c, (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); } 3169#line 3170 "rl78-parse.c" /* yacc.c:1661 */ 3170 break; 3171 3172 case 172: 3173#line 740 "./config/rl78-parse.y" /* yacc.c:1661 */ 3174 { B2 (0x71, 0x84); FE ((yyvsp[0].exp), 9, 3); } 3175#line 3176 "rl78-parse.c" /* yacc.c:1661 */ 3176 break; 3177 3178 case 173: 3179#line 743 "./config/rl78-parse.y" /* yacc.c:1661 */ 3180 { if (expr_is_saddr ((yyvsp[-4].exp))) 3181 { B2 (0x71, 0x01); FE ((yyvsp[-2].exp), 9, 3); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); } 3182 else if (expr_is_sfr ((yyvsp[-4].exp))) 3183 { B2 (0x71, 0x09); FE ((yyvsp[-2].exp), 9, 3); O1 ((yyvsp[-4].exp)); } 3184 else 3185 NOT_SFR_OR_SADDR; 3186 } 3187#line 3188 "rl78-parse.c" /* yacc.c:1661 */ 3188 break; 3189 3190 case 174: 3191#line 752 "./config/rl78-parse.y" /* yacc.c:1661 */ 3192 { B2 (0x71, 0x89); FE ((yyvsp[-2].exp), 9, 3); } 3193#line 3194 "rl78-parse.c" /* yacc.c:1661 */ 3194 break; 3195 3196 case 175: 3197#line 755 "./config/rl78-parse.y" /* yacc.c:1661 */ 3198 { B3 (0x71, 0x09, (yyvsp[-4].regno)); FE ((yyvsp[-2].exp), 9, 3); } 3199#line 3200 "rl78-parse.c" /* yacc.c:1661 */ 3200 break; 3201 3202 case 176: 3203#line 758 "./config/rl78-parse.y" /* yacc.c:1661 */ 3204 { B2 (0x71, 0x81); FE ((yyvsp[-2].exp), 9, 3); } 3205#line 3206 "rl78-parse.c" /* yacc.c:1661 */ 3206 break; 3207 3208 case 177: 3209#line 763 "./config/rl78-parse.y" /* yacc.c:1661 */ 3210 { B2 (0x61, 0xce); O1 ((yyvsp[-3].exp)); } 3211#line 3212 "rl78-parse.c" /* yacc.c:1661 */ 3212 break; 3213 3214 case 178: 3215#line 768 "./config/rl78-parse.y" /* yacc.c:1661 */ 3216 { B1 (0x30); O2 ((yyvsp[0].exp)); } 3217#line 3218 "rl78-parse.c" /* yacc.c:1661 */ 3218 break; 3219 3220 case 179: 3221#line 771 "./config/rl78-parse.y" /* yacc.c:1661 */ 3222 { B1 (0x30); F ((yyvsp[-3].regno), 5, 2); O2 ((yyvsp[0].exp)); } 3223#line 3224 "rl78-parse.c" /* yacc.c:1661 */ 3224 break; 3225 3226 case 180: 3227#line 773 "./config/rl78-parse.y" /* yacc.c:1661 */ 3228 {NOT_ES} 3229#line 3230 "rl78-parse.c" /* yacc.c:1661 */ 3230 break; 3231 3232 case 181: 3233#line 774 "./config/rl78-parse.y" /* yacc.c:1661 */ 3234 { if (expr_is_saddr ((yyvsp[-4].exp))) 3235 { B1 (0xc9); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); } 3236 else if (expr_is_sfr ((yyvsp[-4].exp))) 3237 { B1 (0xcb); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); } 3238 else 3239 NOT_SFR_OR_SADDR; 3240 } 3241#line 3242 "rl78-parse.c" /* yacc.c:1661 */ 3242 break; 3243 3244 case 182: 3245#line 782 "./config/rl78-parse.y" /* yacc.c:1661 */ 3246 {NOT_ES} 3247#line 3248 "rl78-parse.c" /* yacc.c:1661 */ 3248 break; 3249 3250 case 183: 3251#line 783 "./config/rl78-parse.y" /* yacc.c:1661 */ 3252 { if (expr_is_saddr ((yyvsp[-1].exp))) 3253 { B1 (0xad); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); } 3254 else if (expr_is_sfr ((yyvsp[-1].exp))) 3255 { B1 (0xae); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); } 3256 else 3257 NOT_SFR_OR_SADDR; 3258 } 3259#line 3260 "rl78-parse.c" /* yacc.c:1661 */ 3260 break; 3261 3262 case 184: 3263#line 791 "./config/rl78-parse.y" /* yacc.c:1661 */ 3264 {NOT_ES} 3265#line 3266 "rl78-parse.c" /* yacc.c:1661 */ 3266 break; 3267 3268 case 185: 3269#line 792 "./config/rl78-parse.y" /* yacc.c:1661 */ 3270 { if (expr_is_saddr ((yyvsp[-3].exp))) 3271 { B1 (0xbd); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); } 3272 else if (expr_is_sfr ((yyvsp[-3].exp))) 3273 { B1 (0xbe); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); } 3274 else 3275 NOT_SFR_OR_SADDR; 3276 } 3277#line 3278 "rl78-parse.c" /* yacc.c:1661 */ 3278 break; 3279 3280 case 186: 3281#line 801 "./config/rl78-parse.y" /* yacc.c:1661 */ 3282 { B1 (0x11); F ((yyvsp[0].regno), 5, 2); } 3283#line 3284 "rl78-parse.c" /* yacc.c:1661 */ 3284 break; 3285 3286 case 187: 3287#line 804 "./config/rl78-parse.y" /* yacc.c:1661 */ 3288 { B1 (0x10); F ((yyvsp[-2].regno), 5, 2); } 3289#line 3290 "rl78-parse.c" /* yacc.c:1661 */ 3290 break; 3291 3292 case 188: 3293#line 807 "./config/rl78-parse.y" /* yacc.c:1661 */ 3294 { B1 (0xaf); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 3295#line 3296 "rl78-parse.c" /* yacc.c:1661 */ 3296 break; 3297 3298 case 189: 3299#line 810 "./config/rl78-parse.y" /* yacc.c:1661 */ 3300 { B1 (0xbf); O2 ((yyvsp[-2].exp)); WA((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); } 3301#line 3302 "rl78-parse.c" /* yacc.c:1661 */ 3302 break; 3303 3304 case 190: 3305#line 813 "./config/rl78-parse.y" /* yacc.c:1661 */ 3306 { B1 (0xa9); } 3307#line 3308 "rl78-parse.c" /* yacc.c:1661 */ 3308 break; 3309 3310 case 191: 3311#line 816 "./config/rl78-parse.y" /* yacc.c:1661 */ 3312 { B1 (0xb9); } 3313#line 3314 "rl78-parse.c" /* yacc.c:1661 */ 3314 break; 3315 3316 case 192: 3317#line 819 "./config/rl78-parse.y" /* yacc.c:1661 */ 3318 { B1 (0xaa); O1 ((yyvsp[-1].exp)); } 3319#line 3320 "rl78-parse.c" /* yacc.c:1661 */ 3320 break; 3321 3322 case 193: 3323#line 822 "./config/rl78-parse.y" /* yacc.c:1661 */ 3324 { B1 (0xba); O1 ((yyvsp[-3].exp)); } 3325#line 3326 "rl78-parse.c" /* yacc.c:1661 */ 3326 break; 3327 3328 case 194: 3329#line 825 "./config/rl78-parse.y" /* yacc.c:1661 */ 3330 { B1 (0xab); } 3331#line 3332 "rl78-parse.c" /* yacc.c:1661 */ 3332 break; 3333 3334 case 195: 3335#line 828 "./config/rl78-parse.y" /* yacc.c:1661 */ 3336 { B1 (0xbb); } 3337#line 3338 "rl78-parse.c" /* yacc.c:1661 */ 3338 break; 3339 3340 case 196: 3341#line 831 "./config/rl78-parse.y" /* yacc.c:1661 */ 3342 { B1 (0xac); O1 ((yyvsp[-1].exp)); } 3343#line 3344 "rl78-parse.c" /* yacc.c:1661 */ 3344 break; 3345 3346 case 197: 3347#line 834 "./config/rl78-parse.y" /* yacc.c:1661 */ 3348 { B1 (0xbc); O1 ((yyvsp[-3].exp)); } 3349#line 3350 "rl78-parse.c" /* yacc.c:1661 */ 3350 break; 3351 3352 case 198: 3353#line 837 "./config/rl78-parse.y" /* yacc.c:1661 */ 3354 { B1 (0x59); O2 ((yyvsp[-3].exp)); } 3355#line 3356 "rl78-parse.c" /* yacc.c:1661 */ 3356 break; 3357 3358 case 199: 3359#line 840 "./config/rl78-parse.y" /* yacc.c:1661 */ 3360 { B1 (0x58); O2 ((yyvsp[-5].exp)); } 3361#line 3362 "rl78-parse.c" /* yacc.c:1661 */ 3362 break; 3363 3364 case 200: 3365#line 843 "./config/rl78-parse.y" /* yacc.c:1661 */ 3366 { B1 (0x69); O2 ((yyvsp[-3].exp)); } 3367#line 3368 "rl78-parse.c" /* yacc.c:1661 */ 3368 break; 3369 3370 case 201: 3371#line 846 "./config/rl78-parse.y" /* yacc.c:1661 */ 3372 { B1 (0x68); O2 ((yyvsp[-5].exp)); } 3373#line 3374 "rl78-parse.c" /* yacc.c:1661 */ 3374 break; 3375 3376 case 202: 3377#line 849 "./config/rl78-parse.y" /* yacc.c:1661 */ 3378 { B1 (0x79); O2 ((yyvsp[-3].exp)); } 3379#line 3380 "rl78-parse.c" /* yacc.c:1661 */ 3380 break; 3381 3382 case 203: 3383#line 852 "./config/rl78-parse.y" /* yacc.c:1661 */ 3384 { B3 (0x79, 0, 0); } 3385#line 3386 "rl78-parse.c" /* yacc.c:1661 */ 3386 break; 3387 3388 case 204: 3389#line 855 "./config/rl78-parse.y" /* yacc.c:1661 */ 3390 { B1 (0x78); O2 ((yyvsp[-5].exp)); } 3391#line 3392 "rl78-parse.c" /* yacc.c:1661 */ 3392 break; 3393 3394 case 205: 3395#line 858 "./config/rl78-parse.y" /* yacc.c:1661 */ 3396 { B3 (0x78, 0, 0); } 3397#line 3398 "rl78-parse.c" /* yacc.c:1661 */ 3398 break; 3399 3400 case 206: 3401#line 860 "./config/rl78-parse.y" /* yacc.c:1661 */ 3402 {NOT_ES} 3403#line 3404 "rl78-parse.c" /* yacc.c:1661 */ 3404 break; 3405 3406 case 207: 3407#line 861 "./config/rl78-parse.y" /* yacc.c:1661 */ 3408 { B1 (0xa8); O1 ((yyvsp[-2].exp)); WA((yyvsp[-2].exp));} 3409#line 3410 "rl78-parse.c" /* yacc.c:1661 */ 3410 break; 3411 3412 case 208: 3413#line 863 "./config/rl78-parse.y" /* yacc.c:1661 */ 3414 {NOT_ES} 3415#line 3416 "rl78-parse.c" /* yacc.c:1661 */ 3416 break; 3417 3418 case 209: 3419#line 864 "./config/rl78-parse.y" /* yacc.c:1661 */ 3420 { B2 (0xa8, 0); } 3421#line 3422 "rl78-parse.c" /* yacc.c:1661 */ 3422 break; 3423 3424 case 210: 3425#line 866 "./config/rl78-parse.y" /* yacc.c:1661 */ 3426 {NOT_ES} 3427#line 3428 "rl78-parse.c" /* yacc.c:1661 */ 3428 break; 3429 3430 case 211: 3431#line 867 "./config/rl78-parse.y" /* yacc.c:1661 */ 3432 { B1 (0xb8); O1 ((yyvsp[-4].exp)); WA((yyvsp[-4].exp)); } 3433#line 3434 "rl78-parse.c" /* yacc.c:1661 */ 3434 break; 3435 3436 case 212: 3437#line 869 "./config/rl78-parse.y" /* yacc.c:1661 */ 3438 {NOT_ES} 3439#line 3440 "rl78-parse.c" /* yacc.c:1661 */ 3440 break; 3441 3442 case 213: 3443#line 870 "./config/rl78-parse.y" /* yacc.c:1661 */ 3444 { B2 (0xb8, 0); } 3445#line 3446 "rl78-parse.c" /* yacc.c:1661 */ 3446 break; 3447 3448 case 214: 3449#line 872 "./config/rl78-parse.y" /* yacc.c:1661 */ 3450 {SA((yyvsp[0].exp))} 3451#line 3452 "rl78-parse.c" /* yacc.c:1661 */ 3452 break; 3453 3454 case 215: 3455#line 873 "./config/rl78-parse.y" /* yacc.c:1661 */ 3456 { B1 (0xca); F ((yyvsp[-3].regno), 2, 2); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); } 3457#line 3458 "rl78-parse.c" /* yacc.c:1661 */ 3458 break; 3459 3460 case 216: 3461#line 876 "./config/rl78-parse.y" /* yacc.c:1661 */ 3462 { B1 (0xcb); F ((yyvsp[-4].regno), 2, 2); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 3463#line 3464 "rl78-parse.c" /* yacc.c:1661 */ 3464 break; 3465 3466 case 217: 3467#line 879 "./config/rl78-parse.y" /* yacc.c:1661 */ 3468 { B2 (0xcb, 0xf8); O2 ((yyvsp[0].exp)); } 3469#line 3470 "rl78-parse.c" /* yacc.c:1661 */ 3470 break; 3471 3472 case 218: 3473#line 882 "./config/rl78-parse.y" /* yacc.c:1661 */ 3474 { B2 (0xbe, 0xf8); } 3475#line 3476 "rl78-parse.c" /* yacc.c:1661 */ 3476 break; 3477 3478 case 219: 3479#line 885 "./config/rl78-parse.y" /* yacc.c:1661 */ 3480 { B2 (0xae, 0xf8); } 3481#line 3482 "rl78-parse.c" /* yacc.c:1661 */ 3482 break; 3483 3484 case 220: 3485#line 888 "./config/rl78-parse.y" /* yacc.c:1661 */ 3486 { B3 (0xcb, 0xf8, 0xff); F ((yyvsp[-2].regno), 2, 2); } 3487#line 3488 "rl78-parse.c" /* yacc.c:1661 */ 3488 break; 3489 3490 case 221: 3491#line 893 "./config/rl78-parse.y" /* yacc.c:1661 */ 3492 { B1 (0x00); } 3493#line 3494 "rl78-parse.c" /* yacc.c:1661 */ 3494 break; 3495 3496 case 222: 3497#line 898 "./config/rl78-parse.y" /* yacc.c:1661 */ 3498 { B2 (0x71, 0xc0); } 3499#line 3500 "rl78-parse.c" /* yacc.c:1661 */ 3500 break; 3501 3502 case 223: 3503#line 903 "./config/rl78-parse.y" /* yacc.c:1661 */ 3504 { B1 (0xc0); F ((yyvsp[0].regno), 5, 2); } 3505#line 3506 "rl78-parse.c" /* yacc.c:1661 */ 3506 break; 3507 3508 case 224: 3509#line 906 "./config/rl78-parse.y" /* yacc.c:1661 */ 3510 { B2 (0x61, 0xcd); } 3511#line 3512 "rl78-parse.c" /* yacc.c:1661 */ 3512 break; 3513 3514 case 225: 3515#line 909 "./config/rl78-parse.y" /* yacc.c:1661 */ 3516 { B1 (0xc1); F ((yyvsp[0].regno), 5, 2); } 3517#line 3518 "rl78-parse.c" /* yacc.c:1661 */ 3518 break; 3519 3520 case 226: 3521#line 912 "./config/rl78-parse.y" /* yacc.c:1661 */ 3522 { B2 (0x61, 0xdd); } 3523#line 3524 "rl78-parse.c" /* yacc.c:1661 */ 3524 break; 3525 3526 case 227: 3527#line 917 "./config/rl78-parse.y" /* yacc.c:1661 */ 3528 { B1 (0xd7); } 3529#line 3530 "rl78-parse.c" /* yacc.c:1661 */ 3530 break; 3531 3532 case 228: 3533#line 920 "./config/rl78-parse.y" /* yacc.c:1661 */ 3534 { B2 (0x61, 0xfc); } 3535#line 3536 "rl78-parse.c" /* yacc.c:1661 */ 3536 break; 3537 3538 case 229: 3539#line 923 "./config/rl78-parse.y" /* yacc.c:1661 */ 3540 { B2 (0x61, 0xec); } 3541#line 3542 "rl78-parse.c" /* yacc.c:1661 */ 3542 break; 3543 3544 case 230: 3545#line 928 "./config/rl78-parse.y" /* yacc.c:1661 */ 3546 { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) 3547 { B2 (0x61, 0xeb); } 3548 } 3549#line 3550 "rl78-parse.c" /* yacc.c:1661 */ 3550 break; 3551 3552 case 231: 3553#line 933 "./config/rl78-parse.y" /* yacc.c:1661 */ 3554 { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) 3555 { B2 (0x61, 0xdc); } 3556 } 3557#line 3558 "rl78-parse.c" /* yacc.c:1661 */ 3558 break; 3559 3560 case 232: 3561#line 938 "./config/rl78-parse.y" /* yacc.c:1661 */ 3562 { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) 3563 { B2 (0x61, 0xee); } 3564 } 3565#line 3566 "rl78-parse.c" /* yacc.c:1661 */ 3566 break; 3567 3568 case 233: 3569#line 943 "./config/rl78-parse.y" /* yacc.c:1661 */ 3570 { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) 3571 { B2 (0x61, 0xfe); } 3572 } 3573#line 3574 "rl78-parse.c" /* yacc.c:1661 */ 3574 break; 3575 3576 case 234: 3577#line 948 "./config/rl78-parse.y" /* yacc.c:1661 */ 3578 { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) 3579 { B2 (0x61, 0xdb); } 3580 } 3581#line 3582 "rl78-parse.c" /* yacc.c:1661 */ 3582 break; 3583 3584 case 235: 3585#line 953 "./config/rl78-parse.y" /* yacc.c:1661 */ 3586 { if (check_expr_is_const ((yyvsp[0].exp), 1, 1)) 3587 { B2 (0x61, 0xfb);} 3588 } 3589#line 3590 "rl78-parse.c" /* yacc.c:1661 */ 3590 break; 3591 3592 case 236: 3593#line 960 "./config/rl78-parse.y" /* yacc.c:1661 */ 3594 { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) 3595 { B2 (0x31, 0x0b); FE ((yyvsp[0].exp), 9, 3); } 3596 } 3597#line 3598 "rl78-parse.c" /* yacc.c:1661 */ 3598 break; 3599 3600 case 237: 3601#line 965 "./config/rl78-parse.y" /* yacc.c:1661 */ 3602 { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) 3603 { B2 (0x31, 0x0f); FE ((yyvsp[0].exp), 8, 4); } 3604 } 3605#line 3606 "rl78-parse.c" /* yacc.c:1661 */ 3606 break; 3607 3608 case 238: 3609#line 972 "./config/rl78-parse.y" /* yacc.c:1661 */ 3610 { B2 (0x61, 0xcf); } 3611#line 3612 "rl78-parse.c" /* yacc.c:1661 */ 3612 break; 3613 3614 case 239: 3615#line 975 "./config/rl78-parse.y" /* yacc.c:1661 */ 3616 { B2 (0x61, 0xdf); } 3617#line 3618 "rl78-parse.c" /* yacc.c:1661 */ 3618 break; 3619 3620 case 240: 3621#line 978 "./config/rl78-parse.y" /* yacc.c:1661 */ 3622 { B2 (0x61, 0xef); } 3623#line 3624 "rl78-parse.c" /* yacc.c:1661 */ 3624 break; 3625 3626 case 241: 3627#line 981 "./config/rl78-parse.y" /* yacc.c:1661 */ 3628 { B2 (0x61, 0xff); } 3629#line 3630 "rl78-parse.c" /* yacc.c:1661 */ 3630 break; 3631 3632 case 242: 3633#line 986 "./config/rl78-parse.y" /* yacc.c:1661 */ 3634 { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) 3635 { B2 (0x31, 0x09); FE ((yyvsp[0].exp), 9, 3); } 3636 } 3637#line 3638 "rl78-parse.c" /* yacc.c:1661 */ 3638 break; 3639 3640 case 243: 3641#line 991 "./config/rl78-parse.y" /* yacc.c:1661 */ 3642 { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) 3643 { B2 (0x31, 0x08); FE ((yyvsp[0].exp), 9, 3); } 3644 } 3645#line 3646 "rl78-parse.c" /* yacc.c:1661 */ 3646 break; 3647 3648 case 244: 3649#line 996 "./config/rl78-parse.y" /* yacc.c:1661 */ 3650 { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) 3651 { B2 (0x31, 0x07); FE ((yyvsp[0].exp), 9, 3); } 3652 } 3653#line 3654 "rl78-parse.c" /* yacc.c:1661 */ 3654 break; 3655 3656 case 245: 3657#line 1001 "./config/rl78-parse.y" /* yacc.c:1661 */ 3658 { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) 3659 { B2 (0x31, 0x0d); FE ((yyvsp[0].exp), 8, 4); } 3660 } 3661#line 3662 "rl78-parse.c" /* yacc.c:1661 */ 3662 break; 3663 3664 case 246: 3665#line 1006 "./config/rl78-parse.y" /* yacc.c:1661 */ 3666 { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) 3667 { B2 (0x31, 0x0c); FE ((yyvsp[0].exp), 8, 4); } 3668 } 3669#line 3670 "rl78-parse.c" /* yacc.c:1661 */ 3670 break; 3671 3672 case 247: 3673#line 1013 "./config/rl78-parse.y" /* yacc.c:1661 */ 3674 { if (check_expr_is_const ((yyvsp[0].exp), 1, 7)) 3675 { B2 (0x31, 0x0a); FE ((yyvsp[0].exp), 9, 3); } 3676 } 3677#line 3678 "rl78-parse.c" /* yacc.c:1661 */ 3678 break; 3679 3680 case 248: 3681#line 1018 "./config/rl78-parse.y" /* yacc.c:1661 */ 3682 { if (check_expr_is_const ((yyvsp[0].exp), 1, 15)) 3683 { B2 (0x31, 0x0e); FE ((yyvsp[0].exp), 8, 4); } 3684 } 3685#line 3686 "rl78-parse.c" /* yacc.c:1661 */ 3686 break; 3687 3688 case 249: 3689#line 1025 "./config/rl78-parse.y" /* yacc.c:1661 */ 3690 { B2 (0x61, 0xc8); rl78_relax (RL78_RELAX_BRANCH, 0); } 3691#line 3692 "rl78-parse.c" /* yacc.c:1661 */ 3692 break; 3693 3694 case 250: 3695#line 1028 "./config/rl78-parse.y" /* yacc.c:1661 */ 3696 { B2 (0x61, 0xe3); rl78_relax (RL78_RELAX_BRANCH, 0); } 3697#line 3698 "rl78-parse.c" /* yacc.c:1661 */ 3698 break; 3699 3700 case 251: 3701#line 1031 "./config/rl78-parse.y" /* yacc.c:1661 */ 3702 { B2 (0x61, 0xd8); rl78_relax (RL78_RELAX_BRANCH, 0); } 3703#line 3704 "rl78-parse.c" /* yacc.c:1661 */ 3704 break; 3705 3706 case 252: 3707#line 1034 "./config/rl78-parse.y" /* yacc.c:1661 */ 3708 { B2 (0x61, 0xf3); rl78_relax (RL78_RELAX_BRANCH, 0); } 3709#line 3710 "rl78-parse.c" /* yacc.c:1661 */ 3710 break; 3711 3712 case 253: 3713#line 1037 "./config/rl78-parse.y" /* yacc.c:1661 */ 3714 { B2 (0x61, 0xf8); rl78_relax (RL78_RELAX_BRANCH, 0); } 3715#line 3716 "rl78-parse.c" /* yacc.c:1661 */ 3716 break; 3717 3718 case 254: 3719#line 1040 "./config/rl78-parse.y" /* yacc.c:1661 */ 3720 { B2 (0x61, 0xe8); rl78_relax (RL78_RELAX_BRANCH, 0); } 3721#line 3722 "rl78-parse.c" /* yacc.c:1661 */ 3722 break; 3723 3724 case 255: 3725#line 1045 "./config/rl78-parse.y" /* yacc.c:1661 */ 3726 { B2 (0x61, 0xfd); } 3727#line 3728 "rl78-parse.c" /* yacc.c:1661 */ 3728 break; 3729 3730 case 256: 3731#line 1050 "./config/rl78-parse.y" /* yacc.c:1661 */ 3732 { if ((yyvsp[0].regno) == 0) /* X */ 3733 { B1 (0x08); } 3734 else 3735 { B2 (0x61, 0x88); F ((yyvsp[0].regno), 13, 3); } 3736 } 3737#line 3738 "rl78-parse.c" /* yacc.c:1661 */ 3738 break; 3739 3740 case 257: 3741#line 1057 "./config/rl78-parse.y" /* yacc.c:1661 */ 3742 { B2 (0x61, 0xaa); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); } 3743#line 3744 "rl78-parse.c" /* yacc.c:1661 */ 3744 break; 3745 3746 case 258: 3747#line 1060 "./config/rl78-parse.y" /* yacc.c:1661 */ 3748 { B2 (0x61, 0xae); } 3749#line 3750 "rl78-parse.c" /* yacc.c:1661 */ 3750 break; 3751 3752 case 259: 3753#line 1063 "./config/rl78-parse.y" /* yacc.c:1661 */ 3754 { B2 (0x61, 0xaf); O1 ((yyvsp[-1].exp)); } 3755#line 3756 "rl78-parse.c" /* yacc.c:1661 */ 3756 break; 3757 3758 case 260: 3759#line 1066 "./config/rl78-parse.y" /* yacc.c:1661 */ 3760 { B2 (0x61, 0xac); } 3761#line 3762 "rl78-parse.c" /* yacc.c:1661 */ 3762 break; 3763 3764 case 261: 3765#line 1069 "./config/rl78-parse.y" /* yacc.c:1661 */ 3766 { B2 (0x61, 0xad); O1 ((yyvsp[-1].exp)); } 3767#line 3768 "rl78-parse.c" /* yacc.c:1661 */ 3768 break; 3769 3770 case 262: 3771#line 1072 "./config/rl78-parse.y" /* yacc.c:1661 */ 3772 { B2 (0x61, 0xb9); } 3773#line 3774 "rl78-parse.c" /* yacc.c:1661 */ 3774 break; 3775 3776 case 263: 3777#line 1075 "./config/rl78-parse.y" /* yacc.c:1661 */ 3778 { B2 (0x61, 0xa9); } 3779#line 3780 "rl78-parse.c" /* yacc.c:1661 */ 3780 break; 3781 3782 case 264: 3783#line 1078 "./config/rl78-parse.y" /* yacc.c:1661 */ 3784 { if (expr_is_sfr ((yyvsp[0].exp))) 3785 { B2 (0x61, 0xab); O1 ((yyvsp[0].exp)); } 3786 else if (expr_is_saddr ((yyvsp[0].exp))) 3787 { B2 (0x61, 0xa8); SET_SA ((yyvsp[0].exp)); O1 ((yyvsp[0].exp)); } 3788 else 3789 NOT_SFR_OR_SADDR; 3790 } 3791#line 3792 "rl78-parse.c" /* yacc.c:1661 */ 3792 break; 3793 3794 case 265: 3795#line 1089 "./config/rl78-parse.y" /* yacc.c:1661 */ 3796 { B1 (0x31); F ((yyvsp[0].regno), 5, 2); } 3797#line 3798 "rl78-parse.c" /* yacc.c:1661 */ 3798 break; 3799 3800 case 267: 3801#line 1099 "./config/rl78-parse.y" /* yacc.c:1661 */ 3802 { rl78_prefix (0x11); } 3803#line 3804 "rl78-parse.c" /* yacc.c:1661 */ 3804 break; 3805 3806 case 268: 3807#line 1102 "./config/rl78-parse.y" /* yacc.c:1661 */ 3808 { (yyval.regno) = 0; } 3809#line 3810 "rl78-parse.c" /* yacc.c:1661 */ 3810 break; 3811 3812 case 269: 3813#line 1103 "./config/rl78-parse.y" /* yacc.c:1661 */ 3814 { (yyval.regno) = 1; } 3815#line 3816 "rl78-parse.c" /* yacc.c:1661 */ 3816 break; 3817 3818 case 270: 3819#line 1104 "./config/rl78-parse.y" /* yacc.c:1661 */ 3820 { (yyval.regno) = 2; } 3821#line 3822 "rl78-parse.c" /* yacc.c:1661 */ 3822 break; 3823 3824 case 271: 3825#line 1105 "./config/rl78-parse.y" /* yacc.c:1661 */ 3826 { (yyval.regno) = 3; } 3827#line 3828 "rl78-parse.c" /* yacc.c:1661 */ 3828 break; 3829 3830 case 272: 3831#line 1106 "./config/rl78-parse.y" /* yacc.c:1661 */ 3832 { (yyval.regno) = 4; } 3833#line 3834 "rl78-parse.c" /* yacc.c:1661 */ 3834 break; 3835 3836 case 273: 3837#line 1107 "./config/rl78-parse.y" /* yacc.c:1661 */ 3838 { (yyval.regno) = 5; } 3839#line 3840 "rl78-parse.c" /* yacc.c:1661 */ 3840 break; 3841 3842 case 274: 3843#line 1108 "./config/rl78-parse.y" /* yacc.c:1661 */ 3844 { (yyval.regno) = 6; } 3845#line 3846 "rl78-parse.c" /* yacc.c:1661 */ 3846 break; 3847 3848 case 275: 3849#line 1109 "./config/rl78-parse.y" /* yacc.c:1661 */ 3850 { (yyval.regno) = 7; } 3851#line 3852 "rl78-parse.c" /* yacc.c:1661 */ 3852 break; 3853 3854 case 276: 3855#line 1112 "./config/rl78-parse.y" /* yacc.c:1661 */ 3856 { (yyval.regno) = 0; } 3857#line 3858 "rl78-parse.c" /* yacc.c:1661 */ 3858 break; 3859 3860 case 277: 3861#line 1113 "./config/rl78-parse.y" /* yacc.c:1661 */ 3862 { (yyval.regno) = 2; } 3863#line 3864 "rl78-parse.c" /* yacc.c:1661 */ 3864 break; 3865 3866 case 278: 3867#line 1114 "./config/rl78-parse.y" /* yacc.c:1661 */ 3868 { (yyval.regno) = 3; } 3869#line 3870 "rl78-parse.c" /* yacc.c:1661 */ 3870 break; 3871 3872 case 279: 3873#line 1115 "./config/rl78-parse.y" /* yacc.c:1661 */ 3874 { (yyval.regno) = 4; } 3875#line 3876 "rl78-parse.c" /* yacc.c:1661 */ 3876 break; 3877 3878 case 280: 3879#line 1116 "./config/rl78-parse.y" /* yacc.c:1661 */ 3880 { (yyval.regno) = 5; } 3881#line 3882 "rl78-parse.c" /* yacc.c:1661 */ 3882 break; 3883 3884 case 281: 3885#line 1117 "./config/rl78-parse.y" /* yacc.c:1661 */ 3886 { (yyval.regno) = 6; } 3887#line 3888 "rl78-parse.c" /* yacc.c:1661 */ 3888 break; 3889 3890 case 282: 3891#line 1118 "./config/rl78-parse.y" /* yacc.c:1661 */ 3892 { (yyval.regno) = 7; } 3893#line 3894 "rl78-parse.c" /* yacc.c:1661 */ 3894 break; 3895 3896 case 283: 3897#line 1121 "./config/rl78-parse.y" /* yacc.c:1661 */ 3898 { (yyval.regno) = 0; } 3899#line 3900 "rl78-parse.c" /* yacc.c:1661 */ 3900 break; 3901 3902 case 284: 3903#line 1122 "./config/rl78-parse.y" /* yacc.c:1661 */ 3904 { (yyval.regno) = 1; } 3905#line 3906 "rl78-parse.c" /* yacc.c:1661 */ 3906 break; 3907 3908 case 285: 3909#line 1123 "./config/rl78-parse.y" /* yacc.c:1661 */ 3910 { (yyval.regno) = 2; } 3911#line 3912 "rl78-parse.c" /* yacc.c:1661 */ 3912 break; 3913 3914 case 286: 3915#line 1124 "./config/rl78-parse.y" /* yacc.c:1661 */ 3916 { (yyval.regno) = 3; } 3917#line 3918 "rl78-parse.c" /* yacc.c:1661 */ 3918 break; 3919 3920 case 287: 3921#line 1127 "./config/rl78-parse.y" /* yacc.c:1661 */ 3922 { (yyval.regno) = 1; } 3923#line 3924 "rl78-parse.c" /* yacc.c:1661 */ 3924 break; 3925 3926 case 288: 3927#line 1128 "./config/rl78-parse.y" /* yacc.c:1661 */ 3928 { (yyval.regno) = 2; } 3929#line 3930 "rl78-parse.c" /* yacc.c:1661 */ 3930 break; 3931 3932 case 289: 3933#line 1129 "./config/rl78-parse.y" /* yacc.c:1661 */ 3934 { (yyval.regno) = 3; } 3935#line 3936 "rl78-parse.c" /* yacc.c:1661 */ 3936 break; 3937 3938 case 290: 3939#line 1132 "./config/rl78-parse.y" /* yacc.c:1661 */ 3940 { (yyval.regno) = 0xf8; } 3941#line 3942 "rl78-parse.c" /* yacc.c:1661 */ 3942 break; 3943 3944 case 291: 3945#line 1133 "./config/rl78-parse.y" /* yacc.c:1661 */ 3946 { (yyval.regno) = 0xf9; } 3947#line 3948 "rl78-parse.c" /* yacc.c:1661 */ 3948 break; 3949 3950 case 292: 3951#line 1134 "./config/rl78-parse.y" /* yacc.c:1661 */ 3952 { (yyval.regno) = 0xfa; } 3953#line 3954 "rl78-parse.c" /* yacc.c:1661 */ 3954 break; 3955 3956 case 293: 3957#line 1135 "./config/rl78-parse.y" /* yacc.c:1661 */ 3958 { (yyval.regno) = 0xfc; } 3959#line 3960 "rl78-parse.c" /* yacc.c:1661 */ 3960 break; 3961 3962 case 294: 3963#line 1136 "./config/rl78-parse.y" /* yacc.c:1661 */ 3964 { (yyval.regno) = 0xfd; } 3965#line 3966 "rl78-parse.c" /* yacc.c:1661 */ 3966 break; 3967 3968 case 295: 3969#line 1137 "./config/rl78-parse.y" /* yacc.c:1661 */ 3970 { (yyval.regno) = 0xfe; } 3971#line 3972 "rl78-parse.c" /* yacc.c:1661 */ 3972 break; 3973 3974 case 296: 3975#line 1138 "./config/rl78-parse.y" /* yacc.c:1661 */ 3976 { (yyval.regno) = 0xff; } 3977#line 3978 "rl78-parse.c" /* yacc.c:1661 */ 3978 break; 3979 3980 case 297: 3981#line 1144 "./config/rl78-parse.y" /* yacc.c:1661 */ 3982 { (yyval.regno) = 0x00; } 3983#line 3984 "rl78-parse.c" /* yacc.c:1661 */ 3984 break; 3985 3986 case 298: 3987#line 1145 "./config/rl78-parse.y" /* yacc.c:1661 */ 3988 { (yyval.regno) = 0x10; } 3989#line 3990 "rl78-parse.c" /* yacc.c:1661 */ 3990 break; 3991 3992 case 299: 3993#line 1146 "./config/rl78-parse.y" /* yacc.c:1661 */ 3994 { (yyval.regno) = 0x20; } 3995#line 3996 "rl78-parse.c" /* yacc.c:1661 */ 3996 break; 3997 3998 case 300: 3999#line 1147 "./config/rl78-parse.y" /* yacc.c:1661 */ 4000 { (yyval.regno) = 0x30; } 4001#line 4002 "rl78-parse.c" /* yacc.c:1661 */ 4002 break; 4003 4004 case 301: 4005#line 1148 "./config/rl78-parse.y" /* yacc.c:1661 */ 4006 { (yyval.regno) = 0x40; } 4007#line 4008 "rl78-parse.c" /* yacc.c:1661 */ 4008 break; 4009 4010 case 302: 4011#line 1149 "./config/rl78-parse.y" /* yacc.c:1661 */ 4012 { (yyval.regno) = 0x50; } 4013#line 4014 "rl78-parse.c" /* yacc.c:1661 */ 4014 break; 4015 4016 case 303: 4017#line 1150 "./config/rl78-parse.y" /* yacc.c:1661 */ 4018 { (yyval.regno) = 0x60; } 4019#line 4020 "rl78-parse.c" /* yacc.c:1661 */ 4020 break; 4021 4022 case 304: 4023#line 1151 "./config/rl78-parse.y" /* yacc.c:1661 */ 4024 { (yyval.regno) = 0x70; } 4025#line 4026 "rl78-parse.c" /* yacc.c:1661 */ 4026 break; 4027 4028 case 305: 4029#line 1154 "./config/rl78-parse.y" /* yacc.c:1661 */ 4030 { (yyval.regno) = 0x00; } 4031#line 4032 "rl78-parse.c" /* yacc.c:1661 */ 4032 break; 4033 4034 case 306: 4035#line 1155 "./config/rl78-parse.y" /* yacc.c:1661 */ 4036 { (yyval.regno) = 0x20; } 4037#line 4038 "rl78-parse.c" /* yacc.c:1661 */ 4038 break; 4039 4040 case 307: 4041#line 1156 "./config/rl78-parse.y" /* yacc.c:1661 */ 4042 { (yyval.regno) = 0x40; } 4043#line 4044 "rl78-parse.c" /* yacc.c:1661 */ 4044 break; 4045 4046 case 308: 4047#line 1159 "./config/rl78-parse.y" /* yacc.c:1661 */ 4048 { (yyval.regno) = 0x05; rl78_bit_insn = 1; } 4049#line 4050 "rl78-parse.c" /* yacc.c:1661 */ 4050 break; 4051 4052 case 309: 4053#line 1160 "./config/rl78-parse.y" /* yacc.c:1661 */ 4054 { (yyval.regno) = 0x06; rl78_bit_insn = 1; } 4055#line 4056 "rl78-parse.c" /* yacc.c:1661 */ 4056 break; 4057 4058 case 310: 4059#line 1161 "./config/rl78-parse.y" /* yacc.c:1661 */ 4060 { (yyval.regno) = 0x07; rl78_bit_insn = 1; } 4061#line 4062 "rl78-parse.c" /* yacc.c:1661 */ 4062 break; 4063 4064 case 311: 4065#line 1164 "./config/rl78-parse.y" /* yacc.c:1661 */ 4066 { (yyval.regno) = 0x02; rl78_bit_insn = 1; rl78_linkrelax_branch (); } 4067#line 4068 "rl78-parse.c" /* yacc.c:1661 */ 4068 break; 4069 4070 case 312: 4071#line 1165 "./config/rl78-parse.y" /* yacc.c:1661 */ 4072 { (yyval.regno) = 0x04; rl78_bit_insn = 1; rl78_linkrelax_branch (); } 4073#line 4074 "rl78-parse.c" /* yacc.c:1661 */ 4074 break; 4075 4076 case 313: 4077#line 1166 "./config/rl78-parse.y" /* yacc.c:1661 */ 4078 { (yyval.regno) = 0x00; rl78_bit_insn = 1; } 4079#line 4080 "rl78-parse.c" /* yacc.c:1661 */ 4080 break; 4081 4082 case 314: 4083#line 1169 "./config/rl78-parse.y" /* yacc.c:1661 */ 4084 { (yyval.regno) = 0; rl78_bit_insn = 1; } 4085#line 4086 "rl78-parse.c" /* yacc.c:1661 */ 4086 break; 4087 4088 case 315: 4089#line 1170 "./config/rl78-parse.y" /* yacc.c:1661 */ 4090 { (yyval.regno) = 1; rl78_bit_insn = 1; } 4091#line 4092 "rl78-parse.c" /* yacc.c:1661 */ 4092 break; 4093 4094 case 316: 4095#line 1173 "./config/rl78-parse.y" /* yacc.c:1661 */ 4096 { (yyval.regno) = 0x00; } 4097#line 4098 "rl78-parse.c" /* yacc.c:1661 */ 4098 break; 4099 4100 case 317: 4101#line 1174 "./config/rl78-parse.y" /* yacc.c:1661 */ 4102 { (yyval.regno) = 0x10; } 4103#line 4104 "rl78-parse.c" /* yacc.c:1661 */ 4104 break; 4105 4106 case 318: 4107#line 1177 "./config/rl78-parse.y" /* yacc.c:1661 */ 4108 { (yyval.regno) = 0x00; } 4109#line 4110 "rl78-parse.c" /* yacc.c:1661 */ 4110 break; 4111 4112 case 319: 4113#line 1178 "./config/rl78-parse.y" /* yacc.c:1661 */ 4114 { (yyval.regno) = 0x10; } 4115#line 4116 "rl78-parse.c" /* yacc.c:1661 */ 4116 break; 4117 4118 case 320: 4119#line 1181 "./config/rl78-parse.y" /* yacc.c:1661 */ 4120 { (yyval.regno) = 0x00; } 4121#line 4122 "rl78-parse.c" /* yacc.c:1661 */ 4122 break; 4123 4124 case 321: 4125#line 1182 "./config/rl78-parse.y" /* yacc.c:1661 */ 4126 { (yyval.regno) = 0x10; } 4127#line 4128 "rl78-parse.c" /* yacc.c:1661 */ 4128 break; 4129 4130 case 322: 4131#line 1185 "./config/rl78-parse.y" /* yacc.c:1661 */ 4132 { (yyval.regno) = 0x00; } 4133#line 4134 "rl78-parse.c" /* yacc.c:1661 */ 4134 break; 4135 4136 case 323: 4137#line 1186 "./config/rl78-parse.y" /* yacc.c:1661 */ 4138 { (yyval.regno) = 0x10; } 4139#line 4140 "rl78-parse.c" /* yacc.c:1661 */ 4140 break; 4141 4142 case 324: 4143#line 1189 "./config/rl78-parse.y" /* yacc.c:1661 */ 4144 { rl78_bit_insn = 1; } 4145#line 4146 "rl78-parse.c" /* yacc.c:1661 */ 4146 break; 4147 4148 4149#line 4150 "rl78-parse.c" /* yacc.c:1661 */ 4150 default: break; 4151 } 4152 /* User semantic actions sometimes alter yychar, and that requires 4153 that yytoken be updated with the new translation. We take the 4154 approach of translating immediately before every use of yytoken. 4155 One alternative is translating here after every semantic action, 4156 but that translation would be missed if the semantic action invokes 4157 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or 4158 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an 4159 incorrect destructor might then be invoked immediately. In the 4160 case of YYERROR or YYBACKUP, subsequent parser actions might lead 4161 to an incorrect destructor call or verbose syntax error message 4162 before the lookahead is translated. */ 4163 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 4164 4165 YYPOPSTACK (yylen); 4166 yylen = 0; 4167 YY_STACK_PRINT (yyss, yyssp); 4168 4169 *++yyvsp = yyval; 4170 4171 /* Now 'shift' the result of the reduction. Determine what state 4172 that goes to, based on the state we popped back to and the rule 4173 number reduced by. */ 4174 4175 yyn = yyr1[yyn]; 4176 4177 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 4178 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 4179 yystate = yytable[yystate]; 4180 else 4181 yystate = yydefgoto[yyn - YYNTOKENS]; 4182 4183 goto yynewstate; 4184 4185 4186/*--------------------------------------. 4187| yyerrlab -- here on detecting error. | 4188`--------------------------------------*/ 4189yyerrlab: 4190 /* Make sure we have latest lookahead translation. See comments at 4191 user semantic actions for why this is necessary. */ 4192 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); 4193 4194 /* If not already recovering from an error, report this error. */ 4195 if (!yyerrstatus) 4196 { 4197 ++yynerrs; 4198#if ! YYERROR_VERBOSE 4199 yyerror (YY_("syntax error")); 4200#else 4201# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ 4202 yyssp, yytoken) 4203 { 4204 char const *yymsgp = YY_("syntax error"); 4205 int yysyntax_error_status; 4206 yysyntax_error_status = YYSYNTAX_ERROR; 4207 if (yysyntax_error_status == 0) 4208 yymsgp = yymsg; 4209 else if (yysyntax_error_status == 1) 4210 { 4211 if (yymsg != yymsgbuf) 4212 YYSTACK_FREE (yymsg); 4213 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); 4214 if (!yymsg) 4215 { 4216 yymsg = yymsgbuf; 4217 yymsg_alloc = sizeof yymsgbuf; 4218 yysyntax_error_status = 2; 4219 } 4220 else 4221 { 4222 yysyntax_error_status = YYSYNTAX_ERROR; 4223 yymsgp = yymsg; 4224 } 4225 } 4226 yyerror (yymsgp); 4227 if (yysyntax_error_status == 2) 4228 goto yyexhaustedlab; 4229 } 4230# undef YYSYNTAX_ERROR 4231#endif 4232 } 4233 4234 4235 4236 if (yyerrstatus == 3) 4237 { 4238 /* If just tried and failed to reuse lookahead token after an 4239 error, discard it. */ 4240 4241 if (yychar <= YYEOF) 4242 { 4243 /* Return failure if at end of input. */ 4244 if (yychar == YYEOF) 4245 YYABORT; 4246 } 4247 else 4248 { 4249 yydestruct ("Error: discarding", 4250 yytoken, &yylval); 4251 yychar = YYEMPTY; 4252 } 4253 } 4254 4255 /* Else will try to reuse lookahead token after shifting the error 4256 token. */ 4257 goto yyerrlab1; 4258 4259 4260/*---------------------------------------------------. 4261| yyerrorlab -- error raised explicitly by YYERROR. | 4262`---------------------------------------------------*/ 4263yyerrorlab: 4264 4265 /* Pacify compilers like GCC when the user code never invokes 4266 YYERROR and the label yyerrorlab therefore never appears in user 4267 code. */ 4268 if (/*CONSTCOND*/ 0) 4269 goto yyerrorlab; 4270 4271 /* Do not reclaim the symbols of the rule whose action triggered 4272 this YYERROR. */ 4273 YYPOPSTACK (yylen); 4274 yylen = 0; 4275 YY_STACK_PRINT (yyss, yyssp); 4276 yystate = *yyssp; 4277 goto yyerrlab1; 4278 4279 4280/*-------------------------------------------------------------. 4281| yyerrlab1 -- common code for both syntax error and YYERROR. | 4282`-------------------------------------------------------------*/ 4283yyerrlab1: 4284 yyerrstatus = 3; /* Each real token shifted decrements this. */ 4285 4286 for (;;) 4287 { 4288 yyn = yypact[yystate]; 4289 if (!yypact_value_is_default (yyn)) 4290 { 4291 yyn += YYTERROR; 4292 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 4293 { 4294 yyn = yytable[yyn]; 4295 if (0 < yyn) 4296 break; 4297 } 4298 } 4299 4300 /* Pop the current state because it cannot handle the error token. */ 4301 if (yyssp == yyss) 4302 YYABORT; 4303 4304 4305 yydestruct ("Error: popping", 4306 yystos[yystate], yyvsp); 4307 YYPOPSTACK (1); 4308 yystate = *yyssp; 4309 YY_STACK_PRINT (yyss, yyssp); 4310 } 4311 4312 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 4313 *++yyvsp = yylval; 4314 YY_IGNORE_MAYBE_UNINITIALIZED_END 4315 4316 4317 /* Shift the error token. */ 4318 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 4319 4320 yystate = yyn; 4321 goto yynewstate; 4322 4323 4324/*-------------------------------------. 4325| yyacceptlab -- YYACCEPT comes here. | 4326`-------------------------------------*/ 4327yyacceptlab: 4328 yyresult = 0; 4329 goto yyreturn; 4330 4331/*-----------------------------------. 4332| yyabortlab -- YYABORT comes here. | 4333`-----------------------------------*/ 4334yyabortlab: 4335 yyresult = 1; 4336 goto yyreturn; 4337 4338#if !defined yyoverflow || YYERROR_VERBOSE 4339/*-------------------------------------------------. 4340| yyexhaustedlab -- memory exhaustion comes here. | 4341`-------------------------------------------------*/ 4342yyexhaustedlab: 4343 yyerror (YY_("memory exhausted")); 4344 yyresult = 2; 4345 /* Fall through. */ 4346#endif 4347 4348yyreturn: 4349 if (yychar != YYEMPTY) 4350 { 4351 /* Make sure we have latest lookahead translation. See comments at 4352 user semantic actions for why this is necessary. */ 4353 yytoken = YYTRANSLATE (yychar); 4354 yydestruct ("Cleanup: discarding lookahead", 4355 yytoken, &yylval); 4356 } 4357 /* Do not reclaim the symbols of the rule whose action triggered 4358 this YYABORT or YYACCEPT. */ 4359 YYPOPSTACK (yylen); 4360 YY_STACK_PRINT (yyss, yyssp); 4361 while (yyssp != yyss) 4362 { 4363 yydestruct ("Cleanup: popping", 4364 yystos[*yyssp], yyvsp); 4365 YYPOPSTACK (1); 4366 } 4367#ifndef yyoverflow 4368 if (yyss != yyssa) 4369 YYSTACK_FREE (yyss); 4370#endif 4371#if YYERROR_VERBOSE 4372 if (yymsg != yymsgbuf) 4373 YYSTACK_FREE (yymsg); 4374#endif 4375 return yyresult; 4376} 4377#line 1192 "./config/rl78-parse.y" /* yacc.c:1906 */ 4378 4379/* ====================================================================== */ 4380 4381static struct 4382{ 4383 const char * string; 4384 int token; 4385 int val; 4386} 4387token_table[] = 4388{ 4389 { "r0", X, 0 }, 4390 { "r1", A, 1 }, 4391 { "r2", C, 2 }, 4392 { "r3", B, 3 }, 4393 { "r4", E, 4 }, 4394 { "r5", D, 5 }, 4395 { "r6", L, 6 }, 4396 { "r7", H, 7 }, 4397 { "x", X, 0 }, 4398 { "a", A, 1 }, 4399 { "c", C, 2 }, 4400 { "b", B, 3 }, 4401 { "e", E, 4 }, 4402 { "d", D, 5 }, 4403 { "l", L, 6 }, 4404 { "h", H, 7 }, 4405 4406 { "rp0", AX, 0 }, 4407 { "rp1", BC, 1 }, 4408 { "rp2", DE, 2 }, 4409 { "rp3", HL, 3 }, 4410 { "ax", AX, 0 }, 4411 { "bc", BC, 1 }, 4412 { "de", DE, 2 }, 4413 { "hl", HL, 3 }, 4414 4415 { "RB0", RB0, 0 }, 4416 { "RB1", RB1, 1 }, 4417 { "RB2", RB2, 2 }, 4418 { "RB3", RB3, 3 }, 4419 4420 { "sp", SP, 0 }, 4421 { "cy", CY, 0 }, 4422 4423 { "spl", SPL, 0xf8 }, 4424 { "sph", SPH, 0xf9 }, 4425 { "psw", PSW, 0xfa }, 4426 { "cs", CS, 0xfc }, 4427 { "es", ES, 0xfd }, 4428 { "pmc", PMC, 0xfe }, 4429 { "mem", MEM, 0xff }, 4430 4431 { ".s", DOT_S, 0 }, 4432 { ".b", DOT_B, 0 }, 4433 { ".w", DOT_W, 0 }, 4434 { ".l", DOT_L, 0 }, 4435 { ".a", DOT_A , 0}, 4436 { ".ub", DOT_UB, 0 }, 4437 { ".uw", DOT_UW , 0}, 4438 4439 { "c", FLAG, 0 }, 4440 { "z", FLAG, 1 }, 4441 { "s", FLAG, 2 }, 4442 { "o", FLAG, 3 }, 4443 { "i", FLAG, 8 }, 4444 { "u", FLAG, 9 }, 4445 4446#define OPC(x) { #x, x, IS_OPCODE } 4447 4448 OPC(ADD), 4449 OPC(ADDC), 4450 OPC(ADDW), 4451 { "and", AND_, IS_OPCODE }, 4452 OPC(AND1), 4453 OPC(BC), 4454 OPC(BF), 4455 OPC(BH), 4456 OPC(BNC), 4457 OPC(BNH), 4458 OPC(BNZ), 4459 OPC(BR), 4460 OPC(BRK), 4461 OPC(BRK1), 4462 OPC(BT), 4463 OPC(BTCLR), 4464 OPC(BZ), 4465 OPC(CALL), 4466 OPC(CALLT), 4467 OPC(CLR1), 4468 OPC(CLRB), 4469 OPC(CLRW), 4470 OPC(CMP), 4471 OPC(CMP0), 4472 OPC(CMPS), 4473 OPC(CMPW), 4474 OPC(DEC), 4475 OPC(DECW), 4476 OPC(DI), 4477 OPC(DIVHU), 4478 OPC(DIVWU), 4479 OPC(EI), 4480 OPC(HALT), 4481 OPC(INC), 4482 OPC(INCW), 4483 OPC(MACH), 4484 OPC(MACHU), 4485 OPC(MOV), 4486 OPC(MOV1), 4487 OPC(MOVS), 4488 OPC(MOVW), 4489 OPC(MULH), 4490 OPC(MULHU), 4491 OPC(MULU), 4492 OPC(NOP), 4493 OPC(NOT1), 4494 OPC(ONEB), 4495 OPC(ONEW), 4496 OPC(OR), 4497 OPC(OR1), 4498 OPC(POP), 4499 OPC(PUSH), 4500 OPC(RET), 4501 OPC(RETI), 4502 OPC(RETB), 4503 OPC(ROL), 4504 OPC(ROLC), 4505 OPC(ROLWC), 4506 OPC(ROR), 4507 OPC(RORC), 4508 OPC(SAR), 4509 OPC(SARW), 4510 OPC(SEL), 4511 OPC(SET1), 4512 OPC(SHL), 4513 OPC(SHLW), 4514 OPC(SHR), 4515 OPC(SHRW), 4516 OPC(SKC), 4517 OPC(SKH), 4518 OPC(SKNC), 4519 OPC(SKNH), 4520 OPC(SKNZ), 4521 OPC(SKZ), 4522 OPC(STOP), 4523 OPC(SUB), 4524 OPC(SUBC), 4525 OPC(SUBW), 4526 OPC(XCH), 4527 OPC(XCHW), 4528 OPC(XOR), 4529 OPC(XOR1), 4530}; 4531 4532#define NUM_TOKENS (sizeof (token_table) / sizeof (token_table[0])) 4533 4534void 4535rl78_lex_init (char * beginning, char * ending) 4536{ 4537 rl78_init_start = beginning; 4538 rl78_lex_start = beginning; 4539 rl78_lex_end = ending; 4540 rl78_in_brackets = 0; 4541 rl78_last_token = 0; 4542 4543 rl78_bit_insn = 0; 4544 4545 setbuf (stdout, 0); 4546} 4547 4548/* Return a pointer to the '.' in a bit index expression (like 4549 foo.5), or NULL if none is found. */ 4550static char * 4551find_bit_index (char *tok) 4552{ 4553 char *last_dot = NULL; 4554 char *last_digit = NULL; 4555 while (*tok && *tok != ',') 4556 { 4557 if (*tok == '.') 4558 { 4559 last_dot = tok; 4560 last_digit = NULL; 4561 } 4562 else if (*tok >= '0' && *tok <= '7' 4563 && last_dot != NULL 4564 && last_digit == NULL) 4565 { 4566 last_digit = tok; 4567 } 4568 else if (ISSPACE (*tok)) 4569 { 4570 /* skip */ 4571 } 4572 else 4573 { 4574 last_dot = NULL; 4575 last_digit = NULL; 4576 } 4577 tok ++; 4578 } 4579 if (last_dot != NULL 4580 && last_digit != NULL) 4581 return last_dot; 4582 return NULL; 4583} 4584 4585static int 4586rl78_lex (void) 4587{ 4588 /*unsigned int ci;*/ 4589 char * save_input_pointer; 4590 char * bit = NULL; 4591 4592 while (ISSPACE (*rl78_lex_start) 4593 && rl78_lex_start != rl78_lex_end) 4594 rl78_lex_start ++; 4595 4596 rl78_last_exp_start = rl78_lex_start; 4597 4598 if (rl78_lex_start == rl78_lex_end) 4599 return 0; 4600 4601 if (ISALPHA (*rl78_lex_start) 4602 || (*rl78_lex_start == '.' && ISALPHA (rl78_lex_start[1]))) 4603 { 4604 unsigned int i; 4605 char * e; 4606 char save; 4607 4608 for (e = rl78_lex_start + 1; 4609 e < rl78_lex_end && ISALNUM (*e); 4610 e ++) 4611 ; 4612 save = *e; 4613 *e = 0; 4614 4615 for (i = 0; i < NUM_TOKENS; i++) 4616 if (strcasecmp (rl78_lex_start, token_table[i].string) == 0 4617 && !(token_table[i].val == IS_OPCODE && rl78_last_token != 0) 4618 && !(token_table[i].token == FLAG && !need_flag)) 4619 { 4620 rl78_lval.regno = token_table[i].val; 4621 *e = save; 4622 rl78_lex_start = e; 4623 rl78_last_token = token_table[i].token; 4624 return token_table[i].token; 4625 } 4626 *e = save; 4627 } 4628 4629 if (rl78_last_token == 0) 4630 { 4631 rl78_last_token = UNKNOWN_OPCODE; 4632 return UNKNOWN_OPCODE; 4633 } 4634 4635 if (rl78_last_token == UNKNOWN_OPCODE) 4636 return 0; 4637 4638 if (*rl78_lex_start == '[') 4639 rl78_in_brackets = 1; 4640 if (*rl78_lex_start == ']') 4641 rl78_in_brackets = 0; 4642 4643 /* '.' is funny - the syntax includes it for bitfields, but only for 4644 bitfields. We check for it specially so we can allow labels 4645 with '.' in them. */ 4646 4647 if (rl78_bit_insn 4648 && *rl78_lex_start == '.' 4649 && find_bit_index (rl78_lex_start) == rl78_lex_start) 4650 { 4651 rl78_last_token = *rl78_lex_start; 4652 return *rl78_lex_start ++; 4653 } 4654 4655 if ((rl78_in_brackets && *rl78_lex_start == '+') 4656 || strchr ("[],#!$:", *rl78_lex_start)) 4657 { 4658 rl78_last_token = *rl78_lex_start; 4659 return *rl78_lex_start ++; 4660 } 4661 4662 /* Again, '.' is funny. Look for '.<digit>' at the end of the line 4663 or before a comma, which is a bitfield, not an expression. */ 4664 4665 if (rl78_bit_insn) 4666 { 4667 bit = find_bit_index (rl78_lex_start); 4668 if (bit) 4669 *bit = 0; 4670 else 4671 bit = NULL; 4672 } 4673 4674 save_input_pointer = input_line_pointer; 4675 input_line_pointer = rl78_lex_start; 4676 rl78_lval.exp.X_md = 0; 4677 expression (&rl78_lval.exp); 4678 4679 if (bit) 4680 *bit = '.'; 4681 4682 rl78_lex_start = input_line_pointer; 4683 input_line_pointer = save_input_pointer; 4684 rl78_last_token = EXPR; 4685 return EXPR; 4686} 4687 4688int 4689rl78_error (const char * str) 4690{ 4691 int len; 4692 4693 len = rl78_last_exp_start - rl78_init_start; 4694 4695 as_bad ("%s", rl78_init_start); 4696 as_bad ("%*s^ %s", len, "", str); 4697 return 0; 4698} 4699 4700static int 4701expr_is_sfr (expressionS exp) 4702{ 4703 unsigned long v; 4704 4705 if (exp.X_op != O_constant) 4706 return 0; 4707 4708 v = exp.X_add_number; 4709 if (0xFFF00 <= v && v <= 0xFFFFF) 4710 return 1; 4711 return 0; 4712} 4713 4714static int 4715expr_is_saddr (expressionS exp) 4716{ 4717 unsigned long v; 4718 4719 if (exp.X_op != O_constant) 4720 return 1; 4721 4722 v = exp.X_add_number; 4723 if (0xFFE20 <= v && v <= 0xFFF1F) 4724 return 1; 4725 return 0; 4726} 4727 4728static int 4729expr_is_word_aligned (expressionS exp) 4730{ 4731 unsigned long v; 4732 4733 if (exp.X_op != O_constant) 4734 return 1; 4735 4736 v = exp.X_add_number; 4737 if (v & 1) 4738 return 0; 4739 return 1; 4740 4741} 4742 4743static void 4744check_expr_is_bit_index (expressionS exp) 4745{ 4746 int val; 4747 4748 if (exp.X_op != O_constant) 4749 { 4750 rl78_error (_("bit index must be a constant")); 4751 return; 4752 } 4753 val = exp.X_add_number; 4754 4755 if (val < 0 || val > 7) 4756 rl78_error (_("rtsd size must be 0..7")); 4757} 4758 4759static int 4760exp_val (expressionS exp) 4761{ 4762 if (exp.X_op != O_constant) 4763 { 4764 rl78_error (_("constant expected")); 4765 return 0; 4766 } 4767 return exp.X_add_number; 4768} 4769 4770static int 4771check_expr_is_const (expressionS e, int vmin, int vmax) 4772{ 4773 static char buf[100]; 4774 if (e.X_op != O_constant 4775 || e.X_add_number < vmin 4776 || e.X_add_number > vmax) 4777 { 4778 if (vmin == vmax) 4779 sprintf (buf, "%d expected here", vmin); 4780 else 4781 sprintf (buf, "%d..%d expected here", vmin, vmax); 4782 rl78_error(buf); 4783 return 0; 4784 } 4785 return 1; 4786} 4787