Annotation of researchv10no/cmd/spitbol/opttsts, revision 1.1.1.1

1.1       root        1:                movl    initr,r8        # terminal flag
                      2: #--->          tstl    r8              # skip if no terminal
                      3:                beqlu   ini13           # skip if no terminal
                      4: 
                      5:                addl2   cswex,noxeq     # add -noexecute flag
                      6: #--->          tstl    noxeq           # jump if execution suppressed
                      7:                bnequ   inix2           # jump if execution suppressed
                      8: 
                      9:                movl    4*icval(r10),r5 # load exponent
                     10: #--->          tstl    r5              # error if negative exponent
                     11:                bgeq    0f              # error if negative exponent
                     12: 
                     13:                subl2   4*1(sp),r6      # minus final cursor = total length
                     14: #--->          tstl    r6              # jump if result is null
                     15:                bnequ   0f              # jump if result is null
                     16: 
                     17:                movl    4*sclen(r10),r6 # load length
                     18: #--->          tstl    r6              # jump if null replacement
                     19:                beqlu   orpl2           # jump if null replacement
                     20: 
                     21:                subl2   r8,r6           # minus final cursor = part 3 length
                     22: #--->          tstl    r6              # jump to assign if part 3 is null
                     23:                bnequ   0f              # jump to assign if part 3 is null
                     24: 
                     25:        labo1:  movl    kvert,r6        # load error code
                     26: #--->          tstl    r6              # jump if no error has occured
                     27:                beqlu   labo2           # jump if no error has occured
                     28: 
                     29:        lcnt1:  movl    r$cnt,r9        # load continuation code block ptr
                     30: #--->          tstl    r9              # jump if no previous error
                     31:                beqlu   lcnt2           # jump if no previous error
                     32: 
                     33:                movl    4*efrsl(r10),r7 # get result type id
                     34: #--->          tstl    r7              # branch if not unconverted
                     35:                bnequ   befa8           # branch if not unconverted
                     36: 
                     37:                movl    4*ffnxt(r9),r9  # else link to next ffblk on chain
                     38: #--->          tstl    r9              # loop back if another entry to check
                     39:                bnequ   bffc1           # loop back if another entry to check
                     40: 
                     41:                movl    4*pfnlo(r10),r6 # load number of locals
                     42: #--->          tstl    r6              # jump if no locals
                     43:                beqlu   bpf07           # jump if no locals
                     44: 
                     45:                addl2   kvftr,r6        # add ftrace value
                     46: #--->          tstl    r6              # jump if tracing possible
                     47:                bnequ   bpf09           # jump if tracing possible
                     48: 
                     49:                bicl2   r11,r6
                     50: #--->          tstl    r6              # fail if no match
                     51:                bnequ   0f              # fail if no match
                     52: 
                     53:                decl    r8              # else decrement level counter
                     54: #--->          tstl    r8              # loop back if not at outer level
                     55:                bnequ   pbal2           # loop back if not at outer level
                     56: 
                     57:                subl2   r7,r8           # get number of characters left
                     58: #--->          tstl    r8              # fail if no characters left
                     59:                bnequ   0f              # fail if no characters left
                     60: 
                     61:                subl2   r7,r8           # get number of characters left
                     62: #--->          tstl    r8              # fail if no characters left
                     63:                bnequ   0f              # fail if no characters left
                     64: 
                     65:                bicl2   r11,r6
                     66: #--->          tstl    r6              # succeed if break character found
                     67:                beqlu   0f              # succeed if break character found
                     68: 
                     69:                bicl2   r11,r6
                     70: #--->          tstl    r6              # fail if character is matched
                     71:                beqlu   0f              # fail if character is matched
                     72: 
                     73:                subl2   r7,r8           # calculate number of characters left
                     74: #--->          tstl    r8              # fail if no characters left
                     75:                bnequ   0f              # fail if no characters left
                     76: 
                     77:                bicl2   r11,r6
                     78: #--->          tstl    r6              # jump if no match
                     79:                beqlu   pspn3           # jump if no match
                     80: 
                     81:                subl2   r7,r8           # calculate number of characters left
                     82: #--->          tstl    r8              # fail if no characters left
                     83:                bnequ   0f              # fail if no characters left
                     84: 
                     85:                movl    4*icval(r9),r5  # load integer value
                     86: #--->          tstl    r5              # jump if zero or neg (bad dimension)
                     87:                bgtr    0f              # jump if zero or neg (bad dimension)
                     88: 
                     89:                movl    arptr,r10       # load offset (also pass indicator)
                     90: #--->          tstl    r10             # jump if first pass
                     91:                beqlu   sar05           # jump if first pass
                     92: 
                     93:                movl    4*icval(r9),r5  # get value
                     94: #--->          tstl    r5              # branch if negative or zero
                     95:                bleq    sbf01           # branch if negative or zero
                     96: 
                     97:        sclr4:  movl    4*vrnxt(r9),r9  # point to next vrblk on chain
                     98: #--->          tstl    r9              # jump for next bucket if chain end
                     99:                beqlu   sclr3           # jump for next bucket if chain end
                    100: 
                    101:        scv02:  movl    (r10)+,r9       # load next table entry, bump pointer
                    102: #--->          tstl    r9              # fail if zero marking end of list
                    103:                bnequ   0f              # fail if zero marking end of list
                    104: 
                    105:                subl2   intv2,r5        # subtract 2 to compare
                    106: #--->          tstl    r5              # fail if dim2 not 2
                    107:                beql    0f              # fail if dim2 not 2
                    108: 
                    109:                movl    4*1(r10),r6     # load length for sbstr
                    110: #--->          tstl    r6              # return null if length is zero
                    111:                bnequ   0f              # return null if length is zero
                    112: 
                    113:                decl    (sp)            # count down
                    114: #--->          tstl    (sp)            # loop
                    115:                bnequ   sdup5           # loop
                    116: 
                    117:                movl    4*2(r10),r10    # get next link
                    118: #--->          tstl    r10             # stop if chain end
                    119:                beqlu   senf4           # stop if chain end
                    120: 
                    121:        senf4:  movl    enfch,r10       # get chain head
                    122: #--->          tstl    r10             # finished if chain end
                    123:                bnequ   0f              # finished if chain end
                    124: 
                    125:                movl    r$rpt,r9        # point to current table (if any)
                    126: #--->          tstl    r9              # jump if we already have a table
                    127:                bnequ   srpl2           # jump if we already have a table
                    128: 
                    129:                movl    r9,r7           # save second argument
                    130: #--->          tstl    r7              # jump if second argument zero
                    131:                bnequ   0f              # jump if second argument zero
                    132: 
                    133:        ssubb:  movl    sbssv,r8        # reload third argument
                    134: #--->          tstl    r8              # skip if third arg given
                    135:                bnequ   ssub1           # skip if third arg given
                    136: 
                    137:        acs05:  movl    4*trtyp(r9),r7  # load trap type code
                    138: #--->          tstl    r7              # jump if not input association
                    139:                beqlu   0f              # jump if not input association
                    140: 
                    141:                movl    4*trfpt(r9),r10 # get file ctrl blk ptr or zero
                    142: #--->          tstl    r10             # jump if not standard input file
                    143:                bnequ   acs06           # jump if not standard input file
                    144: 
                    145:        acmp3:  movl    4*icval(r10),r5 # load second argument
                    146: #--->          tstl    r5              # gt if negative
                    147:                blss    acmp1           # gt if negative
                    148: 
                    149:                subl2   aldyn,r5        # subtract from scaled up free store
                    150: #--->          tstl    r5              # jump if sufficient free store
                    151:                bgtr    aloc5           # jump if sufficient free store
                    152: 
                    153:        asg11:  movl    4*trfpt(r10),r6 # fcblk ptr
                    154: #--->          tstl    r6              # jump if standard output file
                    155:                beqlu   asg13           # jump if standard output file
                    156: 
                    157:                bicl2   r11,r6
                    158: #--->          tstl    r6              # jump if constant keyword
                    159:                bnequ   cgv00           # jump if constant keyword
                    160: 
                    161:                bicl2   r11,r6
                    162: #--->          tstl    r6              # jump if not
                    163:                beqlu   cgv12           # jump if not
                    164: 
                    165:                bicl2   r11,r6
                    166: #--->          tstl    r6              # jump if preevaluation permitted
                    167:                bnequ   cgv08           # jump if preevaluation permitted
                    168: 
                    169:                bicl2   r11,r6
                    170: #--->          tstl    r6              # ordinary binop if not
                    171:                bnequ   0f              # ordinary binop if not
                    172: 
                    173:                bicl2   r11,r6
                    174: #--->          tstl    r6              # go gen if not constant
                    175:                bnequ   0f              # go gen if not constant
                    176: 
                    177:        cdwd1:  movl    r$ccb,r9        # load ptr to ccblk being built
                    178: #--->          tstl    r9              # jump if block allocated
                    179:                bnequ   cdwd2           # jump if block allocated
                    180: 
                    181:                subl2   r7,r6           # get length of label
                    182: #--->          tstl    r6              # skip if label length zero
                    183:                bnequ   0f              # skip if label length zero
                    184: 
                    185:                bisl2   4*cmcgo(sp),r8  # check if conditional goto
                    186: #--->          tstl    r8              # jump if -nofail and no cond. goto
                    187:                beqlu   cmpse           # jump if -nofail and no cond. goto
                    188: 
                    189:                movl    4*cmlbl(sp),r10 # get possible label pointer
                    190: #--->          tstl    r10             # skip if no label
                    191:                beqlu   cmp26           # skip if no label
                    192: 
                    193:        cmp27:  movl    4*cmsop(sp),r6  # load success offset
                    194: #--->          tstl    r6              # jump if no fill in required
                    195:                beqlu   cmp28           # jump if no fill in required
                    196: 
                    197:                bisl2   4*cmsgo(sp),r7  # or in success goto
                    198: #--->          tstl    r7              # ok if non-null field
                    199:                beqlu   0f              # ok if non-null field
                    200: 
                    201:                bicl2   r11,r7
                    202: #--->          tstl    r7              # redef ok if not
                    203:                beqlu   dffn3           # redef ok if not
                    204: 
                    205:                movl    4*trtrf(r10),r10# point to trtrf trap block
                    206: #--->          tstl    r10             # jump if no iochn
                    207:                beqlu   dtch5           # jump if no iochn
                    208: 
                    209:                movl    4*trtrf(r10),r10# point to next link
                    210: #--->          tstl    r10             # jump if end of chain
                    211:                beqlu   dtch5           # jump if end of chain
                    212: 
                    213:        dmp01:  movl    4*vrnxt(r9),r9  # point to next vrblk on chain
                    214: #--->          tstl    r9              # jump if end of this hash chain
                    215:                bnequ   0f              # jump if end of this hash chain
                    216: 
                    217:                movl    (r10),r9        # load pointer to next entry
                    218: #--->          tstl    r9              # jump if end of chain to insert
                    219:                bnequ   0f              # jump if end of chain to insert
                    220: 
                    221:        dmp10:  movl    dmvch,r9        # load pointer to next entry on chain
                    222: #--->          tstl    r9              # jump if end of chain
                    223:                beqlu   dmp11           # jump if end of chain
                    224: 
                    225:        dmp12:  movl    (r10)+,r9       # load next svblk ptr from table
                    226: #--->          tstl    r9              # jump if end of list
                    227:                beqlu   dmp13           # jump if end of list
                    228: 
                    229:                movl    4*bclen(r9),r8  # load defined length
                    230: #--->          tstl    r8              # skip characters if none
                    231:                beqlu   dmp32           # skip characters if none
                    232: 
                    233:                movl    4*sclen(r9),r6  # get length of string
                    234: #--->          tstl    r6              # jump if null
                    235:                beqlu   ert02           # jump if null
                    236: 
                    237:        gbc02:  movl    (r10),r9        # load ptr to next vrblk
                    238: #--->          tstl    r9              # jump if end of chain
                    239:                beqlu   gbc03           # jump if end of chain
                    240: 
                    241:        gbc11:  movl    gbcnm,r10       # point to next move block
                    242: #--->          tstl    r10             # jump if end of chain
                    243:                beqlu   gbc12           # jump if end of chain
                    244: 
                    245:                movl    gbsvb,r7        # reload move offset
                    246: #--->          tstl    r7              # jump if no move required
                    247:                beqlu   gbc13           # jump if no move required
                    248: 
                    249:                movl    (sp)+,r8        # restore block pointer
                    250: #--->          tstl    r8              # continue loop unless outer levl
                    251:                bnequ   gpf02           # continue loop unless outer levl
                    252: 
                    253:                movl    4*vrnxt(r10),r10# point to next vrblk on chain
                    254: #--->          tstl    r10             # jump if end of chain
                    255:                beqlu   gnv08           # jump if end of chain
                    256: 
                    257:                bicl2   r11,r7
                    258: #--->          tstl    r7              # jump if not present
                    259:                beqlu   gnv13           # jump if not present
                    260: 
                    261:                bicl2   r11,r8
                    262: #--->          tstl    r8              # jump if no keyword number
                    263:                beqlu   gnv17           # jump if no keyword number
                    264: 
                    265:                bicl2   r11,r8
                    266: #--->          tstl    r8              # skip if no system function
                    267:                beqlu   gnv18           # skip if no system function
                    268: 
                    269:                bicl2   r11,r8
                    270: #--->          tstl    r8              # jump if bit is off (no system labl)
                    271:                beqlu   gnv19           # jump if bit is off (no system labl)
                    272: 
                    273:                bicl2   r11,r8
                    274: #--->          tstl    r8              # all done if no value
                    275:                bnequ   0f              # all done if no value
                    276: 
                    277:                movl    4*sclen(r10),r6 # load length
                    278: #--->          tstl    r6              # jump if not system variable
                    279:                bnequ   gts04           # jump if not system variable
                    280: 
                    281:                decl    r10             # decrement counter
                    282: #--->          tstl    r10             # loop back if more to go
                    283:                bnequ   gts25           # loop back if more to go
                    284: 
                    285:                movl    4*bclen(r10),r6 # get size to allocate
                    286: #--->          tstl    r6              # if null then return null
                    287:                beqlu   gts33           # if null then return null
                    288: 
                    289:                subl2   r8,r6           # subtract to get remainder
                    290: #--->          tstl    r6              # no pad if already even boundary
                    291:                bnequ   0f              # no pad if already even boundary
                    292: 
                    293:                movl    r$iot,r9        # get 0 or trtrf ptr
                    294: #--->          tstl    r9              # jump if trtrf block exists
                    295:                beqlu   0f              # jump if trtrf block exists
                    296: 
                    297:        iop20:  movl    4*trtrf(r9),r9  # next link of chain
                    298: #--->          tstl    r9              # not found
                    299:                beqlu   iop21           # not found
                    300: 
                    301:                bicl2   r11,r6
                    302: #--->          tstl    r6              # error if no keyword association
                    303:                beqlu   kwnm1           # error if no keyword association
                    304: 
                    305:                movl    lstsn,r9        # load statement number
                    306: #--->          tstl    r9              # jump if no statement number
                    307:                beqlu   list2           # jump if no statement number
                    308: 
                    309:                movl    r$stl,r9        # load pointer to sub-title
                    310: #--->          tstl    r9              # jump if no sub-title
                    311:                beqlu   lstt1           # jump if no sub-title
                    312: 
                    313:                movl    r$cim,r9        # point to image
                    314: #--->          tstl    r9              # jump if no image
                    315:                beqlu   nxts2           # jump if no image
                    316: 
                    317:                movl    4*sclen(r10),r7 # load string length
                    318: #--->          tstl    r7              # jump if null string case
                    319:                beqlu   pats6           # jump if null string case
                    320: 
                    321:                movl    (r9),r5         # load nr of executions
                    322: #--->          tstl    r5              # no printing if zero
                    323:                beql    prfl3           # no printing if zero
                    324: 
                    325:                movl    prlen,r7        # get prior length if any
                    326: #--->          tstl    r7              # skip if no length
                    327:                beqlu   prpa2           # skip if no length
                    328: 
                    329:                bicl2   r11,r7
                    330: #--->          tstl    r7              # skip if clear
                    331:                beqlu   prpa4           # skip if clear
                    332: 
                    333:                bicl2   r11,r8
                    334: #--->          tstl    r8              # jump if terminal required
                    335:                beqlu   0f              # jump if terminal required
                    336: 
                    337:        prn07:  movl    r9,r8           # copy vrblk pointer
                    338: #--->          tstl    r8              # jump if chain end (or prnmv zero)
                    339:                beqlu   prn09           # jump if chain end (or prnmv zero)
                    340: 
                    341:                subl2   r7,r6           # subtract count of chars already out
                    342: #--->          tstl    r6              # jump to exit if none left
                    343:                bnequ   0f              # jump to exit if none left
                    344: 
                    345:                subl2   profs,r9        # get chars left in print buffer
                    346: #--->          tstl    r9              # skip if room left on this line
                    347:                bnequ   prst2           # skip if room left on this line
                    348: 
                    349:                movl    r$cni,r9        # get ptr to next image
                    350: #--->          tstl    r9              # exit if already read
                    351:                bnequ   read3           # exit if already read
                    352: 
                    353:                subl2   4*ardm2(r10),r5 # check against dimension
                    354: #--->          tstl    r5              # fail if too large
                    355:                blss    0f              # fail if too large
                    356: 
                    357:                subl2   $4,r8           # i = i - 1
                    358: #--->          tstl    r8              # loop if i gt 0
                    359:                bnequ   srt10           # loop if i gt 0
                    360: 
                    361:        srt11:  subl2   $4,r8           # i = i - 1 (n - 1 initially)
                    362: #--->          tstl    r8              # jump if done
                    363:                beqlu   srt12           # jump if done
                    364: 
                    365:                decl    srtnr           # decrement row count
                    366: #--->          tstl    srtnr           # repeat till all rows done
                    367:                bnequ   srt13           # repeat till all rows done
                    368: 
                    369:                movl    srtfd,r9        # get possible former dfblk ptr
                    370: #--->          tstl    r9              # jump if not
                    371:                beqlu   srtf4           # jump if not
                    372: 
                    373:        tfn02:  movl    4*1(r9),r5      # load value as hash source
                    374: #--->          tstl    r5              # ok if positive or zero
                    375:                bgeq    tfn06           # ok if positive or zero
                    376: 
                    377:                movl    4*2(sp),r7      # restore name/value indicator
                    378: #--->          tstl    r7              # jump if called by name
                    379:                bnequ   tfn09           # jump if called by name
                    380: 
                    381:                movl    4*2(sp),r7      # load name/value indicator
                    382: #--->          tstl    r7              # exit with default if value call
                    383:                beqlu   tfn09           # exit with default if value call
                    384: 
                    385:                movl    (sp)+,r7        # get trblk ptr again
                    386: #--->          tstl    r7              # jump if stoptr case
                    387:                beqlu   trc05           # jump if stoptr case
                    388: 
                    389:                movl    4*sclen(r9),r6  # load string length
                    390: #--->          tstl    r6              # jump if null input
                    391:                beqlu   trim2           # jump if null input
                    392: 
                    393:        trim1:  decl    r6              # else decrement character count
                    394: #--->          tstl    r6              # loop back if more to check
                    395:                bnequ   trim0           # loop back if more to check
                    396: 
                    397:                subl2   r7,r6           # get number of remaining characters
                    398: #--->          tstl    r6              # jump if no characters left
                    399:                beqlu   xscn2           # jump if no characters left
                    400: 
                    401:                decl    r6              # decrement count of chars left
                    402: #--->          tstl    r6              # loop back if more chars to go
                    403:                bnequ   xscn1           # loop back if more chars to go
                    404: 
                    405:                subl2   4*ardim(r9),r5  # subtract dimension
                    406: #--->          tstl    r5              # out of range fail if too large
                    407:                blss    0f              # out of range fail if too large
                    408: 
                    409:                addl2   kvftr,r7        # add ftrace
                    410: #--->          tstl    r7              # jump if no tracing possible
                    411:                bnequ   0f              # jump if no tracing possible
                    412: 
                    413:                movl    4*pfrtr(r9),r9  # else load return trace trblk ptr
                    414: #--->          tstl    r9              # jump if not return traced
                    415:                beqlu   rtn02           # jump if not return traced
                    416: 
                    417:                movl    (sp)+,r10       # pop saved pointer
                    418: #--->          tstl    r10             # no action if none
                    419:                beqlu   rtn7c           # no action if none
                    420: 
                    421:                addl2   4*pfnlo(r9),r7  # add number of locals
                    422: #--->          tstl    r7              # jump if no args/locals
                    423:                beqlu   rtn10           # jump if no args/locals
                    424: 
                    425:                movl    kvstc,r5        # get stmt count
                    426: #--->          tstl    r5              # omit counting if negative
                    427:                bgeq    0f              # omit counting if negative
                    428: 
                    429:                movl    kvstl,r5        # get statement limit
                    430: #--->          tstl    r5              # skip if negative
                    431:                blss    stpr2           # skip if negative
                    432: 
                    433:                movl    scnse,r6        # load scan element offset
                    434: #--->          tstl    r6              # skip if not set
                    435:                beqlu   err02           # skip if not set
                    436: 
                    437:                movl    r$sxc,r9        # load setexit cdblk pointer
                    438: #--->          tstl    r9              # continue if no setexit trap
                    439:                bnequ   0f              # continue if no setexit trap
                    440: 
                    441:        err08:  movl    dmvch,r9        # chain head for affected vrblks
                    442: #--->          tstl    r9              # done if zero
                    443:                beqlu   err06           # done if zero
                    444: 
                    445: 111 redundant TSTL instructions removed

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.