Annotation of researchv10no/cmd/spitbol/vaxpo1.spt, revision 1.1

1.1     ! root        1: -title VAXPO1: VAX Peephole Optimizer 1 - Eliminate Redundant TSTLs
        !             2: -in80
        !             3: *
        !             4: *      VAXPO1 removes redundant TSTL instructions of an operand
        !             5: *      modified by the previous instruction.
        !             6: *
        !             7:        &anchor = 1
        !             8:        &stlimit = 10000000
        !             9: *
        !            10: *      Set up patterns to rip apart statements.
        !            11: *
        !            12:        tab     = substr( &alphabet,10,1 )
        !            13:        sep     = tab ' '
        !            14:        letters = 'abcdefghijklmnopqrstuvwxyz23'
        !            15:        label   = break( ':' ) ':' | ''
        !            16:        eos     = span( sep ) | '#' | rpos( 0 )
        !            17:        fmtop   = label span( sep ) 
        !            18: +                      span( letters ) . op  span( sep )
        !            19: +                      ( break( sep '#' ) | rem ) . dst  eos
        !            20:        tstpat  = span( sep ) 'tstl' span( sep ) *dst 
        !            21: +                      (eos rem) . cmnt
        !            22: *
        !            23: *      Read in opcodes of instructions that set the condition codes
        !            24: *
        !            25:        optbl   = table()
        !            26: oploop line    = input
        !            27:        line    ? '+'                           :s(oploopx)
        !            28:        line    ? break( sep ) . op span( sep ) rem . n
        !            29:        optbl[op] = +n                          :(oploop)
        !            30: oploopx
        !            31: *
        !            32: *      Set up i/o associations.
        !            33: *
        !            34:        infile  = input
        !            35:        input( .in,0,infile )
        !            36:        terminal = 'Input file: ' infile
        !            37:        terminal =
        !            38:        outfile = input
        !            39:        output( .out,1,outfile )
        !            40:        terminal = 'Output file ' outfile
        !            41:        terminal =
        !            42:        logfile = input
        !            43:        output( .output,2,logfile )
        !            44:        terminal = 'Log file: ' logfile
        !            45: *
        !            46: *      Check next line for possibly preceding a redunant TSTL.
        !            47: *
        !            48: optloop        line    = in                            :f(eof)
        !            49:        leq( substr( line,1,1 ),'#' )           :s(write)
        !            50: optl1  line    ? fmtop                         :f(write)
        !            51:        differ( n = optbl[op] )                 :f(write)
        !            52:        dst     ? *eq( n,2 ) break( ',' ) len( 1 ) =
        !            53:        dst     ? *eq( n,3 ) break( ',' ) len( 1 ) =
        !            54:        out     = line
        !            55: *
        !            56: *      Dst contains destination operand from previous instruction.
        !            57: *      So, check now for a TSTL of that operand.
        !            58: *
        !            59:        line    = in                            :f(eof)
        !            60:        line    ? tstpat                        :f(optl1)
        !            61:        output  = tab out
        !            62:        opt     = opt + 1
        !            63:        output  = '#--->' tab line
        !            64:        line    = in cmnt
        !            65:        output  = tab line
        !            66:        output  =
        !            67: *
        !            68: write  out     = line                          :(optloop)
        !            69: *
        !            70: eof    output  = opt ' redundant TSTL instructions removed'
        !            71: end
        !            72: addl2  2
        !            73: ashl   3
        !            74: bicl2  2
        !            75: bisl2  2
        !            76: decl   1
        !            77: incl   1
        !            78: movl   2
        !            79: subl2  2
        !            80: xorl2  2
        !            81: +
        !            82: spitv35.src
        !            83: spitv35.serr
        !            84: opttsts

unix.superglobalmegacorp.com

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