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

1.1     ! root        1: -IN80
        !             2: -TITLE OPTIMISE OUT REDUNDANT MOV OPS FROM MACRO SOURCE
        !             3: -STITL PREAMBLE
        !             4: *
        !             5: *      This Spitbol program is a quick&dirty pass over the
        !             6: *      translated Minimal source (MACRO-32) to remove the
        !             7: *      unneeded MOVL instructions.  The unneeded MOVL instructions are
        !             8: *      those which move into a register or memory location, and are
        !             9: *      immediately followed by an unlabelled opcode ***L2 that can
        !            10: *      be converted into ***L3 form, that is operating on the same register
        !            11: *
        !            12: *      This is not recommended, as the ***L3 form seems to be slower!
        !            13: *
        !            14: *      Steve Duff August 1980
        !            15: *
        !            16: -STITL INITIALIZATION
        !            17:        &STLIMIT = 10000000; &TRIM = 1; &ANCHOR = 1
        !            18:        ARITHOPCODES = 'ADDL2' | 'SUBL2' | 'MULL2' | 'DIVL2' |
        !            19: +                      'BISL2' | 'BICL2' | 'XORL2'
        !            20:        OPTRANS = TABLE(19)
        !            21:        OPTRANS['ADDL2'] = 'ADDL3'; OPTRANS['SUBL2'] = 'SUBL3'
        !            22:        OPTRANS['MULL2'] = 'MULL3'; OPTRANS['DIVL2'] = 'DIVL3'
        !            23:        OPTRANS['BISL2'] = 'BISL3'; OPTRANS['BICL2'] = 'BICL3'
        !            24:        OPTRANS['XORL2'] = 'XORL3'
        !            25:        SB      = SPAN('         ')
        !            26:        LABEL   = LEN(5) '::'
        !            27:        OPTPATT = ((LABEL | '') SB) . LAB 'MOVL' SB BREAK(',') . OP1 LEN(1)
        !            28: +                      (BREAK('        ') | REM) . OP2
        !            29:        ARITHPATT = SB ARITHOPCODES . OPCODE SB BREAK(',') . OP1A LEN(1)
        !            30: +                      *OP2 ((SB | RPOS(0)) REM) . COMMENT
        !            31:        TERMINAL = 'Enter name of file (including extension).'
        !            32:        FILENAME = TERMINAL
        !            33:        INPUT(.INFILE,1,FILENAME)       :F(END)
        !            34:        OUTPUT(.OUTFILE,2,FILENAME)
        !            35: LOOP
        !            36:        CARD1   = INFILE                :F(EXIT)
        !            37:        CARD1   ANY(';')                :S(FLUSH1)
        !            38:        CARD1   OPTPATT                 :F(FLUSH1)
        !            39:        CARD2   = INFILE                :F(HUH)
        !            40:        CARD2   ARITHPATT               :F(FLUSH2)
        !            41:        OP2     ('-' | (RTAB(1) '+'))   :S(FLUSH2)
        !            42:        TERMINAL = CARD1; TERMINAL = CARD2
        !            43:        OUTFILE = LAB OPTRANS[OPCODE] ' ' OP1A ',' OP1 ',' OP2 COMMENT
        !            44:        TERMINAL = OUTFILE
        !            45:        TERMINAL =
        !            46:        COUNT = COUNT + 1
        !            47:        :(LOOP)
        !            48: FLUSH1 OUTFILE = CARD1                 :(LOOP)
        !            49: FLUSH2 OUTFILE = CARD1
        !            50:        OUTFILE = CARD2                 :(LOOP)
        !            51: EXIT   TERMINAL = COUNT + 0 ' MOVL OPCODES REMOVED.'
        !            52: END

unix.superglobalmegacorp.com

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