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