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