github.com/rsc/go@v0.0.0-20150416155037-e040fd465409/src/cmd/old8a/y.go (about) 1 //line a.y:32 2 package main 3 4 import __yyfmt__ "fmt" 5 6 //line a.y:32 7 import ( 8 "cmd/internal/asm" 9 "cmd/internal/obj" 10 . "cmd/internal/obj/x86" 11 ) 12 13 //line a.y:41 14 type yySymType struct { 15 yys int 16 sym *asm.Sym 17 lval int64 18 con2 struct { 19 v1 int32 20 v2 int32 21 } 22 dval float64 23 sval string 24 addr obj.Addr 25 addr2 Addr2 26 } 27 28 const LTYPE0 = 57346 29 const LTYPE1 = 57347 30 const LTYPE2 = 57348 31 const LTYPE3 = 57349 32 const LTYPE4 = 57350 33 const LTYPEC = 57351 34 const LTYPED = 57352 35 const LTYPEN = 57353 36 const LTYPER = 57354 37 const LTYPET = 57355 38 const LTYPES = 57356 39 const LTYPEM = 57357 40 const LTYPEI = 57358 41 const LTYPEG = 57359 42 const LTYPEXC = 57360 43 const LTYPEX = 57361 44 const LTYPEPC = 57362 45 const LTYPEF = 57363 46 const LCONST = 57364 47 const LFP = 57365 48 const LPC = 57366 49 const LSB = 57367 50 const LBREG = 57368 51 const LLREG = 57369 52 const LSREG = 57370 53 const LFREG = 57371 54 const LXREG = 57372 55 const LFCONST = 57373 56 const LSCONST = 57374 57 const LSP = 57375 58 const LNAME = 57376 59 const LLAB = 57377 60 const LVAR = 57378 61 62 var yyToknames = []string{ 63 "'|'", 64 "'^'", 65 "'&'", 66 "'<'", 67 "'>'", 68 "'+'", 69 "'-'", 70 "'*'", 71 "'/'", 72 "'%'", 73 "LTYPE0", 74 "LTYPE1", 75 "LTYPE2", 76 "LTYPE3", 77 "LTYPE4", 78 "LTYPEC", 79 "LTYPED", 80 "LTYPEN", 81 "LTYPER", 82 "LTYPET", 83 "LTYPES", 84 "LTYPEM", 85 "LTYPEI", 86 "LTYPEG", 87 "LTYPEXC", 88 "LTYPEX", 89 "LTYPEPC", 90 "LTYPEF", 91 "LCONST", 92 "LFP", 93 "LPC", 94 "LSB", 95 "LBREG", 96 "LLREG", 97 "LSREG", 98 "LFREG", 99 "LXREG", 100 "LFCONST", 101 "LSCONST", 102 "LSP", 103 "LNAME", 104 "LLAB", 105 "LVAR", 106 } 107 var yyStatenames = []string{} 108 109 const yyEofCode = 1 110 const yyErrCode = 2 111 const yyMaxDepth = 200 112 113 //line yacctab:1 114 var yyExca = []int{ 115 -1, 1, 116 1, -1, 117 -2, 2, 118 } 119 120 const yyNprod = 131 121 const yyPrivate = 57344 122 123 var yyTokenNames []string 124 var yyStates []string 125 126 const yyLast = 594 127 128 var yyAct = []int{ 129 130 50, 226, 40, 3, 79, 77, 120, 49, 62, 207, 131 268, 267, 48, 169, 266, 72, 60, 262, 84, 70, 132 81, 254, 252, 71, 240, 80, 83, 115, 238, 65, 133 82, 236, 109, 99, 220, 109, 91, 93, 95, 52, 134 218, 209, 101, 103, 208, 170, 239, 233, 210, 173, 135 63, 206, 109, 56, 55, 168, 117, 118, 119, 108, 136 142, 135, 110, 116, 125, 112, 248, 104, 230, 229, 137 72, 225, 224, 223, 133, 109, 53, 84, 153, 81, 138 136, 140, 137, 152, 80, 83, 61, 150, 73, 82, 139 54, 141, 143, 149, 69, 63, 74, 39, 57, 148, 140 67, 147, 146, 126, 145, 39, 144, 134, 132, 131, 141 97, 154, 124, 36, 30, 34, 31, 33, 139, 32, 142 222, 221, 58, 175, 176, 111, 216, 242, 214, 241, 143 109, 117, 56, 55, 183, 72, 215, 165, 167, 182, 144 235, 140, 172, 166, 250, 251, 255, 183, 263, 181, 145 187, 141, 191, 193, 195, 53, 109, 109, 109, 109, 146 109, 256, 194, 109, 109, 109, 189, 190, 247, 54, 147 211, 228, 56, 130, 63, 74, 111, 57, 37, 117, 148 35, 217, 41, 196, 197, 198, 199, 200, 165, 167, 149 203, 204, 205, 227, 166, 53, 151, 88, 121, 87, 150 122, 123, 109, 109, 128, 127, 260, 58, 234, 54, 151 259, 105, 106, 237, 253, 129, 212, 57, 180, 42, 152 44, 47, 43, 45, 243, 257, 46, 244, 246, 231, 153 232, 184, 185, 186, 245, 188, 157, 158, 159, 249, 154 164, 163, 162, 160, 161, 155, 156, 157, 158, 159, 155 258, 7, 122, 123, 261, 155, 156, 157, 158, 159, 156 264, 265, 202, 9, 10, 11, 12, 13, 17, 27, 157 18, 14, 28, 19, 20, 21, 29, 23, 24, 25, 158 26, 56, 55, 78, 174, 201, 22, 16, 15, 171, 159 6, 107, 2, 4, 1, 8, 102, 5, 100, 98, 160 96, 94, 92, 90, 53, 56, 55, 138, 42, 44, 161 47, 43, 45, 86, 75, 46, 85, 66, 54, 64, 162 59, 68, 76, 63, 51, 213, 57, 0, 53, 56, 163 55, 0, 42, 44, 47, 43, 45, 0, 0, 46, 164 85, 0, 54, 0, 0, 0, 0, 63, 51, 0, 165 57, 0, 53, 56, 55, 0, 42, 44, 47, 43, 166 45, 0, 0, 46, 58, 0, 54, 0, 0, 0, 167 0, 63, 51, 0, 57, 0, 53, 56, 55, 0, 168 42, 44, 47, 43, 45, 0, 0, 46, 58, 0, 169 54, 0, 0, 0, 89, 0, 51, 0, 57, 0, 170 53, 56, 55, 0, 42, 44, 47, 43, 45, 0, 171 0, 46, 58, 0, 54, 0, 0, 0, 38, 0, 172 51, 0, 57, 0, 53, 56, 55, 0, 42, 44, 173 47, 43, 45, 0, 0, 46, 58, 0, 54, 0, 174 0, 56, 55, 0, 51, 0, 57, 0, 53, 0, 175 56, 55, 42, 44, 47, 43, 45, 56, 55, 46, 176 0, 0, 54, 0, 53, 0, 56, 55, 51, 113, 177 57, 0, 0, 53, 0, 114, 0, 0, 54, 0, 178 53, 0, 219, 0, 74, 0, 57, 54, 0, 53, 179 56, 55, 0, 74, 54, 57, 0, 56, 178, 192, 180 74, 73, 57, 54, 0, 0, 0, 56, 55, 74, 181 0, 57, 0, 53, 56, 55, 0, 0, 0, 0, 182 53, 0, 179, 0, 0, 0, 0, 54, 0, 177, 183 53, 0, 0, 74, 54, 57, 0, 53, 0, 0, 184 74, 0, 57, 0, 54, 0, 0, 0, 0, 58, 185 74, 54, 57, 0, 0, 0, 0, 51, 0, 57, 186 164, 163, 162, 160, 161, 155, 156, 157, 158, 159, 187 163, 162, 160, 161, 155, 156, 157, 158, 159, 162, 188 160, 161, 155, 156, 157, 158, 159, 160, 161, 155, 189 156, 157, 158, 159, 190 } 191 var yyPact = []int{ 192 193 -1000, -1000, 249, -1000, 67, -1000, 71, 69, 66, 63, 194 368, 320, 320, 392, 44, -1000, -1000, 272, 344, 320, 195 320, 320, -1000, 392, -1, 320, 320, 78, 505, 505, 196 -1000, 498, -1000, -1000, 498, -1000, -1000, -1000, 392, -1000, 197 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 198 13, 432, 11, -1000, -1000, 498, 498, 498, 191, -1000, 199 62, -1000, -1000, 163, -1000, 59, -1000, 58, -1000, 457, 200 -1000, 57, 9, 243, 498, -1000, 296, -1000, 392, -1000, 201 -1000, -1000, -1000, -1000, 8, 191, -1000, -1000, -1000, 392, 202 -1000, 56, -1000, 54, -1000, 52, -1000, 51, -1000, 49, 203 -1000, 43, -1000, 37, 184, 33, 28, 249, 556, -1000, 204 556, -1000, 151, 2, -8, 236, 105, -1000, -1000, -1000, 205 -3, 276, 498, 498, -1000, -1000, -1000, -1000, -1000, 488, 206 481, 392, 320, -1000, 457, 113, -1000, -1000, 416, -1000, 207 -1000, -1000, 100, -3, 392, 392, 392, 183, 392, 320, 208 320, 498, 448, 123, -1000, 498, 498, 498, 498, 498, 209 278, 254, 498, 498, 498, -2, -9, -12, -4, 498, 210 -1000, -1000, 205, 93, 243, -1000, -1000, -13, 441, -1000, 211 -1000, -1000, -1000, -19, 74, 73, -1000, 23, 22, -1000, 212 -1000, 21, 161, 19, -1000, 18, 225, 225, -1000, -1000, 213 -1000, 498, 498, 580, 573, 565, -5, 498, -1000, -1000, 214 103, -22, 498, -25, -1000, -1000, -1000, -6, -1000, -29, 215 -1000, 92, 89, 498, 183, -1, -1000, 218, 136, 15, 216 -1, 246, 246, 107, -31, 203, -1000, -32, -1000, 111, 217 -1000, -1000, -1000, -1000, -1000, -1000, 129, 215, 161, -1000, 218 199, 195, -1000, 498, -1000, -36, -1000, 116, -1000, 498, 219 498, -39, -1000, -1000, -42, -43, -1000, -1000, -1000, 220 } 221 var yyPgo = []int{ 222 223 0, 0, 27, 325, 6, 182, 8, 2, 39, 4, 224 86, 16, 5, 12, 7, 1, 180, 321, 178, 320, 225 319, 317, 314, 313, 303, 302, 301, 300, 299, 298, 226 296, 294, 292, 3, 291, 290, 288, 287, 286, 227 } 228 var yyR1 = []int{ 229 230 0, 31, 32, 31, 34, 33, 33, 33, 33, 35, 231 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 232 35, 35, 35, 35, 35, 35, 35, 35, 35, 16, 233 16, 20, 21, 19, 19, 18, 18, 17, 17, 17, 234 36, 37, 37, 38, 38, 22, 22, 22, 23, 23, 235 24, 24, 25, 25, 26, 26, 26, 27, 28, 29, 236 30, 10, 10, 12, 12, 12, 12, 12, 12, 12, 237 11, 11, 9, 9, 7, 7, 7, 7, 7, 7, 238 6, 6, 6, 6, 6, 6, 6, 15, 15, 15, 239 15, 5, 5, 13, 13, 13, 13, 13, 13, 13, 240 13, 13, 13, 13, 14, 14, 8, 8, 4, 4, 241 4, 3, 3, 3, 1, 1, 1, 1, 1, 1, 242 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 243 2, 244 } 245 var yyR2 = []int{ 246 247 0, 0, 0, 3, 0, 4, 1, 2, 2, 3, 248 3, 2, 2, 2, 2, 2, 2, 1, 1, 2, 249 2, 2, 2, 2, 1, 2, 2, 2, 2, 0, 250 1, 3, 3, 2, 1, 2, 1, 2, 1, 3, 251 6, 5, 7, 4, 6, 2, 1, 2, 1, 1, 252 3, 5, 3, 5, 2, 1, 3, 5, 5, 3, 253 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 254 1, 1, 4, 2, 1, 1, 1, 1, 1, 1, 255 2, 2, 2, 2, 4, 5, 3, 1, 2, 3, 256 4, 1, 1, 1, 4, 4, 6, 9, 9, 3, 257 3, 4, 5, 8, 1, 6, 5, 7, 0, 2, 258 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 259 1, 3, 3, 3, 3, 3, 4, 4, 3, 3, 260 3, 261 } 262 var yyChk = []int{ 263 264 -1000, -31, -32, -33, 44, 48, -35, 2, 46, 14, 265 15, 16, 17, 18, 22, -36, -37, 19, 21, 24, 266 25, 26, -38, 28, 29, 30, 31, 20, 23, 27, 267 47, 49, 48, 48, 49, -16, 50, -18, 50, -10, 268 -7, -5, 36, 39, 37, 40, 43, 38, -13, -14, 269 -1, 52, -8, 32, 46, 10, 9, 54, 44, -19, 270 -11, -10, -6, 51, -20, -11, -21, -10, -17, 50, 271 -9, -6, -1, 44, 52, -22, 50, -12, 11, -9, 272 -14, -7, -13, -6, -1, 44, -23, -16, -18, 50, 273 -24, -11, -25, -11, -26, -11, -27, -10, -28, -6, 274 -29, -11, -30, -11, -8, -5, -5, -34, -2, -1, 275 -2, -10, 52, 37, 43, -2, 52, -1, -1, -1, 276 -4, 7, 9, 10, 50, -1, -8, 42, 41, 52, 277 10, 50, 50, -9, 50, 52, -4, -12, 11, -8, 278 -7, -13, 52, -4, 50, 50, 50, 50, 50, 50, 279 50, 12, 50, 50, -33, 9, 10, 11, 12, 13, 280 7, 8, 6, 5, 4, 37, 43, 38, 53, 11, 281 53, 53, 37, 52, 8, -1, -1, 41, 10, 41, 282 -10, -11, -9, 34, -10, -10, -10, -7, -10, -11, 283 -11, -1, 51, -1, -6, -1, -2, -2, -2, -2, 284 -2, 7, 8, -2, -2, -2, 53, 11, 53, 53, 285 52, -1, 11, -3, 35, 43, 33, -4, 53, 41, 286 53, 47, 47, 50, 50, 50, -15, 32, 10, 50, 287 50, -2, -2, 52, -1, 37, 53, -1, 53, 52, 288 53, 37, 38, -1, -7, -6, 10, 32, 51, -6, 289 37, 38, 53, 11, 53, 35, 32, 10, -15, 11, 290 11, -1, 53, 32, -1, -1, 53, 53, 53, 291 } 292 var yyDef = []int{ 293 294 1, -2, 0, 3, 0, 6, 0, 0, 0, 29, 295 0, 0, 0, 0, 0, 17, 18, 0, 29, 0, 296 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 297 4, 0, 7, 8, 0, 11, 30, 12, 0, 36, 298 61, 62, 74, 75, 76, 77, 78, 79, 91, 92, 299 93, 0, 104, 114, 115, 0, 0, 0, 108, 13, 300 34, 70, 71, 0, 14, 0, 15, 0, 16, 0, 301 38, 0, 0, 108, 0, 19, 0, 46, 0, 63, 302 64, 67, 68, 69, 93, 108, 20, 48, 49, 30, 303 21, 0, 22, 0, 23, 55, 25, 0, 26, 0, 304 27, 0, 28, 0, 0, 0, 0, 0, 9, 120, 305 10, 35, 0, 0, 0, 0, 0, 116, 117, 118, 306 0, 0, 0, 0, 33, 80, 81, 82, 83, 0, 307 0, 0, 0, 37, 0, 0, 73, 45, 0, 47, 308 65, 66, 0, 73, 0, 0, 54, 0, 0, 0, 309 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 310 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 311 100, 119, 0, 0, 108, 109, 110, 0, 0, 86, 312 31, 32, 39, 0, 50, 52, 56, 0, 0, 59, 313 60, 0, 0, 0, 43, 0, 121, 122, 123, 124, 314 125, 0, 0, 128, 129, 130, 94, 0, 95, 101, 315 0, 0, 0, 0, 111, 112, 113, 0, 84, 0, 316 72, 0, 0, 0, 0, 0, 41, 87, 0, 0, 317 0, 126, 127, 0, 0, 0, 102, 0, 106, 0, 318 85, 51, 53, 57, 58, 40, 0, 88, 0, 44, 319 0, 0, 96, 0, 105, 0, 89, 0, 42, 0, 320 0, 0, 107, 90, 0, 0, 103, 97, 98, 321 } 322 var yyTok1 = []int{ 323 324 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 325 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 326 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 327 3, 3, 3, 3, 3, 3, 51, 13, 6, 3, 328 52, 53, 11, 9, 50, 10, 3, 12, 3, 3, 329 3, 3, 3, 3, 3, 3, 3, 3, 47, 48, 330 7, 49, 8, 3, 3, 3, 3, 3, 3, 3, 331 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 332 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 333 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 334 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 335 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 336 3, 3, 3, 3, 4, 3, 54, 337 } 338 var yyTok2 = []int{ 339 340 2, 3, 14, 15, 16, 17, 18, 19, 20, 21, 341 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 342 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 343 42, 43, 44, 45, 46, 344 } 345 var yyTok3 = []int{ 346 0, 347 } 348 349 //line yaccpar:1 350 351 /* parser for yacc output */ 352 353 var yyDebug = 0 354 355 type yyLexer interface { 356 Lex(lval *yySymType) int 357 Error(s string) 358 } 359 360 type yyParser interface { 361 Parse(yyLexer) int 362 Lookahead() int 363 } 364 365 type yyParserImpl struct { 366 lookahead func() int 367 } 368 369 func (p *yyParserImpl) Lookahead() int { 370 return p.lookahead() 371 } 372 373 func yyNewParser() yyParser { 374 p := &yyParserImpl{ 375 lookahead: func() int { return -1 }, 376 } 377 return p 378 } 379 380 const yyFlag = -1000 381 382 func yyTokname(c int) string { 383 // 4 is TOKSTART above 384 if c >= 4 && c-4 < len(yyToknames) { 385 if yyToknames[c-4] != "" { 386 return yyToknames[c-4] 387 } 388 } 389 return __yyfmt__.Sprintf("tok-%v", c) 390 } 391 392 func yyStatname(s int) string { 393 if s >= 0 && s < len(yyStatenames) { 394 if yyStatenames[s] != "" { 395 return yyStatenames[s] 396 } 397 } 398 return __yyfmt__.Sprintf("state-%v", s) 399 } 400 401 func yylex1(lex yyLexer, lval *yySymType) (char, token int) { 402 token = 0 403 char = lex.Lex(lval) 404 if char <= 0 { 405 token = yyTok1[0] 406 goto out 407 } 408 if char < len(yyTok1) { 409 token = yyTok1[char] 410 goto out 411 } 412 if char >= yyPrivate { 413 if char < yyPrivate+len(yyTok2) { 414 token = yyTok2[char-yyPrivate] 415 goto out 416 } 417 } 418 for i := 0; i < len(yyTok3); i += 2 { 419 token = yyTok3[i+0] 420 if token == char { 421 token = yyTok3[i+1] 422 goto out 423 } 424 } 425 426 out: 427 if token == 0 { 428 token = yyTok2[1] /* unknown char */ 429 } 430 if yyDebug >= 3 { 431 __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char)) 432 } 433 return char, token 434 } 435 436 func yyParse(yylex yyLexer) int { 437 return yyNewParser().Parse(yylex) 438 } 439 440 func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int { 441 var yyn int 442 var yylval yySymType 443 var yyVAL yySymType 444 var yyDollar []yySymType 445 yyS := make([]yySymType, yyMaxDepth) 446 447 Nerrs := 0 /* number of errors */ 448 Errflag := 0 /* error recovery flag */ 449 yystate := 0 450 yychar := -1 451 yytoken := -1 // yychar translated into internal numbering 452 yyrcvr.lookahead = func() int { return yychar } 453 defer func() { 454 // Make sure we report no lookahead when not parsing. 455 yychar = -1 456 yytoken = -1 457 }() 458 yyp := -1 459 goto yystack 460 461 ret0: 462 return 0 463 464 ret1: 465 return 1 466 467 yystack: 468 /* put a state and value onto the stack */ 469 if yyDebug >= 4 { 470 __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate)) 471 } 472 473 yyp++ 474 if yyp >= len(yyS) { 475 nyys := make([]yySymType, len(yyS)*2) 476 copy(nyys, yyS) 477 yyS = nyys 478 } 479 yyS[yyp] = yyVAL 480 yyS[yyp].yys = yystate 481 482 yynewstate: 483 yyn = yyPact[yystate] 484 if yyn <= yyFlag { 485 goto yydefault /* simple state */ 486 } 487 if yychar < 0 { 488 yychar, yytoken = yylex1(yylex, &yylval) 489 } 490 yyn += yytoken 491 if yyn < 0 || yyn >= yyLast { 492 goto yydefault 493 } 494 yyn = yyAct[yyn] 495 if yyChk[yyn] == yytoken { /* valid shift */ 496 yychar = -1 497 yytoken = -1 498 yyVAL = yylval 499 yystate = yyn 500 if Errflag > 0 { 501 Errflag-- 502 } 503 goto yystack 504 } 505 506 yydefault: 507 /* default state action */ 508 yyn = yyDef[yystate] 509 if yyn == -2 { 510 if yychar < 0 { 511 yychar, yytoken = yylex1(yylex, &yylval) 512 } 513 514 /* look through exception table */ 515 xi := 0 516 for { 517 if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate { 518 break 519 } 520 xi += 2 521 } 522 for xi += 2; ; xi += 2 { 523 yyn = yyExca[xi+0] 524 if yyn < 0 || yyn == yytoken { 525 break 526 } 527 } 528 yyn = yyExca[xi+1] 529 if yyn < 0 { 530 goto ret0 531 } 532 } 533 if yyn == 0 { 534 /* error ... attempt to resume parsing */ 535 switch Errflag { 536 case 0: /* brand new error */ 537 yylex.Error("syntax error") 538 Nerrs++ 539 if yyDebug >= 1 { 540 __yyfmt__.Printf("%s", yyStatname(yystate)) 541 __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken)) 542 } 543 fallthrough 544 545 case 1, 2: /* incompletely recovered error ... try again */ 546 Errflag = 3 547 548 /* find a state where "error" is a legal shift action */ 549 for yyp >= 0 { 550 yyn = yyPact[yyS[yyp].yys] + yyErrCode 551 if yyn >= 0 && yyn < yyLast { 552 yystate = yyAct[yyn] /* simulate a shift of "error" */ 553 if yyChk[yystate] == yyErrCode { 554 goto yystack 555 } 556 } 557 558 /* the current p has no shift on "error", pop stack */ 559 if yyDebug >= 2 { 560 __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) 561 } 562 yyp-- 563 } 564 /* there is no state on the stack with an error shift ... abort */ 565 goto ret1 566 567 case 3: /* no shift yet; clobber input char */ 568 if yyDebug >= 2 { 569 __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken)) 570 } 571 if yytoken == yyEofCode { 572 goto ret1 573 } 574 yychar = -1 575 yytoken = -1 576 goto yynewstate /* try again in the same state */ 577 } 578 } 579 580 /* reduction by production yyn */ 581 if yyDebug >= 2 { 582 __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate)) 583 } 584 585 yynt := yyn 586 yypt := yyp 587 _ = yypt // guard against "declared and not used" 588 589 yyp -= yyR2[yyn] 590 // yyp is now the index of $0. Perform the default action. Iff the 591 // reduced production is ε, $1 is possibly out of range. 592 if yyp+1 >= len(yyS) { 593 nyys := make([]yySymType, len(yyS)*2) 594 copy(nyys, yyS) 595 yyS = nyys 596 } 597 yyVAL = yyS[yyp+1] 598 599 /* consult goto table to find next state */ 600 yyn = yyR1[yyn] 601 yyg := yyPgo[yyn] 602 yyj := yyg + yyS[yyp].yys + 1 603 604 if yyj >= yyLast { 605 yystate = yyAct[yyg] 606 } else { 607 yystate = yyAct[yyj] 608 if yyChk[yystate] != -yyn { 609 yystate = yyAct[yyg] 610 } 611 } 612 // dummy call; replaced with literal code 613 switch yynt { 614 615 case 2: 616 yyDollar = yyS[yypt-1 : yypt+1] 617 //line a.y:74 618 { 619 stmtline = asm.Lineno 620 } 621 case 4: 622 yyDollar = yyS[yypt-2 : yypt+1] 623 //line a.y:81 624 { 625 yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym) 626 if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) { 627 yyerror("redeclaration of %s", yyDollar[1].sym.Labelname) 628 } 629 yyDollar[1].sym.Type = LLAB 630 yyDollar[1].sym.Value = int64(asm.PC) 631 } 632 case 9: 633 yyDollar = yyS[yypt-3 : yypt+1] 634 //line a.y:96 635 { 636 yyDollar[1].sym.Type = LVAR 637 yyDollar[1].sym.Value = yyDollar[3].lval 638 } 639 case 10: 640 yyDollar = yyS[yypt-3 : yypt+1] 641 //line a.y:101 642 { 643 if yyDollar[1].sym.Value != int64(yyDollar[3].lval) { 644 yyerror("redeclaration of %s", yyDollar[1].sym.Name) 645 } 646 yyDollar[1].sym.Value = yyDollar[3].lval 647 } 648 case 11: 649 yyDollar = yyS[yypt-2 : yypt+1] 650 //line a.y:107 651 { 652 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 653 } 654 case 12: 655 yyDollar = yyS[yypt-2 : yypt+1] 656 //line a.y:108 657 { 658 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 659 } 660 case 13: 661 yyDollar = yyS[yypt-2 : yypt+1] 662 //line a.y:109 663 { 664 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 665 } 666 case 14: 667 yyDollar = yyS[yypt-2 : yypt+1] 668 //line a.y:110 669 { 670 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 671 } 672 case 15: 673 yyDollar = yyS[yypt-2 : yypt+1] 674 //line a.y:111 675 { 676 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 677 } 678 case 16: 679 yyDollar = yyS[yypt-2 : yypt+1] 680 //line a.y:112 681 { 682 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 683 } 684 case 19: 685 yyDollar = yyS[yypt-2 : yypt+1] 686 //line a.y:115 687 { 688 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 689 } 690 case 20: 691 yyDollar = yyS[yypt-2 : yypt+1] 692 //line a.y:116 693 { 694 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 695 } 696 case 21: 697 yyDollar = yyS[yypt-2 : yypt+1] 698 //line a.y:117 699 { 700 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 701 } 702 case 22: 703 yyDollar = yyS[yypt-2 : yypt+1] 704 //line a.y:118 705 { 706 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 707 } 708 case 23: 709 yyDollar = yyS[yypt-2 : yypt+1] 710 //line a.y:119 711 { 712 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 713 } 714 case 25: 715 yyDollar = yyS[yypt-2 : yypt+1] 716 //line a.y:121 717 { 718 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 719 } 720 case 26: 721 yyDollar = yyS[yypt-2 : yypt+1] 722 //line a.y:122 723 { 724 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 725 } 726 case 27: 727 yyDollar = yyS[yypt-2 : yypt+1] 728 //line a.y:123 729 { 730 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 731 } 732 case 28: 733 yyDollar = yyS[yypt-2 : yypt+1] 734 //line a.y:124 735 { 736 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 737 } 738 case 29: 739 yyDollar = yyS[yypt-0 : yypt+1] 740 //line a.y:127 741 { 742 yyVAL.addr2.from = nullgen 743 yyVAL.addr2.to = nullgen 744 } 745 case 30: 746 yyDollar = yyS[yypt-1 : yypt+1] 747 //line a.y:132 748 { 749 yyVAL.addr2.from = nullgen 750 yyVAL.addr2.to = nullgen 751 } 752 case 31: 753 yyDollar = yyS[yypt-3 : yypt+1] 754 //line a.y:139 755 { 756 yyVAL.addr2.from = yyDollar[1].addr 757 yyVAL.addr2.to = yyDollar[3].addr 758 } 759 case 32: 760 yyDollar = yyS[yypt-3 : yypt+1] 761 //line a.y:146 762 { 763 yyVAL.addr2.from = yyDollar[1].addr 764 yyVAL.addr2.to = yyDollar[3].addr 765 } 766 case 33: 767 yyDollar = yyS[yypt-2 : yypt+1] 768 //line a.y:153 769 { 770 yyVAL.addr2.from = yyDollar[1].addr 771 yyVAL.addr2.to = nullgen 772 } 773 case 34: 774 yyDollar = yyS[yypt-1 : yypt+1] 775 //line a.y:158 776 { 777 yyVAL.addr2.from = yyDollar[1].addr 778 yyVAL.addr2.to = nullgen 779 } 780 case 35: 781 yyDollar = yyS[yypt-2 : yypt+1] 782 //line a.y:165 783 { 784 yyVAL.addr2.from = nullgen 785 yyVAL.addr2.to = yyDollar[2].addr 786 } 787 case 36: 788 yyDollar = yyS[yypt-1 : yypt+1] 789 //line a.y:170 790 { 791 yyVAL.addr2.from = nullgen 792 yyVAL.addr2.to = yyDollar[1].addr 793 } 794 case 37: 795 yyDollar = yyS[yypt-2 : yypt+1] 796 //line a.y:177 797 { 798 yyVAL.addr2.from = nullgen 799 yyVAL.addr2.to = yyDollar[2].addr 800 } 801 case 38: 802 yyDollar = yyS[yypt-1 : yypt+1] 803 //line a.y:182 804 { 805 yyVAL.addr2.from = nullgen 806 yyVAL.addr2.to = yyDollar[1].addr 807 } 808 case 39: 809 yyDollar = yyS[yypt-3 : yypt+1] 810 //line a.y:187 811 { 812 yyVAL.addr2.from = yyDollar[1].addr 813 yyVAL.addr2.to = yyDollar[3].addr 814 } 815 case 40: 816 yyDollar = yyS[yypt-6 : yypt+1] 817 //line a.y:194 818 { 819 outcode(obj.ADATA, &Addr2{yyDollar[2].addr, yyDollar[6].addr}) 820 if asm.Pass > 1 { 821 lastpc.From3.Type = obj.TYPE_CONST 822 lastpc.From3.Offset = yyDollar[4].lval 823 } 824 } 825 case 41: 826 yyDollar = yyS[yypt-5 : yypt+1] 827 //line a.y:204 828 { 829 asm.Settext(yyDollar[2].addr.Sym) 830 outcode(obj.ATEXT, &Addr2{yyDollar[2].addr, yyDollar[5].addr}) 831 } 832 case 42: 833 yyDollar = yyS[yypt-7 : yypt+1] 834 //line a.y:209 835 { 836 asm.Settext(yyDollar[2].addr.Sym) 837 outcode(obj.ATEXT, &Addr2{yyDollar[2].addr, yyDollar[7].addr}) 838 if asm.Pass > 1 { 839 lastpc.From3.Type = obj.TYPE_CONST 840 lastpc.From3.Offset = yyDollar[4].lval 841 } 842 } 843 case 43: 844 yyDollar = yyS[yypt-4 : yypt+1] 845 //line a.y:220 846 { 847 asm.Settext(yyDollar[2].addr.Sym) 848 outcode(obj.AGLOBL, &Addr2{yyDollar[2].addr, yyDollar[4].addr}) 849 } 850 case 44: 851 yyDollar = yyS[yypt-6 : yypt+1] 852 //line a.y:225 853 { 854 asm.Settext(yyDollar[2].addr.Sym) 855 outcode(obj.AGLOBL, &Addr2{yyDollar[2].addr, yyDollar[6].addr}) 856 if asm.Pass > 1 { 857 lastpc.From3.Type = obj.TYPE_CONST 858 lastpc.From3.Offset = yyDollar[4].lval 859 } 860 } 861 case 45: 862 yyDollar = yyS[yypt-2 : yypt+1] 863 //line a.y:237 864 { 865 yyVAL.addr2.from = nullgen 866 yyVAL.addr2.to = yyDollar[2].addr 867 } 868 case 46: 869 yyDollar = yyS[yypt-1 : yypt+1] 870 //line a.y:242 871 { 872 yyVAL.addr2.from = nullgen 873 yyVAL.addr2.to = yyDollar[1].addr 874 } 875 case 47: 876 yyDollar = yyS[yypt-2 : yypt+1] 877 //line a.y:247 878 { 879 yyVAL.addr2.from = nullgen 880 yyVAL.addr2.to = yyDollar[2].addr 881 yyVAL.addr2.to.Type = obj.TYPE_INDIR 882 } 883 case 48: 884 yyVAL.addr2 = yyS[yypt-0].addr2 885 case 49: 886 yyVAL.addr2 = yyS[yypt-0].addr2 887 case 50: 888 yyDollar = yyS[yypt-3 : yypt+1] 889 //line a.y:259 890 { 891 yyVAL.addr2.from = yyDollar[1].addr 892 yyVAL.addr2.to = yyDollar[3].addr 893 } 894 case 51: 895 yyDollar = yyS[yypt-5 : yypt+1] 896 //line a.y:264 897 { 898 yyVAL.addr2.from = yyDollar[1].addr 899 yyVAL.addr2.to = yyDollar[3].addr 900 if yyVAL.addr2.from.Index != obj.TYPE_NONE { 901 yyerror("dp shift with lhs index") 902 } 903 yyVAL.addr2.from.Index = int16(yyDollar[5].lval) 904 } 905 case 52: 906 yyDollar = yyS[yypt-3 : yypt+1] 907 //line a.y:275 908 { 909 yyVAL.addr2.from = yyDollar[1].addr 910 yyVAL.addr2.to = yyDollar[3].addr 911 } 912 case 53: 913 yyDollar = yyS[yypt-5 : yypt+1] 914 //line a.y:280 915 { 916 yyVAL.addr2.from = yyDollar[1].addr 917 yyVAL.addr2.to = yyDollar[3].addr 918 if yyVAL.addr2.to.Index != obj.TYPE_NONE { 919 yyerror("dp move with lhs index") 920 } 921 yyVAL.addr2.to.Index = int16(yyDollar[5].lval) 922 } 923 case 54: 924 yyDollar = yyS[yypt-2 : yypt+1] 925 //line a.y:291 926 { 927 yyVAL.addr2.from = yyDollar[1].addr 928 yyVAL.addr2.to = nullgen 929 } 930 case 55: 931 yyDollar = yyS[yypt-1 : yypt+1] 932 //line a.y:296 933 { 934 yyVAL.addr2.from = yyDollar[1].addr 935 yyVAL.addr2.to = nullgen 936 } 937 case 56: 938 yyDollar = yyS[yypt-3 : yypt+1] 939 //line a.y:301 940 { 941 yyVAL.addr2.from = yyDollar[1].addr 942 yyVAL.addr2.to = yyDollar[3].addr 943 } 944 case 57: 945 yyDollar = yyS[yypt-5 : yypt+1] 946 //line a.y:308 947 { 948 yyVAL.addr2.from = yyDollar[1].addr 949 yyVAL.addr2.to = yyDollar[3].addr 950 yyVAL.addr2.to.Offset = yyDollar[5].lval 951 } 952 case 58: 953 yyDollar = yyS[yypt-5 : yypt+1] 954 //line a.y:316 955 { 956 yyVAL.addr2.from = yyDollar[3].addr 957 yyVAL.addr2.to = yyDollar[5].addr 958 if yyDollar[1].addr.Type != obj.TYPE_CONST { 959 yyerror("illegal constant") 960 } 961 yyVAL.addr2.to.Offset = yyDollar[1].addr.Offset 962 } 963 case 59: 964 yyDollar = yyS[yypt-3 : yypt+1] 965 //line a.y:327 966 { 967 if yyDollar[1].addr.Type != obj.TYPE_CONST || yyDollar[3].addr.Type != obj.TYPE_CONST { 968 yyerror("arguments to PCDATA must be integer constants") 969 } 970 yyVAL.addr2.from = yyDollar[1].addr 971 yyVAL.addr2.to = yyDollar[3].addr 972 } 973 case 60: 974 yyDollar = yyS[yypt-3 : yypt+1] 975 //line a.y:337 976 { 977 if yyDollar[1].addr.Type != obj.TYPE_CONST { 978 yyerror("index for FUNCDATA must be integer constant") 979 } 980 if yyDollar[3].addr.Type != obj.TYPE_MEM || (yyDollar[3].addr.Name != obj.NAME_EXTERN && yyDollar[3].addr.Name != obj.NAME_STATIC) { 981 yyerror("value for FUNCDATA must be symbol reference") 982 } 983 yyVAL.addr2.from = yyDollar[1].addr 984 yyVAL.addr2.to = yyDollar[3].addr 985 } 986 case 61: 987 yyVAL.addr = yyS[yypt-0].addr 988 case 62: 989 yyVAL.addr = yyS[yypt-0].addr 990 case 63: 991 yyVAL.addr = yyS[yypt-0].addr 992 case 64: 993 yyVAL.addr = yyS[yypt-0].addr 994 case 65: 995 yyDollar = yyS[yypt-2 : yypt+1] 996 //line a.y:356 997 { 998 yyVAL.addr = yyDollar[2].addr 999 } 1000 case 66: 1001 yyDollar = yyS[yypt-2 : yypt+1] 1002 //line a.y:360 1003 { 1004 yyVAL.addr = yyDollar[2].addr 1005 } 1006 case 67: 1007 yyVAL.addr = yyS[yypt-0].addr 1008 case 68: 1009 yyVAL.addr = yyS[yypt-0].addr 1010 case 69: 1011 yyVAL.addr = yyS[yypt-0].addr 1012 case 70: 1013 yyVAL.addr = yyS[yypt-0].addr 1014 case 71: 1015 yyVAL.addr = yyS[yypt-0].addr 1016 case 72: 1017 yyDollar = yyS[yypt-4 : yypt+1] 1018 //line a.y:373 1019 { 1020 yyVAL.addr = nullgen 1021 yyVAL.addr.Type = obj.TYPE_BRANCH 1022 yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC) 1023 } 1024 case 73: 1025 yyDollar = yyS[yypt-2 : yypt+1] 1026 //line a.y:379 1027 { 1028 yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym) 1029 yyVAL.addr = nullgen 1030 if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB { 1031 yyerror("undefined label: %s", yyDollar[1].sym.Labelname) 1032 } 1033 yyVAL.addr.Type = obj.TYPE_BRANCH 1034 yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval 1035 } 1036 case 74: 1037 yyDollar = yyS[yypt-1 : yypt+1] 1038 //line a.y:391 1039 { 1040 yyVAL.addr = nullgen 1041 yyVAL.addr.Type = obj.TYPE_REG 1042 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1043 } 1044 case 75: 1045 yyDollar = yyS[yypt-1 : yypt+1] 1046 //line a.y:397 1047 { 1048 yyVAL.addr = nullgen 1049 yyVAL.addr.Type = obj.TYPE_REG 1050 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1051 } 1052 case 76: 1053 yyDollar = yyS[yypt-1 : yypt+1] 1054 //line a.y:403 1055 { 1056 yyVAL.addr = nullgen 1057 yyVAL.addr.Type = obj.TYPE_REG 1058 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1059 } 1060 case 77: 1061 yyDollar = yyS[yypt-1 : yypt+1] 1062 //line a.y:409 1063 { 1064 yyVAL.addr = nullgen 1065 yyVAL.addr.Type = obj.TYPE_REG 1066 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1067 } 1068 case 78: 1069 yyDollar = yyS[yypt-1 : yypt+1] 1070 //line a.y:415 1071 { 1072 yyVAL.addr = nullgen 1073 yyVAL.addr.Type = obj.TYPE_REG 1074 yyVAL.addr.Reg = REG_SP 1075 } 1076 case 79: 1077 yyDollar = yyS[yypt-1 : yypt+1] 1078 //line a.y:421 1079 { 1080 yyVAL.addr = nullgen 1081 yyVAL.addr.Type = obj.TYPE_REG 1082 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1083 } 1084 case 80: 1085 yyDollar = yyS[yypt-2 : yypt+1] 1086 //line a.y:429 1087 { 1088 yyVAL.addr = nullgen 1089 yyVAL.addr.Type = obj.TYPE_CONST 1090 yyVAL.addr.Offset = yyDollar[2].lval 1091 } 1092 case 81: 1093 yyDollar = yyS[yypt-2 : yypt+1] 1094 //line a.y:435 1095 { 1096 yyVAL.addr = yyDollar[2].addr 1097 yyVAL.addr.Type = obj.TYPE_ADDR 1098 /* 1099 if($2.Type == D_AUTO || $2.Type == D_PARAM) 1100 yyerror("constant cannot be automatic: %s", 1101 $2.Sym.name); 1102 */ 1103 } 1104 case 82: 1105 yyDollar = yyS[yypt-2 : yypt+1] 1106 //line a.y:444 1107 { 1108 yyVAL.addr = nullgen 1109 yyVAL.addr.Type = obj.TYPE_SCONST 1110 yyVAL.addr.Val = yyDollar[2].sval 1111 } 1112 case 83: 1113 yyDollar = yyS[yypt-2 : yypt+1] 1114 //line a.y:450 1115 { 1116 yyVAL.addr = nullgen 1117 yyVAL.addr.Type = obj.TYPE_FCONST 1118 yyVAL.addr.Val = yyDollar[2].dval 1119 } 1120 case 84: 1121 yyDollar = yyS[yypt-4 : yypt+1] 1122 //line a.y:456 1123 { 1124 yyVAL.addr = nullgen 1125 yyVAL.addr.Type = obj.TYPE_FCONST 1126 yyVAL.addr.Val = yyDollar[3].dval 1127 } 1128 case 85: 1129 yyDollar = yyS[yypt-5 : yypt+1] 1130 //line a.y:462 1131 { 1132 yyVAL.addr = nullgen 1133 yyVAL.addr.Type = obj.TYPE_FCONST 1134 yyVAL.addr.Val = -yyDollar[4].dval 1135 } 1136 case 86: 1137 yyDollar = yyS[yypt-3 : yypt+1] 1138 //line a.y:468 1139 { 1140 yyVAL.addr = nullgen 1141 yyVAL.addr.Type = obj.TYPE_FCONST 1142 yyVAL.addr.Val = -yyDollar[3].dval 1143 } 1144 case 87: 1145 yyDollar = yyS[yypt-1 : yypt+1] 1146 //line a.y:476 1147 { 1148 yyVAL.addr = nullgen 1149 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1150 yyVAL.addr.Offset = yyDollar[1].lval 1151 yyVAL.addr.Val = int32(obj.ArgsSizeUnknown) 1152 } 1153 case 88: 1154 yyDollar = yyS[yypt-2 : yypt+1] 1155 //line a.y:483 1156 { 1157 yyVAL.addr = nullgen 1158 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1159 yyVAL.addr.Offset = -yyDollar[2].lval 1160 yyVAL.addr.Val = int32(obj.ArgsSizeUnknown) 1161 } 1162 case 89: 1163 yyDollar = yyS[yypt-3 : yypt+1] 1164 //line a.y:490 1165 { 1166 yyVAL.addr = nullgen 1167 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1168 yyVAL.addr.Offset = yyDollar[1].lval 1169 yyVAL.addr.Val = int32(yyDollar[3].lval) 1170 } 1171 case 90: 1172 yyDollar = yyS[yypt-4 : yypt+1] 1173 //line a.y:497 1174 { 1175 yyVAL.addr = nullgen 1176 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1177 yyVAL.addr.Offset = -yyDollar[2].lval 1178 yyVAL.addr.Val = int32(yyDollar[4].lval) 1179 } 1180 case 91: 1181 yyVAL.addr = yyS[yypt-0].addr 1182 case 92: 1183 yyVAL.addr = yyS[yypt-0].addr 1184 case 93: 1185 yyDollar = yyS[yypt-1 : yypt+1] 1186 //line a.y:511 1187 { 1188 yyVAL.addr = nullgen 1189 yyVAL.addr.Type = obj.TYPE_MEM 1190 yyVAL.addr.Offset = yyDollar[1].lval 1191 } 1192 case 94: 1193 yyDollar = yyS[yypt-4 : yypt+1] 1194 //line a.y:517 1195 { 1196 yyVAL.addr = nullgen 1197 yyVAL.addr.Type = obj.TYPE_MEM 1198 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1199 yyVAL.addr.Offset = yyDollar[1].lval 1200 } 1201 case 95: 1202 yyDollar = yyS[yypt-4 : yypt+1] 1203 //line a.y:524 1204 { 1205 yyVAL.addr = nullgen 1206 yyVAL.addr.Type = obj.TYPE_MEM 1207 yyVAL.addr.Reg = REG_SP 1208 yyVAL.addr.Offset = yyDollar[1].lval 1209 } 1210 case 96: 1211 yyDollar = yyS[yypt-6 : yypt+1] 1212 //line a.y:531 1213 { 1214 yyVAL.addr = nullgen 1215 yyVAL.addr.Type = obj.TYPE_MEM 1216 yyVAL.addr.Offset = yyDollar[1].lval 1217 yyVAL.addr.Index = int16(yyDollar[3].lval) 1218 yyVAL.addr.Scale = int16(yyDollar[5].lval) 1219 checkscale(yyVAL.addr.Scale) 1220 } 1221 case 97: 1222 yyDollar = yyS[yypt-9 : yypt+1] 1223 //line a.y:540 1224 { 1225 yyVAL.addr = nullgen 1226 yyVAL.addr.Type = obj.TYPE_MEM 1227 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1228 yyVAL.addr.Offset = yyDollar[1].lval 1229 yyVAL.addr.Index = int16(yyDollar[6].lval) 1230 yyVAL.addr.Scale = int16(yyDollar[8].lval) 1231 checkscale(yyVAL.addr.Scale) 1232 } 1233 case 98: 1234 yyDollar = yyS[yypt-9 : yypt+1] 1235 //line a.y:550 1236 { 1237 yyVAL.addr = nullgen 1238 yyVAL.addr.Type = obj.TYPE_MEM 1239 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1240 yyVAL.addr.Offset = yyDollar[1].lval 1241 yyVAL.addr.Index = int16(yyDollar[6].lval) 1242 yyVAL.addr.Scale = int16(yyDollar[8].lval) 1243 checkscale(yyVAL.addr.Scale) 1244 } 1245 case 99: 1246 yyDollar = yyS[yypt-3 : yypt+1] 1247 //line a.y:560 1248 { 1249 yyVAL.addr = nullgen 1250 yyVAL.addr.Type = obj.TYPE_MEM 1251 yyVAL.addr.Reg = int16(yyDollar[2].lval) 1252 } 1253 case 100: 1254 yyDollar = yyS[yypt-3 : yypt+1] 1255 //line a.y:566 1256 { 1257 yyVAL.addr = nullgen 1258 yyVAL.addr.Type = obj.TYPE_MEM 1259 yyVAL.addr.Reg = REG_SP 1260 } 1261 case 101: 1262 yyDollar = yyS[yypt-4 : yypt+1] 1263 //line a.y:572 1264 { 1265 yyVAL.addr = nullgen 1266 yyVAL.addr.Type = obj.TYPE_MEM 1267 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1268 yyVAL.addr.Offset = yyDollar[1].lval 1269 } 1270 case 102: 1271 yyDollar = yyS[yypt-5 : yypt+1] 1272 //line a.y:579 1273 { 1274 yyVAL.addr = nullgen 1275 yyVAL.addr.Type = obj.TYPE_MEM 1276 yyVAL.addr.Index = int16(yyDollar[2].lval) 1277 yyVAL.addr.Scale = int16(yyDollar[4].lval) 1278 checkscale(yyVAL.addr.Scale) 1279 } 1280 case 103: 1281 yyDollar = yyS[yypt-8 : yypt+1] 1282 //line a.y:587 1283 { 1284 yyVAL.addr = nullgen 1285 yyVAL.addr.Type = obj.TYPE_MEM 1286 yyVAL.addr.Reg = int16(yyDollar[2].lval) 1287 yyVAL.addr.Index = int16(yyDollar[5].lval) 1288 yyVAL.addr.Scale = int16(yyDollar[7].lval) 1289 checkscale(yyVAL.addr.Scale) 1290 } 1291 case 104: 1292 yyDollar = yyS[yypt-1 : yypt+1] 1293 //line a.y:598 1294 { 1295 yyVAL.addr = yyDollar[1].addr 1296 } 1297 case 105: 1298 yyDollar = yyS[yypt-6 : yypt+1] 1299 //line a.y:602 1300 { 1301 yyVAL.addr = yyDollar[1].addr 1302 yyVAL.addr.Index = int16(yyDollar[3].lval) 1303 yyVAL.addr.Scale = int16(yyDollar[5].lval) 1304 checkscale(yyVAL.addr.Scale) 1305 } 1306 case 106: 1307 yyDollar = yyS[yypt-5 : yypt+1] 1308 //line a.y:611 1309 { 1310 yyVAL.addr = nullgen 1311 yyVAL.addr.Type = obj.TYPE_MEM 1312 yyVAL.addr.Name = int8(yyDollar[4].lval) 1313 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0) 1314 yyVAL.addr.Offset = yyDollar[2].lval 1315 } 1316 case 107: 1317 yyDollar = yyS[yypt-7 : yypt+1] 1318 //line a.y:619 1319 { 1320 yyVAL.addr = nullgen 1321 yyVAL.addr.Type = obj.TYPE_MEM 1322 yyVAL.addr.Name = obj.NAME_STATIC 1323 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1) 1324 yyVAL.addr.Offset = yyDollar[4].lval 1325 } 1326 case 108: 1327 yyDollar = yyS[yypt-0 : yypt+1] 1328 //line a.y:628 1329 { 1330 yyVAL.lval = 0 1331 } 1332 case 109: 1333 yyDollar = yyS[yypt-2 : yypt+1] 1334 //line a.y:632 1335 { 1336 yyVAL.lval = yyDollar[2].lval 1337 } 1338 case 110: 1339 yyDollar = yyS[yypt-2 : yypt+1] 1340 //line a.y:636 1341 { 1342 yyVAL.lval = -yyDollar[2].lval 1343 } 1344 case 111: 1345 yyVAL.lval = yyS[yypt-0].lval 1346 case 112: 1347 yyDollar = yyS[yypt-1 : yypt+1] 1348 //line a.y:643 1349 { 1350 yyVAL.lval = obj.NAME_AUTO 1351 } 1352 case 113: 1353 yyVAL.lval = yyS[yypt-0].lval 1354 case 114: 1355 yyVAL.lval = yyS[yypt-0].lval 1356 case 115: 1357 yyDollar = yyS[yypt-1 : yypt+1] 1358 //line a.y:651 1359 { 1360 yyVAL.lval = yyDollar[1].sym.Value 1361 } 1362 case 116: 1363 yyDollar = yyS[yypt-2 : yypt+1] 1364 //line a.y:655 1365 { 1366 yyVAL.lval = -yyDollar[2].lval 1367 } 1368 case 117: 1369 yyDollar = yyS[yypt-2 : yypt+1] 1370 //line a.y:659 1371 { 1372 yyVAL.lval = yyDollar[2].lval 1373 } 1374 case 118: 1375 yyDollar = yyS[yypt-2 : yypt+1] 1376 //line a.y:663 1377 { 1378 yyVAL.lval = ^yyDollar[2].lval 1379 } 1380 case 119: 1381 yyDollar = yyS[yypt-3 : yypt+1] 1382 //line a.y:667 1383 { 1384 yyVAL.lval = yyDollar[2].lval 1385 } 1386 case 120: 1387 yyVAL.lval = yyS[yypt-0].lval 1388 case 121: 1389 yyDollar = yyS[yypt-3 : yypt+1] 1390 //line a.y:674 1391 { 1392 yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval 1393 } 1394 case 122: 1395 yyDollar = yyS[yypt-3 : yypt+1] 1396 //line a.y:678 1397 { 1398 yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval 1399 } 1400 case 123: 1401 yyDollar = yyS[yypt-3 : yypt+1] 1402 //line a.y:682 1403 { 1404 yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval 1405 } 1406 case 124: 1407 yyDollar = yyS[yypt-3 : yypt+1] 1408 //line a.y:686 1409 { 1410 yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval 1411 } 1412 case 125: 1413 yyDollar = yyS[yypt-3 : yypt+1] 1414 //line a.y:690 1415 { 1416 yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval 1417 } 1418 case 126: 1419 yyDollar = yyS[yypt-4 : yypt+1] 1420 //line a.y:694 1421 { 1422 yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval) 1423 } 1424 case 127: 1425 yyDollar = yyS[yypt-4 : yypt+1] 1426 //line a.y:698 1427 { 1428 yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval) 1429 } 1430 case 128: 1431 yyDollar = yyS[yypt-3 : yypt+1] 1432 //line a.y:702 1433 { 1434 yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval 1435 } 1436 case 129: 1437 yyDollar = yyS[yypt-3 : yypt+1] 1438 //line a.y:706 1439 { 1440 yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval 1441 } 1442 case 130: 1443 yyDollar = yyS[yypt-3 : yypt+1] 1444 //line a.y:710 1445 { 1446 yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval 1447 } 1448 } 1449 goto yystack /* stack new state and value */ 1450 }