rsc.io/go@v0.0.0-20150416155037-e040fd465409/src/cmd/old6a/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 dval float64 19 sval string 20 addr obj.Addr 21 addr2 Addr2 22 } 23 24 const LTYPE0 = 57346 25 const LTYPE1 = 57347 26 const LTYPE2 = 57348 27 const LTYPE3 = 57349 28 const LTYPE4 = 57350 29 const LTYPEC = 57351 30 const LTYPED = 57352 31 const LTYPEN = 57353 32 const LTYPER = 57354 33 const LTYPET = 57355 34 const LTYPEG = 57356 35 const LTYPEPC = 57357 36 const LTYPES = 57358 37 const LTYPEM = 57359 38 const LTYPEI = 57360 39 const LTYPEXC = 57361 40 const LTYPEX = 57362 41 const LTYPERT = 57363 42 const LTYPEF = 57364 43 const LCONST = 57365 44 const LFP = 57366 45 const LPC = 57367 46 const LSB = 57368 47 const LBREG = 57369 48 const LLREG = 57370 49 const LSREG = 57371 50 const LFREG = 57372 51 const LMREG = 57373 52 const LXREG = 57374 53 const LFCONST = 57375 54 const LSCONST = 57376 55 const LSP = 57377 56 const LNAME = 57378 57 const LLAB = 57379 58 const LVAR = 57380 59 60 var yyToknames = []string{ 61 "'|'", 62 "'^'", 63 "'&'", 64 "'<'", 65 "'>'", 66 "'+'", 67 "'-'", 68 "'*'", 69 "'/'", 70 "'%'", 71 "LTYPE0", 72 "LTYPE1", 73 "LTYPE2", 74 "LTYPE3", 75 "LTYPE4", 76 "LTYPEC", 77 "LTYPED", 78 "LTYPEN", 79 "LTYPER", 80 "LTYPET", 81 "LTYPEG", 82 "LTYPEPC", 83 "LTYPES", 84 "LTYPEM", 85 "LTYPEI", 86 "LTYPEXC", 87 "LTYPEX", 88 "LTYPERT", 89 "LTYPEF", 90 "LCONST", 91 "LFP", 92 "LPC", 93 "LSB", 94 "LBREG", 95 "LLREG", 96 "LSREG", 97 "LFREG", 98 "LMREG", 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 = 133 121 const yyPrivate = 57344 122 123 var yyTokenNames []string 124 var yyStates []string 125 126 const yyLast = 593 127 128 var yyAct = []int{ 129 130 52, 227, 41, 3, 80, 208, 269, 64, 123, 50, 131 51, 79, 54, 170, 268, 74, 267, 118, 85, 72, 132 83, 263, 73, 255, 253, 241, 239, 84, 81, 237, 133 221, 100, 102, 112, 219, 210, 112, 209, 171, 240, 134 234, 107, 211, 62, 174, 143, 138, 119, 65, 207, 135 111, 115, 249, 113, 112, 231, 67, 169, 120, 121, 136 122, 230, 226, 92, 94, 96, 128, 225, 224, 154, 137 104, 106, 74, 58, 57, 153, 136, 112, 129, 85, 138 151, 83, 150, 149, 139, 141, 148, 147, 84, 81, 139 140, 146, 142, 145, 137, 144, 63, 55, 58, 57, 140 135, 43, 45, 48, 44, 46, 49, 40, 134, 47, 141 69, 127, 56, 37, 155, 40, 35, 34, 53, 98, 142 59, 31, 55, 32, 33, 223, 176, 177, 222, 217, 143 60, 215, 220, 112, 120, 243, 114, 56, 74, 242, 144 216, 236, 183, 76, 173, 59, 58, 57, 256, 166, 145 168, 188, 184, 192, 194, 196, 167, 112, 112, 112, 146 112, 112, 195, 229, 112, 112, 112, 258, 58, 57, 147 55, 212, 251, 252, 197, 198, 199, 200, 201, 182, 148 120, 204, 205, 206, 218, 56, 228, 114, 264, 257, 149 65, 76, 55, 59, 190, 191, 184, 248, 38, 166, 150 168, 152, 42, 112, 112, 75, 167, 56, 36, 235, 151 261, 71, 65, 76, 238, 59, 124, 89, 125, 126, 152 232, 233, 158, 159, 160, 244, 260, 88, 245, 254, 153 213, 181, 108, 109, 246, 125, 126, 247, 203, 250, 154 175, 202, 185, 186, 187, 25, 189, 16, 15, 6, 155 110, 259, 7, 2, 1, 262, 156, 157, 158, 159, 156 160, 265, 266, 105, 9, 10, 11, 12, 13, 17, 157 28, 18, 14, 29, 30, 26, 19, 20, 21, 22, 158 23, 24, 27, 58, 57, 82, 165, 164, 163, 161, 159 162, 156, 157, 158, 159, 160, 4, 103, 8, 101, 160 5, 99, 97, 58, 57, 95, 93, 55, 91, 87, 161 77, 43, 45, 48, 44, 46, 49, 68, 66, 47, 162 86, 61, 56, 70, 214, 0, 78, 55, 53, 0, 163 59, 43, 45, 48, 44, 46, 49, 172, 0, 47, 164 60, 0, 56, 58, 57, 82, 0, 65, 53, 0, 165 59, 43, 45, 48, 44, 46, 49, 0, 0, 47, 166 0, 0, 0, 58, 57, 0, 0, 55, 0, 0, 167 0, 43, 45, 48, 44, 46, 49, 0, 0, 47, 168 86, 0, 56, 58, 57, 0, 0, 55, 53, 0, 169 59, 43, 45, 48, 44, 46, 49, 0, 0, 47, 170 60, 0, 56, 58, 57, 0, 90, 55, 53, 0, 171 59, 43, 45, 48, 44, 46, 49, 58, 133, 47, 172 60, 0, 56, 0, 0, 0, 39, 55, 53, 0, 173 59, 43, 45, 48, 44, 46, 49, 58, 57, 47, 174 60, 55, 56, 0, 58, 57, 0, 0, 53, 0, 175 59, 131, 130, 0, 60, 0, 56, 58, 57, 0, 176 0, 55, 132, 0, 59, 0, 116, 0, 55, 58, 177 57, 0, 0, 117, 0, 0, 56, 0, 0, 0, 178 0, 55, 76, 56, 59, 58, 179, 0, 193, 76, 179 0, 59, 0, 55, 75, 0, 56, 58, 57, 0, 180 0, 0, 76, 180, 59, 0, 0, 0, 56, 55, 181 0, 58, 57, 0, 76, 0, 59, 0, 0, 178, 182 0, 55, 0, 0, 56, 0, 0, 0, 0, 0, 183 76, 0, 59, 0, 60, 55, 56, 0, 0, 0, 184 0, 0, 53, 0, 59, 0, 0, 0, 0, 0, 185 56, 0, 0, 0, 0, 0, 76, 0, 59, 165, 186 164, 163, 161, 162, 156, 157, 158, 159, 160, 164, 187 163, 161, 162, 156, 157, 158, 159, 160, 163, 161, 188 162, 156, 157, 158, 159, 160, 161, 162, 156, 157, 189 158, 159, 160, 190 } 191 var yyPact = []int{ 192 193 -1000, -1000, 250, -1000, 72, -1000, 74, 67, 65, 61, 194 374, 294, 294, 394, 159, -1000, -1000, 274, 354, 294, 195 294, 294, 394, -5, -5, -1000, 294, 294, 84, 488, 196 488, -1000, 502, -1000, -1000, 502, -1000, -1000, -1000, 394, 197 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 198 -1000, -1000, -3, 428, -7, -1000, -1000, 502, 502, 502, 199 209, -1000, 59, -1000, -1000, 408, -1000, 56, -1000, 48, 200 -1000, 448, -1000, 42, -8, 226, 502, -1000, 334, -1000, 201 -1000, -1000, 64, -1000, -1000, -9, 209, -1000, -1000, -1000, 202 394, -1000, 41, -1000, 39, -1000, 35, -1000, 34, -1000, 203 31, -1000, -1000, -1000, 30, -1000, 28, 189, 23, 17, 204 250, 555, -1000, 555, -1000, 111, 2, -17, 282, 106, 205 -1000, -1000, -1000, -10, 232, 502, 502, -1000, -1000, -1000, 206 -1000, -1000, 476, 460, 394, 294, -1000, 448, 117, -1000, 207 -1000, -1000, -1000, 161, -10, 394, 394, 394, 314, 394, 208 294, 294, 502, 435, 137, -1000, 502, 502, 502, 502, 209 502, 234, 230, 502, 502, 502, -6, -18, -20, -12, 210 502, -1000, -1000, 219, 95, 226, -1000, -1000, -21, 89, 211 -1000, -1000, -1000, -1000, -25, 79, 76, -1000, 16, 15, 212 -1000, -1000, 10, 153, 9, -1000, 3, 211, 211, -1000, 213 -1000, -1000, 502, 502, 579, 572, 564, -14, 502, -1000, 214 -1000, 103, -26, 502, -29, -1000, -1000, -1000, -15, -1000, 215 -30, -1000, 101, 96, 502, 314, -5, -1000, 227, 164, 216 -1, -5, 247, 247, 134, -31, 218, -1000, -32, -1000, 217 112, -1000, -1000, -1000, -1000, -1000, -1000, 156, 157, 153, 218 -1000, 215, 199, -1000, 502, -1000, -34, -1000, 155, -1000, 219 502, 502, -39, -1000, -1000, -41, -49, -1000, -1000, -1000, 220 } 221 var yyPgo = []int{ 222 223 0, 0, 17, 324, 8, 202, 7, 1, 2, 12, 224 4, 96, 43, 11, 9, 10, 208, 323, 198, 321, 225 318, 317, 310, 309, 308, 306, 305, 302, 301, 299, 226 297, 263, 254, 253, 3, 250, 249, 248, 247, 245, 227 } 228 var yyR1 = []int{ 229 230 0, 32, 33, 32, 35, 34, 34, 34, 34, 36, 231 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 232 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 233 16, 16, 20, 21, 19, 19, 18, 18, 17, 17, 234 17, 37, 38, 38, 39, 39, 22, 22, 23, 23, 235 24, 24, 25, 25, 26, 26, 26, 27, 28, 29, 236 29, 30, 31, 11, 11, 13, 13, 13, 13, 13, 237 13, 12, 12, 10, 10, 8, 8, 8, 8, 8, 238 8, 8, 6, 6, 6, 6, 6, 6, 6, 5, 239 5, 14, 14, 14, 14, 14, 14, 14, 14, 14, 240 14, 14, 15, 15, 9, 9, 4, 4, 4, 3, 241 3, 3, 1, 1, 1, 1, 1, 1, 7, 7, 242 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 243 2, 2, 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, 2, 2, 2, 1, 2, 2, 250 0, 1, 3, 3, 2, 1, 2, 1, 2, 1, 251 3, 6, 5, 7, 4, 6, 2, 1, 1, 1, 252 3, 5, 3, 5, 2, 1, 3, 5, 5, 0, 253 1, 3, 3, 1, 1, 1, 1, 2, 2, 1, 254 1, 1, 1, 4, 2, 1, 1, 1, 1, 1, 255 1, 1, 2, 2, 2, 2, 4, 5, 3, 1, 256 1, 1, 4, 4, 4, 6, 9, 9, 3, 3, 257 5, 8, 1, 6, 5, 7, 0, 2, 2, 1, 258 1, 1, 1, 1, 2, 2, 2, 3, 1, 2, 259 3, 4, 1, 3, 3, 3, 3, 3, 4, 4, 260 3, 3, 3, 261 } 262 var yyChk = []int{ 263 264 -1000, -32, -33, -34, 46, 50, -36, 2, 48, 14, 265 15, 16, 17, 18, 22, -37, -38, 19, 21, 26, 266 27, 28, 29, 30, 31, -39, 25, 32, 20, 23, 267 24, 49, 51, 50, 50, 51, -16, 52, -18, 52, 268 -11, -8, -5, 37, 40, 38, 41, 45, 39, 42, 269 -14, -15, -1, 54, -9, 33, 48, 10, 9, 56, 270 46, -19, -12, -11, -6, 53, -20, -12, -21, -11, 271 -17, 52, -10, -6, -1, 46, 54, -22, 52, -13, 272 -10, -15, 11, -8, -14, -1, 46, -23, -16, -18, 273 52, -24, -12, -25, -12, -26, -12, -27, -11, -28, 274 -6, -29, -6, -30, -12, -31, -12, -9, -5, -5, 275 -35, -2, -1, -2, -11, 54, 38, 45, -2, 54, 276 -1, -1, -1, -4, 7, 9, 10, 52, -1, -9, 277 44, 43, 54, 10, 52, 52, -10, 52, 54, -4, 278 -13, -8, -14, 54, -4, 52, 52, 52, 52, 52, 279 52, 52, 12, 52, 52, -34, 9, 10, 11, 12, 280 13, 7, 8, 6, 5, 4, 38, 45, 39, 55, 281 11, 55, 55, 38, 54, 8, -1, -1, 43, 10, 282 43, -11, -12, -10, 35, -11, -11, -11, -8, -11, 283 -12, -12, -1, 53, -1, -6, -1, -2, -2, -2, 284 -2, -2, 7, 8, -2, -2, -2, 55, 11, 55, 285 55, 54, -1, 11, -3, 36, 45, 34, -4, 55, 286 43, 55, 49, 49, 52, 52, 52, -7, 33, 10, 287 52, 52, -2, -2, 54, -1, 38, 55, -1, 55, 288 54, 55, 38, 39, -1, -8, -6, 10, 33, 53, 289 -6, 38, 39, 55, 11, 55, 36, 33, 10, -7, 290 11, 11, -1, 55, 33, -1, -1, 55, 55, 55, 291 } 292 var yyDef = []int{ 293 294 1, -2, 0, 3, 0, 6, 0, 0, 0, 30, 295 0, 0, 0, 0, 0, 17, 18, 0, 30, 0, 296 0, 0, 0, 0, 59, 27, 0, 0, 0, 0, 297 0, 4, 0, 7, 8, 0, 11, 31, 12, 0, 298 37, 63, 64, 75, 76, 77, 78, 79, 80, 81, 299 89, 90, 91, 0, 102, 112, 113, 0, 0, 0, 300 106, 13, 35, 71, 72, 0, 14, 0, 15, 0, 301 16, 0, 39, 0, 0, 106, 0, 19, 0, 47, 302 65, 66, 0, 69, 70, 91, 106, 20, 48, 49, 303 31, 21, 0, 22, 0, 23, 55, 24, 0, 25, 304 0, 26, 60, 28, 0, 29, 0, 0, 0, 0, 305 0, 9, 122, 10, 36, 0, 0, 0, 0, 0, 306 114, 115, 116, 0, 0, 0, 0, 34, 82, 83, 307 84, 85, 0, 0, 0, 0, 38, 0, 0, 74, 308 46, 67, 68, 0, 74, 0, 0, 54, 0, 0, 309 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 310 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 311 0, 99, 117, 0, 0, 106, 107, 108, 0, 0, 312 88, 32, 33, 40, 0, 50, 52, 56, 0, 0, 313 61, 62, 0, 0, 0, 44, 0, 123, 124, 125, 314 126, 127, 0, 0, 130, 131, 132, 92, 0, 93, 315 94, 0, 0, 0, 0, 109, 110, 111, 0, 86, 316 0, 73, 0, 0, 0, 0, 0, 42, 118, 0, 317 0, 0, 128, 129, 0, 0, 0, 100, 0, 104, 318 0, 87, 51, 53, 57, 58, 41, 0, 119, 0, 319 45, 0, 0, 95, 0, 103, 0, 120, 0, 43, 320 0, 0, 0, 105, 121, 0, 0, 101, 96, 97, 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, 53, 13, 6, 3, 328 54, 55, 11, 9, 52, 10, 3, 12, 3, 3, 329 3, 3, 3, 3, 3, 3, 3, 3, 49, 50, 330 7, 51, 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, 56, 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, 47, 48, 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:72 618 { 619 stmtline = asm.Lineno 620 } 621 case 4: 622 yyDollar = yyS[yypt-2 : yypt+1] 623 //line a.y:79 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 (%s)", yyDollar[1].sym.Labelname, yyDollar[1].sym.Name) 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:94 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:99 642 { 643 if yyDollar[1].sym.Value != 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:105 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:106 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:107 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:108 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:109 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:110 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:113 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:114 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:115 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:116 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:117 711 { 712 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 713 } 714 case 24: 715 yyDollar = yyS[yypt-2 : yypt+1] 716 //line a.y:118 717 { 718 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 719 } 720 case 25: 721 yyDollar = yyS[yypt-2 : yypt+1] 722 //line a.y:119 723 { 724 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 725 } 726 case 26: 727 yyDollar = yyS[yypt-2 : yypt+1] 728 //line a.y:120 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:122 735 { 736 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 737 } 738 case 29: 739 yyDollar = yyS[yypt-2 : yypt+1] 740 //line a.y:123 741 { 742 outcode(int(yyDollar[1].lval), &yyDollar[2].addr2) 743 } 744 case 30: 745 yyDollar = yyS[yypt-0 : yypt+1] 746 //line a.y:126 747 { 748 yyVAL.addr2.from = nullgen 749 yyVAL.addr2.to = nullgen 750 } 751 case 31: 752 yyDollar = yyS[yypt-1 : yypt+1] 753 //line a.y:131 754 { 755 yyVAL.addr2.from = nullgen 756 yyVAL.addr2.to = nullgen 757 } 758 case 32: 759 yyDollar = yyS[yypt-3 : yypt+1] 760 //line a.y:138 761 { 762 yyVAL.addr2.from = yyDollar[1].addr 763 yyVAL.addr2.to = yyDollar[3].addr 764 } 765 case 33: 766 yyDollar = yyS[yypt-3 : yypt+1] 767 //line a.y:145 768 { 769 yyVAL.addr2.from = yyDollar[1].addr 770 yyVAL.addr2.to = yyDollar[3].addr 771 } 772 case 34: 773 yyDollar = yyS[yypt-2 : yypt+1] 774 //line a.y:152 775 { 776 yyVAL.addr2.from = yyDollar[1].addr 777 yyVAL.addr2.to = nullgen 778 } 779 case 35: 780 yyDollar = yyS[yypt-1 : yypt+1] 781 //line a.y:157 782 { 783 yyVAL.addr2.from = yyDollar[1].addr 784 yyVAL.addr2.to = nullgen 785 } 786 case 36: 787 yyDollar = yyS[yypt-2 : yypt+1] 788 //line a.y:164 789 { 790 yyVAL.addr2.from = nullgen 791 yyVAL.addr2.to = yyDollar[2].addr 792 } 793 case 37: 794 yyDollar = yyS[yypt-1 : yypt+1] 795 //line a.y:169 796 { 797 yyVAL.addr2.from = nullgen 798 yyVAL.addr2.to = yyDollar[1].addr 799 } 800 case 38: 801 yyDollar = yyS[yypt-2 : yypt+1] 802 //line a.y:176 803 { 804 yyVAL.addr2.from = nullgen 805 yyVAL.addr2.to = yyDollar[2].addr 806 } 807 case 39: 808 yyDollar = yyS[yypt-1 : yypt+1] 809 //line a.y:181 810 { 811 yyVAL.addr2.from = nullgen 812 yyVAL.addr2.to = yyDollar[1].addr 813 } 814 case 40: 815 yyDollar = yyS[yypt-3 : yypt+1] 816 //line a.y:186 817 { 818 yyVAL.addr2.from = yyDollar[1].addr 819 yyVAL.addr2.to = yyDollar[3].addr 820 } 821 case 41: 822 yyDollar = yyS[yypt-6 : yypt+1] 823 //line a.y:193 824 { 825 var a Addr2 826 a.from = yyDollar[2].addr 827 a.to = yyDollar[6].addr 828 outcode(obj.ADATA, &a) 829 if asm.Pass > 1 { 830 lastpc.From3.Type = obj.TYPE_CONST 831 lastpc.From3.Offset = yyDollar[4].lval 832 } 833 } 834 case 42: 835 yyDollar = yyS[yypt-5 : yypt+1] 836 //line a.y:206 837 { 838 asm.Settext(yyDollar[2].addr.Sym) 839 outcode(obj.ATEXT, &Addr2{from: yyDollar[2].addr, to: yyDollar[5].addr}) 840 } 841 case 43: 842 yyDollar = yyS[yypt-7 : yypt+1] 843 //line a.y:211 844 { 845 asm.Settext(yyDollar[2].addr.Sym) 846 outcode(obj.ATEXT, &Addr2{from: yyDollar[2].addr, to: yyDollar[7].addr}) 847 if asm.Pass > 1 { 848 lastpc.From3.Type = obj.TYPE_CONST 849 lastpc.From3.Offset = yyDollar[4].lval 850 } 851 } 852 case 44: 853 yyDollar = yyS[yypt-4 : yypt+1] 854 //line a.y:222 855 { 856 asm.Settext(yyDollar[2].addr.Sym) 857 outcode(obj.AGLOBL, &Addr2{from: yyDollar[2].addr, to: yyDollar[4].addr}) 858 } 859 case 45: 860 yyDollar = yyS[yypt-6 : yypt+1] 861 //line a.y:227 862 { 863 asm.Settext(yyDollar[2].addr.Sym) 864 outcode(obj.AGLOBL, &Addr2{from: yyDollar[2].addr, to: yyDollar[6].addr}) 865 if asm.Pass > 1 { 866 lastpc.From3.Type = obj.TYPE_CONST 867 lastpc.From3.Offset = yyDollar[4].lval 868 } 869 } 870 case 46: 871 yyDollar = yyS[yypt-2 : yypt+1] 872 //line a.y:238 873 { 874 yyVAL.addr2.from = nullgen 875 yyVAL.addr2.to = yyDollar[2].addr 876 } 877 case 47: 878 yyDollar = yyS[yypt-1 : yypt+1] 879 //line a.y:243 880 { 881 yyVAL.addr2.from = nullgen 882 yyVAL.addr2.to = yyDollar[1].addr 883 } 884 case 48: 885 yyVAL.addr2 = yyS[yypt-0].addr2 886 case 49: 887 yyVAL.addr2 = yyS[yypt-0].addr2 888 case 50: 889 yyDollar = yyS[yypt-3 : yypt+1] 890 //line a.y:254 891 { 892 yyVAL.addr2.from = yyDollar[1].addr 893 yyVAL.addr2.to = yyDollar[3].addr 894 } 895 case 51: 896 yyDollar = yyS[yypt-5 : yypt+1] 897 //line a.y:259 898 { 899 yyVAL.addr2.from = yyDollar[1].addr 900 yyVAL.addr2.to = yyDollar[3].addr 901 if yyVAL.addr2.from.Index != obj.TYPE_NONE { 902 yyerror("dp shift with lhs index") 903 } 904 yyVAL.addr2.from.Index = int16(yyDollar[5].lval) 905 } 906 case 52: 907 yyDollar = yyS[yypt-3 : yypt+1] 908 //line a.y:270 909 { 910 yyVAL.addr2.from = yyDollar[1].addr 911 yyVAL.addr2.to = yyDollar[3].addr 912 } 913 case 53: 914 yyDollar = yyS[yypt-5 : yypt+1] 915 //line a.y:275 916 { 917 yyVAL.addr2.from = yyDollar[1].addr 918 yyVAL.addr2.to = yyDollar[3].addr 919 if yyVAL.addr2.to.Index != obj.TYPE_NONE { 920 yyerror("dp move with lhs index") 921 } 922 yyVAL.addr2.to.Index = int16(yyDollar[5].lval) 923 } 924 case 54: 925 yyDollar = yyS[yypt-2 : yypt+1] 926 //line a.y:286 927 { 928 yyVAL.addr2.from = yyDollar[1].addr 929 yyVAL.addr2.to = nullgen 930 } 931 case 55: 932 yyDollar = yyS[yypt-1 : yypt+1] 933 //line a.y:291 934 { 935 yyVAL.addr2.from = yyDollar[1].addr 936 yyVAL.addr2.to = nullgen 937 } 938 case 56: 939 yyDollar = yyS[yypt-3 : yypt+1] 940 //line a.y:296 941 { 942 yyVAL.addr2.from = yyDollar[1].addr 943 yyVAL.addr2.to = yyDollar[3].addr 944 } 945 case 57: 946 yyDollar = yyS[yypt-5 : yypt+1] 947 //line a.y:303 948 { 949 yyVAL.addr2.from = yyDollar[1].addr 950 yyVAL.addr2.from3 = yyDollar[3].addr 951 yyVAL.addr2.to.Type = obj.TYPE_MEM // to give library something to do 952 yyVAL.addr2.to.Offset = yyDollar[5].lval 953 } 954 case 58: 955 yyDollar = yyS[yypt-5 : yypt+1] 956 //line a.y:312 957 { 958 yyVAL.addr2.from = yyDollar[1].addr 959 yyVAL.addr2.from3 = yyDollar[3].addr 960 yyVAL.addr2.to = yyDollar[5].addr 961 } 962 case 59: 963 yyDollar = yyS[yypt-0 : yypt+1] 964 //line a.y:319 965 { 966 yyVAL.addr2.from = nullgen 967 yyVAL.addr2.to = nullgen 968 } 969 case 60: 970 yyDollar = yyS[yypt-1 : yypt+1] 971 //line a.y:324 972 { 973 yyVAL.addr2.from = yyDollar[1].addr 974 yyVAL.addr2.to = nullgen 975 } 976 case 61: 977 yyDollar = yyS[yypt-3 : yypt+1] 978 //line a.y:331 979 { 980 if yyDollar[1].addr.Type != obj.TYPE_CONST || yyDollar[3].addr.Type != obj.TYPE_CONST { 981 yyerror("arguments to asm.PCDATA must be integer constants") 982 } 983 yyVAL.addr2.from = yyDollar[1].addr 984 yyVAL.addr2.to = yyDollar[3].addr 985 } 986 case 62: 987 yyDollar = yyS[yypt-3 : yypt+1] 988 //line a.y:341 989 { 990 if yyDollar[1].addr.Type != obj.TYPE_CONST { 991 yyerror("index for FUNCDATA must be integer constant") 992 } 993 if yyDollar[3].addr.Type != obj.TYPE_MEM || (yyDollar[3].addr.Name != obj.NAME_EXTERN && yyDollar[3].addr.Name != obj.NAME_STATIC) { 994 yyerror("value for FUNCDATA must be symbol reference") 995 } 996 yyVAL.addr2.from = yyDollar[1].addr 997 yyVAL.addr2.to = yyDollar[3].addr 998 } 999 case 63: 1000 yyVAL.addr = yyS[yypt-0].addr 1001 case 64: 1002 yyVAL.addr = yyS[yypt-0].addr 1003 case 65: 1004 yyVAL.addr = yyS[yypt-0].addr 1005 case 66: 1006 yyVAL.addr = yyS[yypt-0].addr 1007 case 67: 1008 yyDollar = yyS[yypt-2 : yypt+1] 1009 //line a.y:360 1010 { 1011 yyVAL.addr = yyDollar[2].addr 1012 } 1013 case 68: 1014 yyDollar = yyS[yypt-2 : yypt+1] 1015 //line a.y:364 1016 { 1017 yyVAL.addr = yyDollar[2].addr 1018 } 1019 case 69: 1020 yyVAL.addr = yyS[yypt-0].addr 1021 case 70: 1022 yyVAL.addr = yyS[yypt-0].addr 1023 case 71: 1024 yyVAL.addr = yyS[yypt-0].addr 1025 case 72: 1026 yyVAL.addr = yyS[yypt-0].addr 1027 case 73: 1028 yyDollar = yyS[yypt-4 : yypt+1] 1029 //line a.y:376 1030 { 1031 yyVAL.addr = nullgen 1032 yyVAL.addr.Type = obj.TYPE_BRANCH 1033 yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC) 1034 } 1035 case 74: 1036 yyDollar = yyS[yypt-2 : yypt+1] 1037 //line a.y:382 1038 { 1039 yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym) 1040 yyVAL.addr = nullgen 1041 if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB { 1042 yyerror("undefined label: %s", yyDollar[1].sym.Labelname) 1043 } 1044 yyVAL.addr.Type = obj.TYPE_BRANCH 1045 yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval 1046 } 1047 case 75: 1048 yyDollar = yyS[yypt-1 : yypt+1] 1049 //line a.y:394 1050 { 1051 yyVAL.addr = nullgen 1052 yyVAL.addr.Type = obj.TYPE_REG 1053 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1054 } 1055 case 76: 1056 yyDollar = yyS[yypt-1 : yypt+1] 1057 //line a.y:400 1058 { 1059 yyVAL.addr = nullgen 1060 yyVAL.addr.Type = obj.TYPE_REG 1061 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1062 } 1063 case 77: 1064 yyDollar = yyS[yypt-1 : yypt+1] 1065 //line a.y:406 1066 { 1067 yyVAL.addr = nullgen 1068 yyVAL.addr.Type = obj.TYPE_REG 1069 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1070 } 1071 case 78: 1072 yyDollar = yyS[yypt-1 : yypt+1] 1073 //line a.y:412 1074 { 1075 yyVAL.addr = nullgen 1076 yyVAL.addr.Type = obj.TYPE_REG 1077 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1078 } 1079 case 79: 1080 yyDollar = yyS[yypt-1 : yypt+1] 1081 //line a.y:418 1082 { 1083 yyVAL.addr = nullgen 1084 yyVAL.addr.Type = obj.TYPE_REG 1085 yyVAL.addr.Reg = x86.REG_SP 1086 } 1087 case 80: 1088 yyDollar = yyS[yypt-1 : yypt+1] 1089 //line a.y:424 1090 { 1091 yyVAL.addr = nullgen 1092 yyVAL.addr.Type = obj.TYPE_REG 1093 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1094 } 1095 case 81: 1096 yyDollar = yyS[yypt-1 : yypt+1] 1097 //line a.y:430 1098 { 1099 yyVAL.addr = nullgen 1100 yyVAL.addr.Type = obj.TYPE_REG 1101 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1102 } 1103 case 82: 1104 yyDollar = yyS[yypt-2 : yypt+1] 1105 //line a.y:438 1106 { 1107 yyVAL.addr = nullgen 1108 yyVAL.addr.Type = obj.TYPE_CONST 1109 yyVAL.addr.Offset = yyDollar[2].lval 1110 } 1111 case 83: 1112 yyDollar = yyS[yypt-2 : yypt+1] 1113 //line a.y:444 1114 { 1115 yyVAL.addr = yyDollar[2].addr 1116 yyVAL.addr.Type = obj.TYPE_ADDR 1117 /* 1118 if($2.Type == x86.D_AUTO || $2.Type == x86.D_PARAM) 1119 yyerror("constant cannot be automatic: %s", 1120 $2.sym.Name); 1121 */ 1122 } 1123 case 84: 1124 yyDollar = yyS[yypt-2 : yypt+1] 1125 //line a.y:453 1126 { 1127 yyVAL.addr = nullgen 1128 yyVAL.addr.Type = obj.TYPE_SCONST 1129 yyVAL.addr.Val = (yyDollar[2].sval + "\x00\x00\x00\x00\x00\x00\x00\x00")[:8] 1130 } 1131 case 85: 1132 yyDollar = yyS[yypt-2 : yypt+1] 1133 //line a.y:459 1134 { 1135 yyVAL.addr = nullgen 1136 yyVAL.addr.Type = obj.TYPE_FCONST 1137 yyVAL.addr.Val = yyDollar[2].dval 1138 } 1139 case 86: 1140 yyDollar = yyS[yypt-4 : yypt+1] 1141 //line a.y:465 1142 { 1143 yyVAL.addr = nullgen 1144 yyVAL.addr.Type = obj.TYPE_FCONST 1145 yyVAL.addr.Val = yyDollar[3].dval 1146 } 1147 case 87: 1148 yyDollar = yyS[yypt-5 : yypt+1] 1149 //line a.y:471 1150 { 1151 yyVAL.addr = nullgen 1152 yyVAL.addr.Type = obj.TYPE_FCONST 1153 yyVAL.addr.Val = -yyDollar[4].dval 1154 } 1155 case 88: 1156 yyDollar = yyS[yypt-3 : yypt+1] 1157 //line a.y:477 1158 { 1159 yyVAL.addr = nullgen 1160 yyVAL.addr.Type = obj.TYPE_FCONST 1161 yyVAL.addr.Val = -yyDollar[3].dval 1162 } 1163 case 89: 1164 yyVAL.addr = yyS[yypt-0].addr 1165 case 90: 1166 yyVAL.addr = yyS[yypt-0].addr 1167 case 91: 1168 yyDollar = yyS[yypt-1 : yypt+1] 1169 //line a.y:489 1170 { 1171 yyVAL.addr = nullgen 1172 yyVAL.addr.Type = obj.TYPE_MEM 1173 yyVAL.addr.Offset = yyDollar[1].lval 1174 } 1175 case 92: 1176 yyDollar = yyS[yypt-4 : yypt+1] 1177 //line a.y:495 1178 { 1179 yyVAL.addr = nullgen 1180 yyVAL.addr.Type = obj.TYPE_MEM 1181 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1182 yyVAL.addr.Offset = yyDollar[1].lval 1183 } 1184 case 93: 1185 yyDollar = yyS[yypt-4 : yypt+1] 1186 //line a.y:502 1187 { 1188 yyVAL.addr = nullgen 1189 yyVAL.addr.Type = obj.TYPE_MEM 1190 yyVAL.addr.Reg = x86.REG_SP 1191 yyVAL.addr.Offset = yyDollar[1].lval 1192 } 1193 case 94: 1194 yyDollar = yyS[yypt-4 : yypt+1] 1195 //line a.y:509 1196 { 1197 yyVAL.addr = nullgen 1198 yyVAL.addr.Type = obj.TYPE_MEM 1199 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1200 yyVAL.addr.Offset = yyDollar[1].lval 1201 } 1202 case 95: 1203 yyDollar = yyS[yypt-6 : yypt+1] 1204 //line a.y:516 1205 { 1206 yyVAL.addr = nullgen 1207 yyVAL.addr.Type = obj.TYPE_MEM 1208 yyVAL.addr.Offset = yyDollar[1].lval 1209 yyVAL.addr.Index = int16(yyDollar[3].lval) 1210 yyVAL.addr.Scale = int16(yyDollar[5].lval) 1211 checkscale(yyVAL.addr.Scale) 1212 } 1213 case 96: 1214 yyDollar = yyS[yypt-9 : yypt+1] 1215 //line a.y:525 1216 { 1217 yyVAL.addr = nullgen 1218 yyVAL.addr.Type = obj.TYPE_MEM 1219 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1220 yyVAL.addr.Offset = yyDollar[1].lval 1221 yyVAL.addr.Index = int16(yyDollar[6].lval) 1222 yyVAL.addr.Scale = int16(yyDollar[8].lval) 1223 checkscale(yyVAL.addr.Scale) 1224 } 1225 case 97: 1226 yyDollar = yyS[yypt-9 : yypt+1] 1227 //line a.y:535 1228 { 1229 yyVAL.addr = nullgen 1230 yyVAL.addr.Type = obj.TYPE_MEM 1231 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1232 yyVAL.addr.Offset = yyDollar[1].lval 1233 yyVAL.addr.Index = int16(yyDollar[6].lval) 1234 yyVAL.addr.Scale = int16(yyDollar[8].lval) 1235 checkscale(yyVAL.addr.Scale) 1236 } 1237 case 98: 1238 yyDollar = yyS[yypt-3 : yypt+1] 1239 //line a.y:545 1240 { 1241 yyVAL.addr = nullgen 1242 yyVAL.addr.Type = obj.TYPE_MEM 1243 yyVAL.addr.Reg = int16(yyDollar[2].lval) 1244 } 1245 case 99: 1246 yyDollar = yyS[yypt-3 : yypt+1] 1247 //line a.y:551 1248 { 1249 yyVAL.addr = nullgen 1250 yyVAL.addr.Type = obj.TYPE_MEM 1251 yyVAL.addr.Reg = x86.REG_SP 1252 } 1253 case 100: 1254 yyDollar = yyS[yypt-5 : yypt+1] 1255 //line a.y:557 1256 { 1257 yyVAL.addr = nullgen 1258 yyVAL.addr.Type = obj.TYPE_MEM 1259 yyVAL.addr.Index = int16(yyDollar[2].lval) 1260 yyVAL.addr.Scale = int16(yyDollar[4].lval) 1261 checkscale(yyVAL.addr.Scale) 1262 } 1263 case 101: 1264 yyDollar = yyS[yypt-8 : yypt+1] 1265 //line a.y:565 1266 { 1267 yyVAL.addr = nullgen 1268 yyVAL.addr.Type = obj.TYPE_MEM 1269 yyVAL.addr.Reg = int16(yyDollar[2].lval) 1270 yyVAL.addr.Index = int16(yyDollar[5].lval) 1271 yyVAL.addr.Scale = int16(yyDollar[7].lval) 1272 checkscale(yyVAL.addr.Scale) 1273 } 1274 case 102: 1275 yyDollar = yyS[yypt-1 : yypt+1] 1276 //line a.y:576 1277 { 1278 yyVAL.addr = yyDollar[1].addr 1279 } 1280 case 103: 1281 yyDollar = yyS[yypt-6 : yypt+1] 1282 //line a.y:580 1283 { 1284 yyVAL.addr = yyDollar[1].addr 1285 yyVAL.addr.Index = int16(yyDollar[3].lval) 1286 yyVAL.addr.Scale = int16(yyDollar[5].lval) 1287 checkscale(yyVAL.addr.Scale) 1288 } 1289 case 104: 1290 yyDollar = yyS[yypt-5 : yypt+1] 1291 //line a.y:589 1292 { 1293 yyVAL.addr = nullgen 1294 yyVAL.addr.Type = obj.TYPE_MEM 1295 yyVAL.addr.Name = int8(yyDollar[4].lval) 1296 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0) 1297 yyVAL.addr.Offset = yyDollar[2].lval 1298 } 1299 case 105: 1300 yyDollar = yyS[yypt-7 : yypt+1] 1301 //line a.y:597 1302 { 1303 yyVAL.addr = nullgen 1304 yyVAL.addr.Type = obj.TYPE_MEM 1305 yyVAL.addr.Name = obj.NAME_STATIC 1306 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1) 1307 yyVAL.addr.Offset = yyDollar[4].lval 1308 } 1309 case 106: 1310 yyDollar = yyS[yypt-0 : yypt+1] 1311 //line a.y:606 1312 { 1313 yyVAL.lval = 0 1314 } 1315 case 107: 1316 yyDollar = yyS[yypt-2 : yypt+1] 1317 //line a.y:610 1318 { 1319 yyVAL.lval = yyDollar[2].lval 1320 } 1321 case 108: 1322 yyDollar = yyS[yypt-2 : yypt+1] 1323 //line a.y:614 1324 { 1325 yyVAL.lval = -yyDollar[2].lval 1326 } 1327 case 109: 1328 yyVAL.lval = yyS[yypt-0].lval 1329 case 110: 1330 yyDollar = yyS[yypt-1 : yypt+1] 1331 //line a.y:621 1332 { 1333 yyVAL.lval = obj.NAME_AUTO 1334 } 1335 case 111: 1336 yyVAL.lval = yyS[yypt-0].lval 1337 case 112: 1338 yyVAL.lval = yyS[yypt-0].lval 1339 case 113: 1340 yyDollar = yyS[yypt-1 : yypt+1] 1341 //line a.y:629 1342 { 1343 yyVAL.lval = yyDollar[1].sym.Value 1344 } 1345 case 114: 1346 yyDollar = yyS[yypt-2 : yypt+1] 1347 //line a.y:633 1348 { 1349 yyVAL.lval = -yyDollar[2].lval 1350 } 1351 case 115: 1352 yyDollar = yyS[yypt-2 : yypt+1] 1353 //line a.y:637 1354 { 1355 yyVAL.lval = yyDollar[2].lval 1356 } 1357 case 116: 1358 yyDollar = yyS[yypt-2 : yypt+1] 1359 //line a.y:641 1360 { 1361 yyVAL.lval = ^yyDollar[2].lval 1362 } 1363 case 117: 1364 yyDollar = yyS[yypt-3 : yypt+1] 1365 //line a.y:645 1366 { 1367 yyVAL.lval = yyDollar[2].lval 1368 } 1369 case 118: 1370 yyDollar = yyS[yypt-1 : yypt+1] 1371 //line a.y:651 1372 { 1373 yyVAL.addr = nullgen 1374 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1375 yyVAL.addr.Offset = yyDollar[1].lval 1376 yyVAL.addr.Val = int32(obj.ArgsSizeUnknown) 1377 } 1378 case 119: 1379 yyDollar = yyS[yypt-2 : yypt+1] 1380 //line a.y:658 1381 { 1382 yyVAL.addr = nullgen 1383 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1384 yyVAL.addr.Offset = -yyDollar[2].lval 1385 yyVAL.addr.Val = int32(obj.ArgsSizeUnknown) 1386 } 1387 case 120: 1388 yyDollar = yyS[yypt-3 : yypt+1] 1389 //line a.y:665 1390 { 1391 yyVAL.addr = nullgen 1392 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1393 yyVAL.addr.Offset = yyDollar[1].lval 1394 yyVAL.addr.Val = int32(yyDollar[3].lval) 1395 } 1396 case 121: 1397 yyDollar = yyS[yypt-4 : yypt+1] 1398 //line a.y:672 1399 { 1400 yyVAL.addr = nullgen 1401 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1402 yyVAL.addr.Offset = -yyDollar[2].lval 1403 yyVAL.addr.Val = int32(yyDollar[4].lval) 1404 } 1405 case 122: 1406 yyVAL.lval = yyS[yypt-0].lval 1407 case 123: 1408 yyDollar = yyS[yypt-3 : yypt+1] 1409 //line a.y:682 1410 { 1411 yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval 1412 } 1413 case 124: 1414 yyDollar = yyS[yypt-3 : yypt+1] 1415 //line a.y:686 1416 { 1417 yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval 1418 } 1419 case 125: 1420 yyDollar = yyS[yypt-3 : yypt+1] 1421 //line a.y:690 1422 { 1423 yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval 1424 } 1425 case 126: 1426 yyDollar = yyS[yypt-3 : yypt+1] 1427 //line a.y:694 1428 { 1429 yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval 1430 } 1431 case 127: 1432 yyDollar = yyS[yypt-3 : yypt+1] 1433 //line a.y:698 1434 { 1435 yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval 1436 } 1437 case 128: 1438 yyDollar = yyS[yypt-4 : yypt+1] 1439 //line a.y:702 1440 { 1441 yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval) 1442 } 1443 case 129: 1444 yyDollar = yyS[yypt-4 : yypt+1] 1445 //line a.y:706 1446 { 1447 yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval) 1448 } 1449 case 130: 1450 yyDollar = yyS[yypt-3 : yypt+1] 1451 //line a.y:710 1452 { 1453 yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval 1454 } 1455 case 131: 1456 yyDollar = yyS[yypt-3 : yypt+1] 1457 //line a.y:714 1458 { 1459 yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval 1460 } 1461 case 132: 1462 yyDollar = yyS[yypt-3 : yypt+1] 1463 //line a.y:718 1464 { 1465 yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval 1466 } 1467 } 1468 goto yystack /* stack new state and value */ 1469 }