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