|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.