rsc.io/go@v0.0.0-20150416155037-e040fd465409/src/cmd/old9a/y.go (about) 1 //line a.y:31 2 package main 3 4 import __yyfmt__ "fmt" 5 6 //line a.y:31 7 import ( 8 "cmd/internal/asm" 9 "cmd/internal/obj" 10 . "cmd/internal/obj/ppc64" 11 ) 12 13 //line a.y:40 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 } 22 23 const LMOVW = 57346 24 const LMOVB = 57347 25 const LABS = 57348 26 const LLOGW = 57349 27 const LSHW = 57350 28 const LADDW = 57351 29 const LCMP = 57352 30 const LCROP = 57353 31 const LBRA = 57354 32 const LFMOV = 57355 33 const LFCONV = 57356 34 const LFCMP = 57357 35 const LFADD = 57358 36 const LFMA = 57359 37 const LTRAP = 57360 38 const LXORW = 57361 39 const LNOP = 57362 40 const LEND = 57363 41 const LRETT = 57364 42 const LWORD = 57365 43 const LTEXT = 57366 44 const LDATA = 57367 45 const LGLOBL = 57368 46 const LRETRN = 57369 47 const LCONST = 57370 48 const LSP = 57371 49 const LSB = 57372 50 const LFP = 57373 51 const LPC = 57374 52 const LCREG = 57375 53 const LFLUSH = 57376 54 const LREG = 57377 55 const LFREG = 57378 56 const LR = 57379 57 const LCR = 57380 58 const LF = 57381 59 const LFPSCR = 57382 60 const LLR = 57383 61 const LCTR = 57384 62 const LSPR = 57385 63 const LSPREG = 57386 64 const LSEG = 57387 65 const LMSR = 57388 66 const LPCDAT = 57389 67 const LFUNCDAT = 57390 68 const LSCHED = 57391 69 const LXLD = 57392 70 const LXST = 57393 71 const LXOP = 57394 72 const LXMV = 57395 73 const LRLWM = 57396 74 const LMOVMW = 57397 75 const LMOVEM = 57398 76 const LMOVFL = 57399 77 const LMTFSB = 57400 78 const LMA = 57401 79 const LFCONST = 57402 80 const LSCONST = 57403 81 const LNAME = 57404 82 const LLAB = 57405 83 const LVAR = 57406 84 85 var yyToknames = []string{ 86 "'|'", 87 "'^'", 88 "'&'", 89 "'<'", 90 "'>'", 91 "'+'", 92 "'-'", 93 "'*'", 94 "'/'", 95 "'%'", 96 "LMOVW", 97 "LMOVB", 98 "LABS", 99 "LLOGW", 100 "LSHW", 101 "LADDW", 102 "LCMP", 103 "LCROP", 104 "LBRA", 105 "LFMOV", 106 "LFCONV", 107 "LFCMP", 108 "LFADD", 109 "LFMA", 110 "LTRAP", 111 "LXORW", 112 "LNOP", 113 "LEND", 114 "LRETT", 115 "LWORD", 116 "LTEXT", 117 "LDATA", 118 "LGLOBL", 119 "LRETRN", 120 "LCONST", 121 "LSP", 122 "LSB", 123 "LFP", 124 "LPC", 125 "LCREG", 126 "LFLUSH", 127 "LREG", 128 "LFREG", 129 "LR", 130 "LCR", 131 "LF", 132 "LFPSCR", 133 "LLR", 134 "LCTR", 135 "LSPR", 136 "LSPREG", 137 "LSEG", 138 "LMSR", 139 "LPCDAT", 140 "LFUNCDAT", 141 "LSCHED", 142 "LXLD", 143 "LXST", 144 "LXOP", 145 "LXMV", 146 "LRLWM", 147 "LMOVMW", 148 "LMOVEM", 149 "LMOVFL", 150 "LMTFSB", 151 "LMA", 152 "LFCONST", 153 "LSCONST", 154 "LNAME", 155 "LLAB", 156 "LVAR", 157 } 158 var yyStatenames = []string{} 159 160 const yyEofCode = 1 161 const yyErrCode = 2 162 const yyMaxDepth = 200 163 164 //line yacctab:1 165 var yyExca = []int{ 166 -1, 1, 167 1, -1, 168 -2, 2, 169 } 170 171 const yyNprod = 187 172 const yyPrivate = 57344 173 174 var yyTokenNames []string 175 var yyStates []string 176 177 const yyLast = 900 178 179 var yyAct = []int{ 180 181 48, 394, 54, 90, 427, 273, 440, 58, 52, 102, 182 80, 79, 85, 172, 94, 95, 97, 98, 100, 101, 183 51, 57, 113, 3, 80, 79, 56, 121, 123, 125, 184 435, 128, 130, 91, 133, 53, 278, 138, 74, 77, 185 75, 66, 164, 117, 118, 119, 120, 454, 453, 93, 186 96, 65, 99, 77, 134, 417, 127, 114, 94, 74, 187 416, 75, 74, 122, 75, 406, 83, 84, 105, 136, 188 137, 139, 140, 76, 94, 78, 80, 79, 405, 384, 189 62, 127, 94, 81, 383, 205, 148, 150, 149, 78, 190 50, 380, 116, 369, 104, 94, 127, 81, 368, 61, 191 61, 61, 87, 89, 367, 77, 366, 277, 103, 110, 192 364, 363, 316, 63, 407, 198, 64, 61, 284, 55, 193 126, 205, 129, 131, 162, 206, 232, 143, 143, 143, 194 169, 74, 63, 75, 171, 64, 225, 204, 205, 76, 195 109, 78, 170, 165, 448, 47, 62, 447, 92, 81, 196 446, 445, 248, 256, 257, 168, 226, 264, 265, 254, 197 269, 270, 271, 260, 135, 444, 443, 94, 176, 177, 198 178, 235, 399, 253, 398, 397, 262, 199, 255, 393, 199 288, 291, 292, 189, 392, 267, 391, 251, 390, 389, 200 261, 303, 305, 307, 309, 311, 312, 202, 388, 387, 201 166, 386, 385, 293, 294, 295, 296, 314, 379, 317, 202 115, 49, 86, 88, 378, 332, 334, 335, 336, 377, 203 338, 106, 342, 376, 375, 374, 302, 373, 372, 124, 204 362, 328, 329, 330, 331, 361, 233, 231, 230, 229, 205 61, 116, 250, 61, 132, 259, 222, 221, 141, 220, 206 333, 219, 146, 218, 280, 339, 341, 217, 281, 282, 207 283, 216, 215, 286, 287, 344, 214, 213, 61, 348, 208 290, 252, 318, 321, 61, 263, 298, 300, 266, 268, 209 351, 352, 353, 354, 355, 212, 315, 358, 359, 360, 210 370, 211, 202, 324, 59, 210, 80, 79, 209, 371, 211 207, 203, 197, 196, 195, 194, 193, 61, 192, 200, 212 191, 340, 190, 343, 188, 185, 184, 80, 79, 61, 213 347, 183, 349, 350, 208, 77, 182, 181, 381, 180, 214 67, 382, 74, 63, 75, 68, 64, 65, 83, 84, 215 70, 69, 179, 82, 223, 224, 77, 161, 227, 228, 216 160, 159, 249, 158, 157, 258, 156, 163, 155, 76, 217 154, 78, 153, 152, 151, 46, 62, 45, 66, 81, 218 44, 404, 187, 408, 409, 410, 411, 412, 413, 414, 219 289, 299, 78, 402, 42, 43, 297, 104, 63, 415, 220 81, 64, 67, 431, 65, 63, 430, 112, 64, 400, 221 401, 403, 438, 439, 319, 322, 421, 422, 246, 245, 222 244, 242, 243, 237, 238, 239, 240, 241, 67, 337, 223 441, 461, 163, 112, 449, 434, 426, 429, 442, 234, 224 450, 345, 186, 433, 436, 437, 357, 451, 74, 63, 225 75, 74, 64, 75, 285, 456, 457, 356, 459, 460, 226 67, 8, 418, 60, 67, 112, 74, 272, 75, 112, 227 70, 69, 396, 82, 455, 275, 274, 276, 103, 174, 228 175, 74, 202, 75, 275, 274, 276, 80, 452, 428, 229 428, 247, 147, 2, 432, 301, 304, 306, 308, 310, 230 395, 313, 142, 144, 145, 275, 274, 276, 325, 9, 231 272, 74, 326, 75, 327, 1, 77, 423, 424, 425, 232 71, 10, 11, 17, 15, 16, 14, 26, 19, 20, 233 12, 22, 25, 23, 24, 21, 73, 33, 37, 168, 234 34, 38, 40, 39, 41, 458, 72, 0, 186, 167, 235 76, 176, 78, 80, 79, 0, 173, 104, 174, 175, 236 81, 239, 240, 241, 35, 36, 6, 29, 30, 32, 237 31, 27, 28, 80, 79, 13, 18, 0, 0, 4, 238 0, 5, 77, 365, 7, 0, 0, 67, 0, 74, 239 0, 75, 68, 0, 419, 83, 84, 70, 69, 0, 240 82, 0, 77, 0, 80, 79, 0, 67, 0, 0, 241 80, 79, 112, 0, 0, 0, 76, 0, 78, 80, 242 79, 0, 0, 62, 0, 94, 81, 237, 238, 239, 243 240, 241, 0, 77, 0, 0, 111, 0, 78, 77, 244 0, 63, 108, 107, 64, 0, 81, 0, 77, 80, 245 79, 0, 0, 0, 0, 74, 0, 75, 245, 244, 246 242, 243, 237, 238, 239, 240, 241, 76, 0, 78, 247 0, 0, 167, 76, 62, 78, 0, 81, 77, 0, 248 104, 0, 76, 81, 78, 74, 0, 75, 0, 62, 249 0, 0, 81, 246, 245, 244, 242, 243, 237, 238, 250 239, 240, 241, 80, 79, 80, 79, 80, 79, 0, 251 0, 0, 76, 0, 78, 0, 80, 79, 0, 104, 252 80, 79, 81, 0, 0, 0, 0, 0, 0, 80, 253 79, 0, 77, 0, 77, 0, 77, 0, 0, 74, 254 0, 75, 80, 79, 0, 77, 0, 0, 0, 77, 255 0, 0, 0, 80, 79, 0, 0, 0, 77, 0, 256 0, 0, 80, 79, 0, 0, 299, 0, 78, 279, 257 78, 77, 78, 104, 0, 104, 81, 104, 81, 94, 258 81, 78, 77, 111, 0, 78, 104, 0, 346, 81, 259 420, 77, 76, 81, 78, 0, 0, 0, 0, 104, 260 0, 0, 81, 0, 0, 111, 0, 78, 0, 0, 261 0, 0, 323, 0, 0, 81, 111, 0, 78, 0, 262 0, 0, 0, 320, 0, 111, 81, 78, 0, 0, 263 0, 0, 201, 0, 0, 81, 246, 245, 244, 242, 264 243, 237, 238, 239, 240, 241, 244, 242, 243, 237, 265 238, 239, 240, 241, 242, 243, 237, 238, 239, 240, 266 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 271 } 272 var yyPact = []int{ 273 274 -1000, -1000, 497, -1000, 309, 294, 290, -1000, 288, 68, 275 287, 600, 67, -67, -7, 396, -7, 396, 396, 308, 276 554, 14, 342, 342, 342, 342, 396, -7, 630, 2, 277 396, 17, 2, 86, -40, -67, -67, 163, 710, 710, 278 710, 163, -1000, 308, 308, -1000, -1000, -1000, 286, 285, 279 284, 282, 280, 278, 276, 275, 273, 272, 269, -1000, 280 -1000, 45, 684, -1000, 64, -1000, 591, -1000, 51, -1000, 281 63, -1000, -1000, -1000, -1000, 55, 539, -1000, -1000, 308, 282 308, 308, -1000, -1000, -1000, 264, 251, 249, 248, 243, 283 238, 237, 362, 236, 308, 234, 232, 230, 228, 227, 284 226, 225, 224, -1000, 308, -1000, -1000, 15, 743, 223, 285 59, 539, 51, 222, 220, -1000, -1000, 217, 213, 207, 286 189, 188, 184, 183, 179, 175, 173, 396, 171, 169, 287 168, -1000, -1000, 163, 163, 393, -1000, 163, 163, 161, 288 160, -1000, 159, 47, 158, 417, -1000, 497, 822, -1000, 289 404, 534, 396, 396, 1, 349, 396, 396, 407, 411, 290 396, 396, 426, 27, 679, 308, -1000, -1000, 45, 308, 291 308, 308, 39, 436, 308, 308, -1000, -1000, -1000, 600, 292 396, 396, 342, 342, 342, 585, -1000, 311, 308, -1000, 293 -7, 396, 396, 396, 396, 396, 396, 308, 32, -1000, 294 -1000, 15, 42, 734, 723, 456, 39, 396, -1000, 396, 295 342, 342, 342, 342, -7, 396, 396, 396, 710, -7, 296 -23, 396, 2, -1000, -1000, -1000, -1000, -1000, -1000, -67, 297 710, 697, 435, 688, 308, -1000, -1000, 308, 308, 308, 298 308, 308, 440, 428, 308, 308, 308, -1000, -1000, -1000, 299 -1000, 157, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 300 -1000, 152, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 301 -1000, -1000, 31, 30, -1000, -1000, -1000, -1000, 396, -1000, 302 26, 24, 18, 13, 435, 460, -1000, -1000, -1000, -1000, 303 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 304 -1000, 150, 149, -1000, 147, -1000, 146, -1000, 145, -1000, 305 141, -1000, -1000, 136, -1000, 130, -1000, 11, -1000, -1000, 306 15, -1000, -1000, 15, 6, -1, -1000, -1000, -1000, 124, 307 123, 121, 120, 111, 110, 108, -1000, -1000, -1000, 106, 308 -1000, 101, -1000, -1000, -1000, -1000, 452, 97, -1000, 96, 309 94, 540, 540, -1000, -1000, -1000, 308, 308, 837, 830, 310 643, 353, 344, -1000, -1000, -2, -1000, -1000, -1000, -1000, 311 -15, 35, 396, 396, 396, 396, 396, 396, 396, 308, 312 -1000, -20, -25, 701, -1000, 342, 342, 375, 375, 375, 313 688, 688, 396, 2, -1000, 423, 387, -51, -67, -75, 314 608, 608, -1000, -1000, -1000, -1000, -1000, 380, -1000, -1000, 315 -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 316 15, -1000, 88, -1000, -1000, -1000, 87, 73, 72, 69, 317 66, -1000, -1000, 386, 420, 452, -1000, -1000, -1000, -1000, 318 468, -32, -33, 342, 396, 396, 308, 396, 396, -1000, 319 383, -1000, 686, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 320 -1000, -1000, 321 } 322 var yyPgo = []int{ 323 324 0, 88, 42, 5, 13, 294, 200, 0, 90, 453, 325 119, 20, 7, 536, 526, 1, 35, 2, 3, 68, 326 26, 21, 9, 8, 510, 4, 505, 483, 23, 482, 327 451, 210, 328 } 329 var yyR1 = []int{ 330 331 0, 26, 27, 26, 29, 28, 28, 28, 28, 28, 332 28, 28, 30, 30, 30, 30, 30, 30, 30, 30, 333 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 334 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 335 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 336 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 337 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 338 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 339 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 340 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 341 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 342 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 343 30, 30, 30, 30, 30, 19, 19, 7, 12, 12, 344 13, 21, 14, 24, 20, 20, 20, 23, 11, 11, 345 10, 10, 22, 25, 15, 15, 15, 15, 17, 17, 346 18, 18, 16, 5, 5, 8, 8, 6, 6, 9, 347 9, 9, 31, 31, 4, 4, 4, 3, 3, 3, 348 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 349 2, 2, 2, 2, 2, 2, 2, 350 } 351 var yyR2 = []int{ 352 353 0, 0, 0, 3, 0, 4, 4, 4, 2, 1, 354 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 355 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 356 4, 4, 6, 4, 4, 6, 4, 4, 6, 6, 357 6, 4, 4, 6, 4, 6, 4, 6, 4, 4, 358 2, 6, 4, 4, 4, 6, 4, 4, 4, 4, 359 4, 4, 4, 4, 2, 2, 4, 3, 3, 5, 360 4, 4, 6, 4, 4, 6, 6, 6, 8, 4, 361 4, 3, 2, 4, 4, 6, 8, 4, 6, 4, 362 4, 6, 6, 8, 8, 8, 8, 4, 4, 4, 363 6, 4, 6, 4, 4, 2, 2, 3, 3, 3, 364 3, 2, 3, 3, 4, 4, 2, 5, 7, 4, 365 6, 6, 6, 6, 2, 4, 2, 1, 1, 1, 366 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 367 1, 4, 1, 3, 1, 2, 3, 4, 2, 2, 368 2, 3, 2, 1, 4, 3, 5, 1, 4, 4, 369 5, 7, 0, 1, 0, 2, 2, 1, 1, 1, 370 1, 1, 2, 2, 2, 3, 1, 3, 3, 3, 371 3, 3, 4, 4, 3, 3, 3, 372 } 373 var yyChk = []int{ 374 375 -1000, -26, -27, -28, 72, 74, 59, 77, -30, 2, 376 14, 15, 23, 68, 19, 17, 18, 16, 69, 21, 377 22, 28, 24, 26, 27, 25, 20, 64, 65, 60, 378 61, 63, 62, 30, 33, 57, 58, 31, 34, 36, 379 35, 37, 75, 76, 76, 77, 77, 77, -7, -6, 380 -8, -11, -23, -16, -17, -10, -20, -21, -12, -5, 381 -9, -1, 79, 46, 49, 50, 81, 43, 48, 54, 382 53, -24, -13, -14, 45, 47, 72, 38, 74, 10, 383 9, 82, 56, 51, 52, -7, -6, -8, -6, -8, 384 -18, -11, 81, -16, 81, -7, -16, -7, -7, -16, 385 -7, -7, -22, -1, 79, -19, -6, 79, 78, -10, 386 -1, 72, 48, -7, -16, -31, 78, -11, -11, -11, 387 -11, -7, -16, -7, -6, -7, -8, 79, -7, -8, 388 -7, -8, -31, -7, -11, 78, -16, -16, -17, -16, 389 -16, -31, -9, -1, -9, -9, -31, -29, -2, -1, 390 -2, 78, 78, 78, 78, 78, 78, 78, 78, 78, 391 78, 78, 79, -5, -2, 79, -6, 71, -1, 79, 392 79, 79, -4, 7, 9, 10, -1, -1, -1, 78, 393 78, 78, 78, 78, 78, 78, 70, 10, 78, -1, 394 78, 78, 78, 78, 78, 78, 78, 78, -12, -19, 395 -6, 79, -1, 78, 78, 79, -4, 78, -31, 78, 396 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 397 78, 78, 78, -31, -31, -7, -11, -31, -31, 78, 398 78, 78, 79, 78, 12, -28, 77, 9, 10, 11, 399 12, 13, 7, 8, 6, 5, 4, 77, -7, -6, 400 -8, -16, -10, -21, -12, -20, -7, -7, -6, -8, 401 -23, -16, -11, -10, -7, -7, -10, -20, -10, -7, 402 -7, -7, -5, -3, 40, 39, 41, 80, 9, 80, 403 -1, -1, -1, -1, 79, 8, -1, -1, -7, -6, 404 -8, -7, -7, -11, -11, -11, -11, -6, -8, 70, 405 -1, -5, -16, -7, -5, -7, -5, -7, -5, -7, 406 -5, -7, -7, -5, -22, -1, 80, -12, -19, -6, 407 79, -19, -6, 79, -1, 42, -5, -5, -11, -11, 408 -11, -11, -7, -16, -7, -7, -7, -6, -7, -16, 409 -8, -16, -7, -8, -16, -6, 81, -1, -16, -1, 410 -1, -2, -2, -2, -2, -2, 7, 8, -2, -2, 411 -2, 78, 78, 80, 80, -5, 80, 80, 80, 80, 412 -3, -4, 78, 78, 78, 78, 78, 78, 78, 78, 413 80, -12, -12, 78, 80, 78, 78, 78, 78, 78, 414 78, 78, 78, 78, -15, 38, 10, 78, 78, 78, 415 -2, -2, -21, 48, -23, 80, 80, 79, -7, -7, 416 -7, -7, -7, -7, -7, -22, 80, 80, -19, -6, 417 79, -11, -11, -10, -10, -10, -16, -25, -1, -16, 418 -25, -7, -8, 10, 38, 81, -16, -16, -17, -18, 419 81, 40, -12, 78, 78, 78, 78, 78, 78, 38, 420 10, -15, 10, 80, 80, -11, -7, -7, -1, -7, 421 -7, 38, 422 } 423 var yyDef = []int{ 424 425 1, -2, 0, 3, 0, 0, 0, 9, 0, 0, 426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 427 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 428 0, 0, 0, 162, 0, 0, 0, 162, 0, 0, 429 0, 162, 4, 0, 0, 8, 10, 11, 0, 0, 430 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 431 157, 0, 0, 138, 0, 137, 0, 140, 131, 134, 432 0, 136, 128, 129, 153, 0, 164, 170, 171, 0, 433 0, 0, 133, 130, 132, 0, 0, 0, 0, 0, 434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 435 50, 0, 0, 142, 0, 64, 65, 0, 0, 0, 436 0, 164, 0, 162, 0, 82, 163, 0, 0, 0, 437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 438 0, 105, 106, 162, 162, 163, 111, 162, 162, 0, 439 0, 116, 0, 0, 0, 0, 124, 0, 0, 176, 440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 441 0, 0, 0, 0, 0, 0, 148, 149, 152, 0, 442 0, 0, 0, 0, 0, 0, 172, 173, 174, 0, 443 0, 0, 0, 0, 0, 0, 150, 0, 0, 152, 444 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 445 68, 0, 0, 0, 0, 0, 126, 163, 81, 0, 446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447 0, 0, 0, 107, 108, 109, 110, 112, 113, 0, 448 0, 0, 0, 0, 0, 5, 6, 0, 0, 0, 449 0, 0, 0, 0, 0, 0, 0, 7, 12, 24, 450 25, 0, 36, 37, 61, 63, 13, 14, 28, 29, 451 31, 0, 30, 33, 52, 53, 56, 62, 57, 59, 452 58, 60, 0, 0, 167, 168, 169, 155, 0, 175, 453 0, 0, 0, 0, 0, 164, 165, 166, 15, 26, 454 27, 16, 17, 18, 19, 20, 21, 22, 23, 151, 455 34, 127, 0, 41, 127, 42, 127, 44, 127, 46, 456 127, 48, 49, 0, 54, 142, 66, 0, 70, 71, 457 0, 73, 74, 0, 0, 0, 79, 80, 83, 84, 458 0, 87, 89, 90, 0, 0, 97, 98, 99, 0, 459 101, 0, 103, 104, 114, 115, 0, 0, 119, 0, 460 0, 177, 178, 179, 180, 181, 0, 0, 184, 185, 461 186, 0, 0, 158, 159, 0, 139, 141, 135, 154, 462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 463 69, 0, 0, 0, 125, 0, 0, 0, 0, 0, 464 0, 0, 0, 0, 117, 144, 0, 0, 0, 0, 465 182, 183, 35, 131, 32, 156, 160, 0, 38, 40, 466 39, 43, 45, 47, 51, 55, 72, 75, 76, 77, 467 0, 85, 0, 88, 91, 92, 0, 0, 0, 0, 468 0, 100, 102, 0, 145, 0, 120, 121, 122, 123, 469 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 470 0, 118, 0, 161, 78, 86, 93, 94, 143, 95, 471 96, 147, 472 } 473 var yyTok1 = []int{ 474 475 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 476 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 477 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 478 3, 3, 3, 3, 3, 3, 81, 13, 6, 3, 479 79, 80, 11, 9, 78, 10, 3, 12, 3, 3, 480 3, 3, 3, 3, 3, 3, 3, 3, 75, 77, 481 7, 76, 8, 3, 3, 3, 3, 3, 3, 3, 482 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 483 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 484 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 485 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 486 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 487 3, 3, 3, 3, 4, 3, 82, 488 } 489 var yyTok2 = []int{ 490 491 2, 3, 14, 15, 16, 17, 18, 19, 20, 21, 492 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 493 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 494 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 495 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 496 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 497 72, 73, 74, 498 } 499 var yyTok3 = []int{ 500 0, 501 } 502 503 //line yaccpar:1 504 505 /* parser for yacc output */ 506 507 var yyDebug = 0 508 509 type yyLexer interface { 510 Lex(lval *yySymType) int 511 Error(s string) 512 } 513 514 type yyParser interface { 515 Parse(yyLexer) int 516 Lookahead() int 517 } 518 519 type yyParserImpl struct { 520 lookahead func() int 521 } 522 523 func (p *yyParserImpl) Lookahead() int { 524 return p.lookahead() 525 } 526 527 func yyNewParser() yyParser { 528 p := &yyParserImpl{ 529 lookahead: func() int { return -1 }, 530 } 531 return p 532 } 533 534 const yyFlag = -1000 535 536 func yyTokname(c int) string { 537 // 4 is TOKSTART above 538 if c >= 4 && c-4 < len(yyToknames) { 539 if yyToknames[c-4] != "" { 540 return yyToknames[c-4] 541 } 542 } 543 return __yyfmt__.Sprintf("tok-%v", c) 544 } 545 546 func yyStatname(s int) string { 547 if s >= 0 && s < len(yyStatenames) { 548 if yyStatenames[s] != "" { 549 return yyStatenames[s] 550 } 551 } 552 return __yyfmt__.Sprintf("state-%v", s) 553 } 554 555 func yylex1(lex yyLexer, lval *yySymType) (char, token int) { 556 token = 0 557 char = lex.Lex(lval) 558 if char <= 0 { 559 token = yyTok1[0] 560 goto out 561 } 562 if char < len(yyTok1) { 563 token = yyTok1[char] 564 goto out 565 } 566 if char >= yyPrivate { 567 if char < yyPrivate+len(yyTok2) { 568 token = yyTok2[char-yyPrivate] 569 goto out 570 } 571 } 572 for i := 0; i < len(yyTok3); i += 2 { 573 token = yyTok3[i+0] 574 if token == char { 575 token = yyTok3[i+1] 576 goto out 577 } 578 } 579 580 out: 581 if token == 0 { 582 token = yyTok2[1] /* unknown char */ 583 } 584 if yyDebug >= 3 { 585 __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char)) 586 } 587 return char, token 588 } 589 590 func yyParse(yylex yyLexer) int { 591 return yyNewParser().Parse(yylex) 592 } 593 594 func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int { 595 var yyn int 596 var yylval yySymType 597 var yyVAL yySymType 598 var yyDollar []yySymType 599 yyS := make([]yySymType, yyMaxDepth) 600 601 Nerrs := 0 /* number of errors */ 602 Errflag := 0 /* error recovery flag */ 603 yystate := 0 604 yychar := -1 605 yytoken := -1 // yychar translated into internal numbering 606 yyrcvr.lookahead = func() int { return yychar } 607 defer func() { 608 // Make sure we report no lookahead when not parsing. 609 yychar = -1 610 yytoken = -1 611 }() 612 yyp := -1 613 goto yystack 614 615 ret0: 616 return 0 617 618 ret1: 619 return 1 620 621 yystack: 622 /* put a state and value onto the stack */ 623 if yyDebug >= 4 { 624 __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate)) 625 } 626 627 yyp++ 628 if yyp >= len(yyS) { 629 nyys := make([]yySymType, len(yyS)*2) 630 copy(nyys, yyS) 631 yyS = nyys 632 } 633 yyS[yyp] = yyVAL 634 yyS[yyp].yys = yystate 635 636 yynewstate: 637 yyn = yyPact[yystate] 638 if yyn <= yyFlag { 639 goto yydefault /* simple state */ 640 } 641 if yychar < 0 { 642 yychar, yytoken = yylex1(yylex, &yylval) 643 } 644 yyn += yytoken 645 if yyn < 0 || yyn >= yyLast { 646 goto yydefault 647 } 648 yyn = yyAct[yyn] 649 if yyChk[yyn] == yytoken { /* valid shift */ 650 yychar = -1 651 yytoken = -1 652 yyVAL = yylval 653 yystate = yyn 654 if Errflag > 0 { 655 Errflag-- 656 } 657 goto yystack 658 } 659 660 yydefault: 661 /* default state action */ 662 yyn = yyDef[yystate] 663 if yyn == -2 { 664 if yychar < 0 { 665 yychar, yytoken = yylex1(yylex, &yylval) 666 } 667 668 /* look through exception table */ 669 xi := 0 670 for { 671 if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate { 672 break 673 } 674 xi += 2 675 } 676 for xi += 2; ; xi += 2 { 677 yyn = yyExca[xi+0] 678 if yyn < 0 || yyn == yytoken { 679 break 680 } 681 } 682 yyn = yyExca[xi+1] 683 if yyn < 0 { 684 goto ret0 685 } 686 } 687 if yyn == 0 { 688 /* error ... attempt to resume parsing */ 689 switch Errflag { 690 case 0: /* brand new error */ 691 yylex.Error("syntax error") 692 Nerrs++ 693 if yyDebug >= 1 { 694 __yyfmt__.Printf("%s", yyStatname(yystate)) 695 __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken)) 696 } 697 fallthrough 698 699 case 1, 2: /* incompletely recovered error ... try again */ 700 Errflag = 3 701 702 /* find a state where "error" is a legal shift action */ 703 for yyp >= 0 { 704 yyn = yyPact[yyS[yyp].yys] + yyErrCode 705 if yyn >= 0 && yyn < yyLast { 706 yystate = yyAct[yyn] /* simulate a shift of "error" */ 707 if yyChk[yystate] == yyErrCode { 708 goto yystack 709 } 710 } 711 712 /* the current p has no shift on "error", pop stack */ 713 if yyDebug >= 2 { 714 __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) 715 } 716 yyp-- 717 } 718 /* there is no state on the stack with an error shift ... abort */ 719 goto ret1 720 721 case 3: /* no shift yet; clobber input char */ 722 if yyDebug >= 2 { 723 __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken)) 724 } 725 if yytoken == yyEofCode { 726 goto ret1 727 } 728 yychar = -1 729 yytoken = -1 730 goto yynewstate /* try again in the same state */ 731 } 732 } 733 734 /* reduction by production yyn */ 735 if yyDebug >= 2 { 736 __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate)) 737 } 738 739 yynt := yyn 740 yypt := yyp 741 _ = yypt // guard against "declared and not used" 742 743 yyp -= yyR2[yyn] 744 // yyp is now the index of $0. Perform the default action. Iff the 745 // reduced production is ε, $1 is possibly out of range. 746 if yyp+1 >= len(yyS) { 747 nyys := make([]yySymType, len(yyS)*2) 748 copy(nyys, yyS) 749 yyS = nyys 750 } 751 yyVAL = yyS[yyp+1] 752 753 /* consult goto table to find next state */ 754 yyn = yyR1[yyn] 755 yyg := yyPgo[yyn] 756 yyj := yyg + yyS[yyp].yys + 1 757 758 if yyj >= yyLast { 759 yystate = yyAct[yyg] 760 } else { 761 yystate = yyAct[yyj] 762 if yyChk[yystate] != -yyn { 763 yystate = yyAct[yyg] 764 } 765 } 766 // dummy call; replaced with literal code 767 switch yynt { 768 769 case 2: 770 yyDollar = yyS[yypt-1 : yypt+1] 771 //line a.y:72 772 { 773 stmtline = asm.Lineno 774 } 775 case 4: 776 yyDollar = yyS[yypt-2 : yypt+1] 777 //line a.y:79 778 { 779 yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym) 780 if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) { 781 yyerror("redeclaration of %s", yyDollar[1].sym.Labelname) 782 } 783 yyDollar[1].sym.Type = LLAB 784 yyDollar[1].sym.Value = int64(asm.PC) 785 } 786 case 6: 787 yyDollar = yyS[yypt-4 : yypt+1] 788 //line a.y:89 789 { 790 yyDollar[1].sym.Type = LVAR 791 yyDollar[1].sym.Value = yyDollar[3].lval 792 } 793 case 7: 794 yyDollar = yyS[yypt-4 : yypt+1] 795 //line a.y:94 796 { 797 if yyDollar[1].sym.Value != yyDollar[3].lval { 798 yyerror("redeclaration of %s", yyDollar[1].sym.Name) 799 } 800 yyDollar[1].sym.Value = yyDollar[3].lval 801 } 802 case 8: 803 yyDollar = yyS[yypt-2 : yypt+1] 804 //line a.y:101 805 { 806 nosched = int(yyDollar[1].lval) 807 } 808 case 12: 809 yyDollar = yyS[yypt-4 : yypt+1] 810 //line a.y:113 811 { 812 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 813 } 814 case 13: 815 yyDollar = yyS[yypt-4 : yypt+1] 816 //line a.y:117 817 { 818 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 819 } 820 case 14: 821 yyDollar = yyS[yypt-4 : yypt+1] 822 //line a.y:121 823 { 824 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 825 } 826 case 15: 827 yyDollar = yyS[yypt-4 : yypt+1] 828 //line a.y:125 829 { 830 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 831 } 832 case 16: 833 yyDollar = yyS[yypt-4 : yypt+1] 834 //line a.y:129 835 { 836 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 837 } 838 case 17: 839 yyDollar = yyS[yypt-4 : yypt+1] 840 //line a.y:133 841 { 842 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 843 } 844 case 18: 845 yyDollar = yyS[yypt-4 : yypt+1] 846 //line a.y:140 847 { 848 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 849 } 850 case 19: 851 yyDollar = yyS[yypt-4 : yypt+1] 852 //line a.y:144 853 { 854 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 855 } 856 case 20: 857 yyDollar = yyS[yypt-4 : yypt+1] 858 //line a.y:148 859 { 860 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 861 } 862 case 21: 863 yyDollar = yyS[yypt-4 : yypt+1] 864 //line a.y:152 865 { 866 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 867 } 868 case 22: 869 yyDollar = yyS[yypt-4 : yypt+1] 870 //line a.y:156 871 { 872 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 873 } 874 case 23: 875 yyDollar = yyS[yypt-4 : yypt+1] 876 //line a.y:160 877 { 878 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 879 } 880 case 24: 881 yyDollar = yyS[yypt-4 : yypt+1] 882 //line a.y:167 883 { 884 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 885 } 886 case 25: 887 yyDollar = yyS[yypt-4 : yypt+1] 888 //line a.y:171 889 { 890 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 891 } 892 case 26: 893 yyDollar = yyS[yypt-4 : yypt+1] 894 //line a.y:175 895 { 896 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 897 } 898 case 27: 899 yyDollar = yyS[yypt-4 : yypt+1] 900 //line a.y:179 901 { 902 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 903 } 904 case 28: 905 yyDollar = yyS[yypt-4 : yypt+1] 906 //line a.y:186 907 { 908 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 909 } 910 case 29: 911 yyDollar = yyS[yypt-4 : yypt+1] 912 //line a.y:190 913 { 914 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 915 } 916 case 30: 917 yyDollar = yyS[yypt-4 : yypt+1] 918 //line a.y:197 919 { 920 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 921 } 922 case 31: 923 yyDollar = yyS[yypt-4 : yypt+1] 924 //line a.y:201 925 { 926 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 927 } 928 case 32: 929 yyDollar = yyS[yypt-6 : yypt+1] 930 //line a.y:205 931 { 932 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr) 933 } 934 case 33: 935 yyDollar = yyS[yypt-4 : yypt+1] 936 //line a.y:209 937 { 938 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 939 } 940 case 34: 941 yyDollar = yyS[yypt-4 : yypt+1] 942 //line a.y:213 943 { 944 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen) 945 } 946 case 35: 947 yyDollar = yyS[yypt-6 : yypt+1] 948 //line a.y:220 949 { 950 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr) 951 } 952 case 36: 953 yyDollar = yyS[yypt-4 : yypt+1] 954 //line a.y:224 955 { 956 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 957 } 958 case 37: 959 yyDollar = yyS[yypt-4 : yypt+1] 960 //line a.y:228 961 { 962 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 963 } 964 case 38: 965 yyDollar = yyS[yypt-6 : yypt+1] 966 //line a.y:238 967 { 968 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr) 969 } 970 case 39: 971 yyDollar = yyS[yypt-6 : yypt+1] 972 //line a.y:242 973 { 974 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr) 975 } 976 case 40: 977 yyDollar = yyS[yypt-6 : yypt+1] 978 //line a.y:246 979 { 980 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr) 981 } 982 case 41: 983 yyDollar = yyS[yypt-4 : yypt+1] 984 //line a.y:250 985 { 986 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 987 } 988 case 42: 989 yyDollar = yyS[yypt-4 : yypt+1] 990 //line a.y:254 991 { 992 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 993 } 994 case 43: 995 yyDollar = yyS[yypt-6 : yypt+1] 996 //line a.y:258 997 { 998 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr) 999 } 1000 case 44: 1001 yyDollar = yyS[yypt-4 : yypt+1] 1002 //line a.y:262 1003 { 1004 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1005 } 1006 case 45: 1007 yyDollar = yyS[yypt-6 : yypt+1] 1008 //line a.y:266 1009 { 1010 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr) 1011 } 1012 case 46: 1013 yyDollar = yyS[yypt-4 : yypt+1] 1014 //line a.y:270 1015 { 1016 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1017 } 1018 case 47: 1019 yyDollar = yyS[yypt-6 : yypt+1] 1020 //line a.y:274 1021 { 1022 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr) 1023 } 1024 case 48: 1025 yyDollar = yyS[yypt-4 : yypt+1] 1026 //line a.y:278 1027 { 1028 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1029 } 1030 case 49: 1031 yyDollar = yyS[yypt-4 : yypt+1] 1032 //line a.y:282 1033 { 1034 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1035 } 1036 case 50: 1037 yyDollar = yyS[yypt-2 : yypt+1] 1038 //line a.y:286 1039 { 1040 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[2].addr) 1041 } 1042 case 51: 1043 yyDollar = yyS[yypt-6 : yypt+1] 1044 //line a.y:293 1045 { 1046 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr) 1047 } 1048 case 52: 1049 yyDollar = yyS[yypt-4 : yypt+1] 1050 //line a.y:300 1051 { 1052 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1053 } 1054 case 53: 1055 yyDollar = yyS[yypt-4 : yypt+1] 1056 //line a.y:304 1057 { 1058 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1059 } 1060 case 54: 1061 yyDollar = yyS[yypt-4 : yypt+1] 1062 //line a.y:311 1063 { 1064 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[4].addr) 1065 } 1066 case 55: 1067 yyDollar = yyS[yypt-6 : yypt+1] 1068 //line a.y:315 1069 { 1070 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr) 1071 } 1072 case 56: 1073 yyDollar = yyS[yypt-4 : yypt+1] 1074 //line a.y:323 1075 { 1076 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1077 } 1078 case 57: 1079 yyDollar = yyS[yypt-4 : yypt+1] 1080 //line a.y:327 1081 { 1082 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1083 } 1084 case 58: 1085 yyDollar = yyS[yypt-4 : yypt+1] 1086 //line a.y:331 1087 { 1088 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1089 } 1090 case 59: 1091 yyDollar = yyS[yypt-4 : yypt+1] 1092 //line a.y:335 1093 { 1094 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1095 } 1096 case 60: 1097 yyDollar = yyS[yypt-4 : yypt+1] 1098 //line a.y:339 1099 { 1100 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1101 } 1102 case 61: 1103 yyDollar = yyS[yypt-4 : yypt+1] 1104 //line a.y:343 1105 { 1106 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1107 } 1108 case 62: 1109 yyDollar = yyS[yypt-4 : yypt+1] 1110 //line a.y:347 1111 { 1112 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1113 } 1114 case 63: 1115 yyDollar = yyS[yypt-4 : yypt+1] 1116 //line a.y:351 1117 { 1118 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1119 } 1120 case 64: 1121 yyDollar = yyS[yypt-2 : yypt+1] 1122 //line a.y:360 1123 { 1124 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[2].addr) 1125 } 1126 case 65: 1127 yyDollar = yyS[yypt-2 : yypt+1] 1128 //line a.y:364 1129 { 1130 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[2].addr) 1131 } 1132 case 66: 1133 yyDollar = yyS[yypt-4 : yypt+1] 1134 //line a.y:368 1135 { 1136 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr) 1137 } 1138 case 67: 1139 yyDollar = yyS[yypt-3 : yypt+1] 1140 //line a.y:372 1141 { 1142 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr) 1143 } 1144 case 68: 1145 yyDollar = yyS[yypt-3 : yypt+1] 1146 //line a.y:376 1147 { 1148 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr) 1149 } 1150 case 69: 1151 yyDollar = yyS[yypt-5 : yypt+1] 1152 //line a.y:380 1153 { 1154 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[4].addr) 1155 } 1156 case 70: 1157 yyDollar = yyS[yypt-4 : yypt+1] 1158 //line a.y:384 1159 { 1160 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1161 } 1162 case 71: 1163 yyDollar = yyS[yypt-4 : yypt+1] 1164 //line a.y:388 1165 { 1166 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1167 } 1168 case 72: 1169 yyDollar = yyS[yypt-6 : yypt+1] 1170 //line a.y:392 1171 { 1172 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[5].addr) 1173 } 1174 case 73: 1175 yyDollar = yyS[yypt-4 : yypt+1] 1176 //line a.y:396 1177 { 1178 outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[4].addr) 1179 } 1180 case 74: 1181 yyDollar = yyS[yypt-4 : yypt+1] 1182 //line a.y:400 1183 { 1184 outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[4].addr) 1185 } 1186 case 75: 1187 yyDollar = yyS[yypt-6 : yypt+1] 1188 //line a.y:404 1189 { 1190 outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[5].addr) 1191 } 1192 case 76: 1193 yyDollar = yyS[yypt-6 : yypt+1] 1194 //line a.y:408 1195 { 1196 var g obj.Addr 1197 g = nullgen 1198 g.Type = obj.TYPE_CONST 1199 g.Offset = yyDollar[2].lval 1200 outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[6].addr) 1201 } 1202 case 77: 1203 yyDollar = yyS[yypt-6 : yypt+1] 1204 //line a.y:416 1205 { 1206 var g obj.Addr 1207 g = nullgen 1208 g.Type = obj.TYPE_CONST 1209 g.Offset = yyDollar[2].lval 1210 outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[6].addr) 1211 } 1212 case 78: 1213 yyDollar = yyS[yypt-8 : yypt+1] 1214 //line a.y:424 1215 { 1216 var g obj.Addr 1217 g = nullgen 1218 g.Type = obj.TYPE_CONST 1219 g.Offset = yyDollar[2].lval 1220 outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[7].addr) 1221 } 1222 case 79: 1223 yyDollar = yyS[yypt-4 : yypt+1] 1224 //line a.y:435 1225 { 1226 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen) 1227 } 1228 case 80: 1229 yyDollar = yyS[yypt-4 : yypt+1] 1230 //line a.y:439 1231 { 1232 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen) 1233 } 1234 case 81: 1235 yyDollar = yyS[yypt-3 : yypt+1] 1236 //line a.y:443 1237 { 1238 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen) 1239 } 1240 case 82: 1241 yyDollar = yyS[yypt-2 : yypt+1] 1242 //line a.y:447 1243 { 1244 outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen) 1245 } 1246 case 83: 1247 yyDollar = yyS[yypt-4 : yypt+1] 1248 //line a.y:454 1249 { 1250 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1251 } 1252 case 84: 1253 yyDollar = yyS[yypt-4 : yypt+1] 1254 //line a.y:458 1255 { 1256 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1257 } 1258 case 85: 1259 yyDollar = yyS[yypt-6 : yypt+1] 1260 //line a.y:462 1261 { 1262 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr) 1263 } 1264 case 86: 1265 yyDollar = yyS[yypt-8 : yypt+1] 1266 //line a.y:466 1267 { 1268 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr) 1269 } 1270 case 87: 1271 yyDollar = yyS[yypt-4 : yypt+1] 1272 //line a.y:470 1273 { 1274 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1275 } 1276 case 88: 1277 yyDollar = yyS[yypt-6 : yypt+1] 1278 //line a.y:474 1279 { 1280 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr) 1281 } 1282 case 89: 1283 yyDollar = yyS[yypt-4 : yypt+1] 1284 //line a.y:481 1285 { 1286 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1287 } 1288 case 90: 1289 yyDollar = yyS[yypt-4 : yypt+1] 1290 //line a.y:485 1291 { 1292 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1293 } 1294 case 91: 1295 yyDollar = yyS[yypt-6 : yypt+1] 1296 //line a.y:489 1297 { 1298 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr) 1299 } 1300 case 92: 1301 yyDollar = yyS[yypt-6 : yypt+1] 1302 //line a.y:493 1303 { 1304 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr) 1305 } 1306 case 93: 1307 yyDollar = yyS[yypt-8 : yypt+1] 1308 //line a.y:500 1309 { 1310 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr) 1311 } 1312 case 94: 1313 yyDollar = yyS[yypt-8 : yypt+1] 1314 //line a.y:504 1315 { 1316 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr) 1317 } 1318 case 95: 1319 yyDollar = yyS[yypt-8 : yypt+1] 1320 //line a.y:508 1321 { 1322 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr) 1323 } 1324 case 96: 1325 yyDollar = yyS[yypt-8 : yypt+1] 1326 //line a.y:512 1327 { 1328 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr) 1329 } 1330 case 97: 1331 yyDollar = yyS[yypt-4 : yypt+1] 1332 //line a.y:519 1333 { 1334 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1335 } 1336 case 98: 1337 yyDollar = yyS[yypt-4 : yypt+1] 1338 //line a.y:523 1339 { 1340 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1341 } 1342 case 99: 1343 yyDollar = yyS[yypt-4 : yypt+1] 1344 //line a.y:531 1345 { 1346 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1347 } 1348 case 100: 1349 yyDollar = yyS[yypt-6 : yypt+1] 1350 //line a.y:535 1351 { 1352 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr) 1353 } 1354 case 101: 1355 yyDollar = yyS[yypt-4 : yypt+1] 1356 //line a.y:539 1357 { 1358 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1359 } 1360 case 102: 1361 yyDollar = yyS[yypt-6 : yypt+1] 1362 //line a.y:543 1363 { 1364 outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr) 1365 } 1366 case 103: 1367 yyDollar = yyS[yypt-4 : yypt+1] 1368 //line a.y:547 1369 { 1370 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1371 } 1372 case 104: 1373 yyDollar = yyS[yypt-4 : yypt+1] 1374 //line a.y:551 1375 { 1376 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1377 } 1378 case 105: 1379 yyDollar = yyS[yypt-2 : yypt+1] 1380 //line a.y:555 1381 { 1382 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen) 1383 } 1384 case 106: 1385 yyDollar = yyS[yypt-2 : yypt+1] 1386 //line a.y:562 1387 { 1388 outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen) 1389 } 1390 case 107: 1391 yyDollar = yyS[yypt-3 : yypt+1] 1392 //line a.y:566 1393 { 1394 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen) 1395 } 1396 case 108: 1397 yyDollar = yyS[yypt-3 : yypt+1] 1398 //line a.y:570 1399 { 1400 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen) 1401 } 1402 case 109: 1403 yyDollar = yyS[yypt-3 : yypt+1] 1404 //line a.y:574 1405 { 1406 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr) 1407 } 1408 case 110: 1409 yyDollar = yyS[yypt-3 : yypt+1] 1410 //line a.y:578 1411 { 1412 outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr) 1413 } 1414 case 111: 1415 yyDollar = yyS[yypt-2 : yypt+1] 1416 //line a.y:582 1417 { 1418 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen) 1419 } 1420 case 112: 1421 yyDollar = yyS[yypt-3 : yypt+1] 1422 //line a.y:589 1423 { 1424 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen) 1425 } 1426 case 113: 1427 yyDollar = yyS[yypt-3 : yypt+1] 1428 //line a.y:593 1429 { 1430 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen) 1431 } 1432 case 114: 1433 yyDollar = yyS[yypt-4 : yypt+1] 1434 //line a.y:600 1435 { 1436 if yyDollar[2].addr.Type != obj.TYPE_CONST || yyDollar[4].addr.Type != obj.TYPE_CONST { 1437 yyerror("arguments to PCDATA must be integer constants") 1438 } 1439 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1440 } 1441 case 115: 1442 yyDollar = yyS[yypt-4 : yypt+1] 1443 //line a.y:610 1444 { 1445 if yyDollar[2].addr.Type != obj.TYPE_CONST { 1446 yyerror("index for FUNCDATA must be integer constant") 1447 } 1448 if yyDollar[4].addr.Type != obj.TYPE_MEM || (yyDollar[4].addr.Name != obj.NAME_EXTERN && yyDollar[4].addr.Name != obj.NAME_STATIC) { 1449 yyerror("value for FUNCDATA must be symbol reference") 1450 } 1451 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1452 } 1453 case 116: 1454 yyDollar = yyS[yypt-2 : yypt+1] 1455 //line a.y:623 1456 { 1457 outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen) 1458 } 1459 case 117: 1460 yyDollar = yyS[yypt-5 : yypt+1] 1461 //line a.y:630 1462 { 1463 asm.Settext(yyDollar[2].addr.Sym) 1464 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[5].addr) 1465 } 1466 case 118: 1467 yyDollar = yyS[yypt-7 : yypt+1] 1468 //line a.y:635 1469 { 1470 asm.Settext(yyDollar[2].addr.Sym) 1471 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[7].addr) 1472 if asm.Pass > 1 { 1473 lastpc.From3.Type = obj.TYPE_CONST 1474 lastpc.From3.Offset = yyDollar[4].lval 1475 } 1476 } 1477 case 119: 1478 yyDollar = yyS[yypt-4 : yypt+1] 1479 //line a.y:647 1480 { 1481 asm.Settext(yyDollar[2].addr.Sym) 1482 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr) 1483 } 1484 case 120: 1485 yyDollar = yyS[yypt-6 : yypt+1] 1486 //line a.y:652 1487 { 1488 asm.Settext(yyDollar[2].addr.Sym) 1489 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr) 1490 if asm.Pass > 1 { 1491 lastpc.From3.Type = obj.TYPE_CONST 1492 lastpc.From3.Offset = yyDollar[4].lval 1493 } 1494 } 1495 case 121: 1496 yyDollar = yyS[yypt-6 : yypt+1] 1497 //line a.y:665 1498 { 1499 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr) 1500 if asm.Pass > 1 { 1501 lastpc.From3.Type = obj.TYPE_CONST 1502 lastpc.From3.Offset = yyDollar[4].lval 1503 } 1504 } 1505 case 122: 1506 yyDollar = yyS[yypt-6 : yypt+1] 1507 //line a.y:673 1508 { 1509 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr) 1510 if asm.Pass > 1 { 1511 lastpc.From3.Type = obj.TYPE_CONST 1512 lastpc.From3.Offset = yyDollar[4].lval 1513 } 1514 } 1515 case 123: 1516 yyDollar = yyS[yypt-6 : yypt+1] 1517 //line a.y:681 1518 { 1519 outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr) 1520 if asm.Pass > 1 { 1521 lastpc.From3.Type = obj.TYPE_CONST 1522 lastpc.From3.Offset = yyDollar[4].lval 1523 } 1524 } 1525 case 124: 1526 yyDollar = yyS[yypt-2 : yypt+1] 1527 //line a.y:692 1528 { 1529 outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen) 1530 } 1531 case 125: 1532 yyDollar = yyS[yypt-4 : yypt+1] 1533 //line a.y:698 1534 { 1535 yyVAL.addr = nullgen 1536 yyVAL.addr.Type = obj.TYPE_BRANCH 1537 yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC) 1538 } 1539 case 126: 1540 yyDollar = yyS[yypt-2 : yypt+1] 1541 //line a.y:704 1542 { 1543 yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym) 1544 yyVAL.addr = nullgen 1545 if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB { 1546 yyerror("undefined label: %s", yyDollar[1].sym.Labelname) 1547 } 1548 yyVAL.addr.Type = obj.TYPE_BRANCH 1549 yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval 1550 } 1551 case 127: 1552 yyDollar = yyS[yypt-1 : yypt+1] 1553 //line a.y:716 1554 { 1555 yyVAL.addr = nullgen 1556 yyVAL.addr.Type = obj.TYPE_REG 1557 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1558 } 1559 case 128: 1560 yyVAL.addr = yyS[yypt-0].addr 1561 case 129: 1562 yyVAL.addr = yyS[yypt-0].addr 1563 case 130: 1564 yyDollar = yyS[yypt-1 : yypt+1] 1565 //line a.y:728 1566 { 1567 yyVAL.addr = nullgen 1568 yyVAL.addr.Type = obj.TYPE_REG 1569 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1570 } 1571 case 131: 1572 yyDollar = yyS[yypt-1 : yypt+1] 1573 //line a.y:736 1574 { 1575 yyVAL.addr = nullgen 1576 yyVAL.addr.Type = obj.TYPE_REG 1577 yyVAL.addr.Reg = int16(yyDollar[1].lval) /* whole register */ 1578 } 1579 case 132: 1580 yyDollar = yyS[yypt-1 : yypt+1] 1581 //line a.y:743 1582 { 1583 yyVAL.addr = nullgen 1584 yyVAL.addr.Type = obj.TYPE_REG 1585 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1586 } 1587 case 133: 1588 yyDollar = yyS[yypt-1 : yypt+1] 1589 //line a.y:751 1590 { 1591 yyVAL.addr = nullgen 1592 yyVAL.addr.Type = obj.TYPE_REG 1593 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1594 } 1595 case 134: 1596 yyDollar = yyS[yypt-1 : yypt+1] 1597 //line a.y:759 1598 { 1599 yyVAL.addr = nullgen 1600 yyVAL.addr.Type = obj.TYPE_REG 1601 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1602 } 1603 case 135: 1604 yyDollar = yyS[yypt-4 : yypt+1] 1605 //line a.y:765 1606 { 1607 if yyDollar[3].lval < 0 || yyDollar[3].lval >= 1024 { 1608 yyerror("SPR/DCR out of range") 1609 } 1610 yyVAL.addr = nullgen 1611 yyVAL.addr.Type = obj.TYPE_REG 1612 yyVAL.addr.Reg = int16(yyDollar[1].lval + yyDollar[3].lval) 1613 } 1614 case 136: 1615 yyVAL.addr = yyS[yypt-0].addr 1616 case 137: 1617 yyDollar = yyS[yypt-1 : yypt+1] 1618 //line a.y:777 1619 { 1620 yyVAL.addr = nullgen 1621 yyVAL.addr.Type = obj.TYPE_REG 1622 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1623 } 1624 case 138: 1625 yyDollar = yyS[yypt-1 : yypt+1] 1626 //line a.y:785 1627 { 1628 yyVAL.addr = nullgen 1629 yyVAL.addr.Type = obj.TYPE_REG 1630 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1631 } 1632 case 139: 1633 yyDollar = yyS[yypt-4 : yypt+1] 1634 //line a.y:791 1635 { 1636 yyVAL.addr = nullgen 1637 yyVAL.addr.Type = obj.TYPE_REG 1638 yyVAL.addr.Reg = int16(REG_F0 + yyDollar[3].lval) 1639 } 1640 case 140: 1641 yyDollar = yyS[yypt-1 : yypt+1] 1642 //line a.y:799 1643 { 1644 yyVAL.addr = nullgen 1645 yyVAL.addr.Type = obj.TYPE_REG 1646 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1647 } 1648 case 141: 1649 yyDollar = yyS[yypt-4 : yypt+1] 1650 //line a.y:805 1651 { 1652 yyVAL.addr = nullgen 1653 yyVAL.addr.Type = obj.TYPE_REG 1654 yyVAL.addr.Reg = int16(REG_CR0 + yyDollar[3].lval) 1655 } 1656 case 142: 1657 yyDollar = yyS[yypt-1 : yypt+1] 1658 //line a.y:813 1659 { 1660 yyVAL.addr = nullgen 1661 yyVAL.addr.Type = obj.TYPE_REG 1662 yyVAL.addr.Reg = int16(yyDollar[1].lval) 1663 } 1664 case 143: 1665 yyDollar = yyS[yypt-3 : yypt+1] 1666 //line a.y:821 1667 { 1668 var mb, me int 1669 var v uint32 1670 1671 yyVAL.addr = nullgen 1672 yyVAL.addr.Type = obj.TYPE_CONST 1673 mb = int(yyDollar[1].lval) 1674 me = int(yyDollar[3].lval) 1675 if mb < 0 || mb > 31 || me < 0 || me > 31 { 1676 yyerror("illegal mask start/end value(s)") 1677 mb = 0 1678 me = 0 1679 } 1680 if mb <= me { 1681 v = (^uint32(0) >> uint(mb)) & (^uint32(0) << uint(31-me)) 1682 } else { 1683 v = (^uint32(0) >> uint(me+1)) & (^uint32(0) << uint(31-(mb-1))) 1684 } 1685 yyVAL.addr.Offset = int64(v) 1686 } 1687 case 144: 1688 yyDollar = yyS[yypt-1 : yypt+1] 1689 //line a.y:844 1690 { 1691 yyVAL.addr = nullgen 1692 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1693 yyVAL.addr.Offset = int64(yyDollar[1].lval) 1694 yyVAL.addr.Val = int32(obj.ArgsSizeUnknown) 1695 } 1696 case 145: 1697 yyDollar = yyS[yypt-2 : yypt+1] 1698 //line a.y:851 1699 { 1700 yyVAL.addr = nullgen 1701 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1702 yyVAL.addr.Offset = -int64(yyDollar[2].lval) 1703 yyVAL.addr.Val = int32(obj.ArgsSizeUnknown) 1704 } 1705 case 146: 1706 yyDollar = yyS[yypt-3 : yypt+1] 1707 //line a.y:858 1708 { 1709 yyVAL.addr = nullgen 1710 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1711 yyVAL.addr.Offset = int64(yyDollar[1].lval) 1712 yyVAL.addr.Val = int32(yyDollar[3].lval) 1713 } 1714 case 147: 1715 yyDollar = yyS[yypt-4 : yypt+1] 1716 //line a.y:865 1717 { 1718 yyVAL.addr = nullgen 1719 yyVAL.addr.Type = obj.TYPE_TEXTSIZE 1720 yyVAL.addr.Offset = -int64(yyDollar[2].lval) 1721 yyVAL.addr.Val = int32(yyDollar[4].lval) 1722 } 1723 case 148: 1724 yyDollar = yyS[yypt-2 : yypt+1] 1725 //line a.y:874 1726 { 1727 yyVAL.addr = yyDollar[2].addr 1728 yyVAL.addr.Type = obj.TYPE_ADDR 1729 } 1730 case 149: 1731 yyDollar = yyS[yypt-2 : yypt+1] 1732 //line a.y:879 1733 { 1734 yyVAL.addr = nullgen 1735 yyVAL.addr.Type = obj.TYPE_SCONST 1736 yyVAL.addr.Val = yyDollar[2].sval 1737 } 1738 case 150: 1739 yyDollar = yyS[yypt-2 : yypt+1] 1740 //line a.y:887 1741 { 1742 yyVAL.addr = nullgen 1743 yyVAL.addr.Type = obj.TYPE_FCONST 1744 yyVAL.addr.Val = yyDollar[2].dval 1745 } 1746 case 151: 1747 yyDollar = yyS[yypt-3 : yypt+1] 1748 //line a.y:893 1749 { 1750 yyVAL.addr = nullgen 1751 yyVAL.addr.Type = obj.TYPE_FCONST 1752 yyVAL.addr.Val = -yyDollar[3].dval 1753 } 1754 case 152: 1755 yyDollar = yyS[yypt-2 : yypt+1] 1756 //line a.y:900 1757 { 1758 yyVAL.addr = nullgen 1759 yyVAL.addr.Type = obj.TYPE_CONST 1760 yyVAL.addr.Offset = yyDollar[2].lval 1761 } 1762 case 153: 1763 yyVAL.lval = yyS[yypt-0].lval 1764 case 154: 1765 yyDollar = yyS[yypt-4 : yypt+1] 1766 //line a.y:909 1767 { 1768 if yyVAL.lval < 0 || yyVAL.lval >= NREG { 1769 print("register value out of range\n") 1770 } 1771 yyVAL.lval = REG_R0 + yyDollar[3].lval 1772 } 1773 case 155: 1774 yyDollar = yyS[yypt-3 : yypt+1] 1775 //line a.y:918 1776 { 1777 yyVAL.addr = nullgen 1778 yyVAL.addr.Type = obj.TYPE_MEM 1779 yyVAL.addr.Reg = int16(yyDollar[2].lval) 1780 yyVAL.addr.Offset = 0 1781 } 1782 case 156: 1783 yyDollar = yyS[yypt-5 : yypt+1] 1784 //line a.y:925 1785 { 1786 yyVAL.addr = nullgen 1787 yyVAL.addr.Type = obj.TYPE_MEM 1788 yyVAL.addr.Reg = int16(yyDollar[2].lval) 1789 yyVAL.addr.Scale = int16(yyDollar[4].lval) 1790 yyVAL.addr.Offset = 0 1791 } 1792 case 157: 1793 yyVAL.addr = yyS[yypt-0].addr 1794 case 158: 1795 yyDollar = yyS[yypt-4 : yypt+1] 1796 //line a.y:936 1797 { 1798 yyVAL.addr = nullgen 1799 yyVAL.addr.Type = obj.TYPE_MEM 1800 yyVAL.addr.Reg = int16(yyDollar[3].lval) 1801 yyVAL.addr.Offset = yyDollar[1].lval 1802 } 1803 case 159: 1804 yyDollar = yyS[yypt-4 : yypt+1] 1805 //line a.y:945 1806 { 1807 yyVAL.addr = nullgen 1808 yyVAL.addr.Type = obj.TYPE_MEM 1809 yyVAL.addr.Name = int8(yyDollar[3].lval) 1810 yyVAL.addr.Sym = nil 1811 yyVAL.addr.Offset = yyDollar[1].lval 1812 } 1813 case 160: 1814 yyDollar = yyS[yypt-5 : yypt+1] 1815 //line a.y:953 1816 { 1817 yyVAL.addr = nullgen 1818 yyVAL.addr.Type = obj.TYPE_MEM 1819 yyVAL.addr.Name = int8(yyDollar[4].lval) 1820 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0) 1821 yyVAL.addr.Offset = yyDollar[2].lval 1822 } 1823 case 161: 1824 yyDollar = yyS[yypt-7 : yypt+1] 1825 //line a.y:961 1826 { 1827 yyVAL.addr = nullgen 1828 yyVAL.addr.Type = obj.TYPE_MEM 1829 yyVAL.addr.Name = obj.NAME_STATIC 1830 yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1) 1831 yyVAL.addr.Offset = yyDollar[4].lval 1832 } 1833 case 164: 1834 yyDollar = yyS[yypt-0 : yypt+1] 1835 //line a.y:973 1836 { 1837 yyVAL.lval = 0 1838 } 1839 case 165: 1840 yyDollar = yyS[yypt-2 : yypt+1] 1841 //line a.y:977 1842 { 1843 yyVAL.lval = yyDollar[2].lval 1844 } 1845 case 166: 1846 yyDollar = yyS[yypt-2 : yypt+1] 1847 //line a.y:981 1848 { 1849 yyVAL.lval = -yyDollar[2].lval 1850 } 1851 case 167: 1852 yyVAL.lval = yyS[yypt-0].lval 1853 case 168: 1854 yyVAL.lval = yyS[yypt-0].lval 1855 case 169: 1856 yyVAL.lval = yyS[yypt-0].lval 1857 case 170: 1858 yyVAL.lval = yyS[yypt-0].lval 1859 case 171: 1860 yyDollar = yyS[yypt-1 : yypt+1] 1861 //line a.y:993 1862 { 1863 yyVAL.lval = yyDollar[1].sym.Value 1864 } 1865 case 172: 1866 yyDollar = yyS[yypt-2 : yypt+1] 1867 //line a.y:997 1868 { 1869 yyVAL.lval = -yyDollar[2].lval 1870 } 1871 case 173: 1872 yyDollar = yyS[yypt-2 : yypt+1] 1873 //line a.y:1001 1874 { 1875 yyVAL.lval = yyDollar[2].lval 1876 } 1877 case 174: 1878 yyDollar = yyS[yypt-2 : yypt+1] 1879 //line a.y:1005 1880 { 1881 yyVAL.lval = ^yyDollar[2].lval 1882 } 1883 case 175: 1884 yyDollar = yyS[yypt-3 : yypt+1] 1885 //line a.y:1009 1886 { 1887 yyVAL.lval = yyDollar[2].lval 1888 } 1889 case 176: 1890 yyVAL.lval = yyS[yypt-0].lval 1891 case 177: 1892 yyDollar = yyS[yypt-3 : yypt+1] 1893 //line a.y:1016 1894 { 1895 yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval 1896 } 1897 case 178: 1898 yyDollar = yyS[yypt-3 : yypt+1] 1899 //line a.y:1020 1900 { 1901 yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval 1902 } 1903 case 179: 1904 yyDollar = yyS[yypt-3 : yypt+1] 1905 //line a.y:1024 1906 { 1907 yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval 1908 } 1909 case 180: 1910 yyDollar = yyS[yypt-3 : yypt+1] 1911 //line a.y:1028 1912 { 1913 yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval 1914 } 1915 case 181: 1916 yyDollar = yyS[yypt-3 : yypt+1] 1917 //line a.y:1032 1918 { 1919 yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval 1920 } 1921 case 182: 1922 yyDollar = yyS[yypt-4 : yypt+1] 1923 //line a.y:1036 1924 { 1925 yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval) 1926 } 1927 case 183: 1928 yyDollar = yyS[yypt-4 : yypt+1] 1929 //line a.y:1040 1930 { 1931 yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval) 1932 } 1933 case 184: 1934 yyDollar = yyS[yypt-3 : yypt+1] 1935 //line a.y:1044 1936 { 1937 yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval 1938 } 1939 case 185: 1940 yyDollar = yyS[yypt-3 : yypt+1] 1941 //line a.y:1048 1942 { 1943 yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval 1944 } 1945 case 186: 1946 yyDollar = yyS[yypt-3 : yypt+1] 1947 //line a.y:1052 1948 { 1949 yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval 1950 } 1951 } 1952 goto yystack /* stack new state and value */ 1953 }