M src/uxnlin.tal => src/uxnlin.tal +200 -199
@@ 404,214 404,215 @@ JMP2r
@ldaksth "LDAk 20 "STH $1
@inc2ora "INC2 20 "ORA $1
+
(
@|rules )
@rules2
- "STH $1 "STHr $1 :redundance
- "STH2 $1 "STH2r $1 :redundance
- "STHr $1 "STH $1 :redundance
- "STH2r $1 "STH2 $1 :redundance
- "DUP $1 "SWP $1 :redundance
- "DUP2 $1 "SWP2 $1 :redundance
- "SWP $1 "SWP $1 :redundance
- "SWP2 $1 "SWP2 $1 :redundance
- "SWPr $1 "SWPr $1 :redundance
- "SWP2r $1 "SWP2r $1 :redundance
- "DUP $1 "POP $1 :redundance
- "DUP2 $1 "POP2 $1 :redundance
- "STH $1 "STHkr $1 :redundance
- "STH2 $1 "STH2kr $1 :redundance
- "STHr $1 "STHk $1 :redundance
- "STH2r $1 "STH2k $1 :redundance
- "JMP2r $1 "JMP2r $1 :redundance
- "JMP2 $1 "JMP2r $1 :redundance
- "JMP2 $1 "BRK $1 :redundance
- "JMP $1 "BRK $1 :redundance
- "BRK $1 "BRK $1 :redundance
- "SWP $1 "ADD $1 :redundance
- "SWP2 $1 "ADD2 $1 :redundance
- "SWP $1 "MUL $1 :redundance
- "SWP2 $1 "MUL2 $1 :redundance
- "SWP $1 "EQU $1 :redundance
- "SWP2 $1 "EQU2 $1 :redundance
- "SWP $1 "NEQ $1 :redundance
- "SWP2 $1 "NEQ2 $1 :redundance
- "#ff $1 "GTH $1 :redundance
- "#ffff $1 "GTH2 $1 :redundance
- "#00 $1 "LTH $1 :redundance
- "#0000 $1 "LTH2 $1 :redundance
- "#00 $1 "ADD $1 :redundance
- "#0000 $1 "ADD2 $1 :redundance
- "#00 $1 "SUB $1 :redundance
- "#0000 $1 "SUB2 $1 :redundance
- "#01 $1 "MUL $1 :redundance
- "#0001 $1 "MUL2 $1 :redundance
- "#01 $1 "DIV $1 :redundance
- "#0001 $1 "DIV2 $1 :redundance
- "#ff $1 "AND $1 :redundance
- "#ffff $1 "AND2 $1 :redundance
- "#00 $1 "ORA $1 :redundance
- "#0000 $1 "ORA2 $1 :redundance
- "#00 $1 "EOR $1 :redundance
- "#0000 $1 "EOR2 $1 :redundance
- "#00 $1 "SFT $1 :redundance
- "#00 $1 "SFT2 $1 :redundance
- "AND $1 "JMP $1 :unsafe
- "ORA $1 "JMP $1 :unsafe
- "EOR $1 "JMP $1 :unsafe
- ";__ $1 "STH2 $1 :unstashed
- ".__ $1 "STH $1 :unstashed
- "#__ $1 "STH $1 :unstashed
- "#____ $1 "STH2 $1 :unstashed
- "LDZ $1 "STH $1 :latestack
- "LDZ2 $1 "STH2 $1 :latestack
- "DEIk $1 "STH $1 :latestack
- "DEI2k $1 "STH2 $1 :latestack
- "LDZk $1 "STH $1 :latestack
- "LDZ2k $1 "STH2 $1 :latestack
- "DEI $1 "STH $1 :latestack
- "DEI2 $1 "STH2 $1 :latestack
- "STH2r $1 "ADD $1 :eagerstack
- "STH2r $1 "SUB $1 :eagerstack
- "STH2r $1 "MUL $1 :eagerstack
- "STH2r $1 "DIV $1 :eagerstack
- "STH2r $1 "EQU $1 :eagerstack
- "STH2r $1 "NEQ $1 :eagerstack
- "STH2r $1 "GTH $1 :eagerstack
- "STH2r $1 "LTH $1 :eagerstack
- "STH2 $1 "ADDr $1 :eagerstack
- "STH2 $1 "SUBr $1 :eagerstack
- "STH2 $1 "MULr $1 :eagerstack
- "STH2 $1 "DIVr $1 :eagerstack
- "STH2 $1 "EQUr $1 :eagerstack
- "STH2 $1 "NEQr $1 :eagerstack
- "STH2 $1 "GTHr $1 :eagerstack
- "STH2 $1 "LTHr $1 :eagerstack
- "#__ $1 "#__ $1 :combine
- "DUP $1 "DUP $1 :keep
- "DUP2 $1 "DUP2 $1 :keep
- "DUP $1 "INC $1 :keep
- "DUP2 $1 "INC2 $1 :keep
- "DUP $1 "STH $1 :keep
- "DUP2 $1 "STH2 $1 :keep
- "DUP $1 "LDA $1 :keep
- "DUP2 $1 "LDA2 $1 :keep
- "DUP $1 "LDR $1 :keep
- "DUP2 $1 "LDR2 $1 :keep
- "DUP $1 "LDZ $1 :keep
- "DUP2 $1 "LDZ2 $1 :keep
- "DUP $1 "DEI $1 :keep
- "DUP2 $1 "DEI2 $1 :keep
- "DUP2 $1 "SWP2 $1 :swpk
- "DUP2 $1 "OVR $1 :ovrk
- "OVR $1 "DUP2 $1 :ovrk
- "DUP2 $1 "EQU $1 :equk
- "DUP2 $1 "NEQ $1 :neqk
- "DUP2 $1 "GTH $1 :gthk
- "DUP2 $1 "LTH $1 :lthk
- "DUP2 $1 "ADD $1 :addk
- "DUP2 $1 "SUB $1 :subk
- "DUP2 $1 "MUL $1 :mulk
- "DUP2 $1 "DIV $1 :divk
- "DUP2 $1 "AND $1 :andk
- "DUP2 $1 "ORA $1 :orak
- "DUP2 $1 "EOR $1 :eork
- "DUP2 $1 "SFT $1 :sftk
- "SWP $1 "POP $1 :nip
- "SWP2 $1 "POP2 $1 :nip2
- "#01 $1 "ADD $1 :inc
- "#0001 $1 "ADD2 $1 :inc2
- "#02 $1 "ADD $1 :inc-twice
- "#0002 $1 "ADD2 $1 :inc2-twice
- "POP $1 "POP $1 :pop2
- "NIP $1 "POP $1 :pop2
- "POPr $1 "POPr $1 :pop2r
- "POP $1 "NIP $1 :pop2
- "OVR $1 "OVR $1 :dup2
- "#0101 $1 "EQU2 $1 :and
- "#0000 $1 "NEQ2 $1 :ora
- "#0000 $1 "GTH2 $1 :ora
- "#ffff $1 "NEQ2 $1 :inc2ora
- "#02 $1 "DIV $1 :sft01
- "#0002 $1 "DIV2 $1 :sft201
- "#04 $1 "DIV $1 :sft02
- "#0004 $1 "DIV2 $1 :sft202
- "#08 $1 "DIV $1 :sft03
- "#0008 $1 "DIV2 $1 :sft203
- "#10 $1 "DIV $1 :sft04
- "#0010 $1 "DIV2 $1 :sft204
- "#20 $1 "DIV $1 :sft05
- "#0020 $1 "DIV2 $1 :sft205
- "#40 $1 "DIV $1 :sft06
- "#0040 $1 "DIV2 $1 :sft206
- "#80 $1 "DIV $1 :sft07
- "#0080 $1 "DIV2 $1 :sft207
- "#02 $1 "MUL $1 :sft10
- "#0002 $1 "MUL2 $1 :sft210
- "#04 $1 "MUL $1 :sft20
- "#0004 $1 "MUL2 $1 :sft220
- "#08 $1 "MUL $1 :sft30
- "#0008 $1 "MUL2 $1 :sft230
- "#10 $1 "MUL $1 :sft40
- "#0010 $1 "MUL2 $1 :sft240
- "#20 $1 "MUL $1 :sft50
- "#0020 $1 "MUL2 $1 :sft250
- "#40 $1 "MUL $1 :sft60
- "#0040 $1 "MUL2 $1 :sft260
- "#80 $1 "MUL $1 :sft70
- "#0080 $1 "MUL2 $1 :sft270
- "#00 $1 "#01 $1 :inck
- "#0000 $1 "#0001 $1 :inc2k
- "#10 $1 "SFT $1 :dupadd
- "#10 $1 "SFT2 $1 :dup2add2
- "JSR2 $1 "JMP2r $1 :jmp2
- "JSR $1 "JMP2r $1 :jmp
- "STH2kr $1 "LDA $1 :ldakrsthr
- "STH2k $1 "LDAr $1 :ldaksth
- "#ff $1 "NEQ $1 :inc
+ "STH $1 "STHr $1 =redundance
+ "STH2 $1 "STH2r $1 =redundance
+ "STHr $1 "STH $1 =redundance
+ "STH2r $1 "STH2 $1 =redundance
+ "DUP $1 "SWP $1 =redundance
+ "DUP2 $1 "SWP2 $1 =redundance
+ "SWP $1 "SWP $1 =redundance
+ "SWP2 $1 "SWP2 $1 =redundance
+ "SWPr $1 "SWPr $1 =redundance
+ "SWP2r $1 "SWP2r $1 =redundance
+ "DUP $1 "POP $1 =redundance
+ "DUP2 $1 "POP2 $1 =redundance
+ "STH $1 "STHkr $1 =redundance
+ "STH2 $1 "STH2kr $1 =redundance
+ "STHr $1 "STHk $1 =redundance
+ "STH2r $1 "STH2k $1 =redundance
+ "JMP2r $1 "JMP2r $1 =redundance
+ "JMP2 $1 "JMP2r $1 =redundance
+ "JMP2 $1 "BRK $1 =redundance
+ "JMP $1 "BRK $1 =redundance
+ "BRK $1 "BRK $1 =redundance
+ "SWP $1 "ADD $1 =redundance
+ "SWP2 $1 "ADD2 $1 =redundance
+ "SWP $1 "MUL $1 =redundance
+ "SWP2 $1 "MUL2 $1 =redundance
+ "SWP $1 "EQU $1 =redundance
+ "SWP2 $1 "EQU2 $1 =redundance
+ "SWP $1 "NEQ $1 =redundance
+ "SWP2 $1 "NEQ2 $1 =redundance
+ "#ff $1 "GTH $1 =redundance
+ "#ffff $1 "GTH2 $1 =redundance
+ "#00 $1 "LTH $1 =redundance
+ "#0000 $1 "LTH2 $1 =redundance
+ "#00 $1 "ADD $1 =redundance
+ "#0000 $1 "ADD2 $1 =redundance
+ "#00 $1 "SUB $1 =redundance
+ "#0000 $1 "SUB2 $1 =redundance
+ "#01 $1 "MUL $1 =redundance
+ "#0001 $1 "MUL2 $1 =redundance
+ "#01 $1 "DIV $1 =redundance
+ "#0001 $1 "DIV2 $1 =redundance
+ "#ff $1 "AND $1 =redundance
+ "#ffff $1 "AND2 $1 =redundance
+ "#00 $1 "ORA $1 =redundance
+ "#0000 $1 "ORA2 $1 =redundance
+ "#00 $1 "EOR $1 =redundance
+ "#0000 $1 "EOR2 $1 =redundance
+ "#00 $1 "SFT $1 =redundance
+ "#00 $1 "SFT2 $1 =redundance
+ "AND $1 "JMP $1 =unsafe
+ "ORA $1 "JMP $1 =unsafe
+ "EOR $1 "JMP $1 =unsafe
+ ";__ $1 "STH2 $1 =unstashed
+ ".__ $1 "STH $1 =unstashed
+ "#__ $1 "STH $1 =unstashed
+ "#____ $1 "STH2 $1 =unstashed
+ "LDZ $1 "STH $1 =latestack
+ "LDZ2 $1 "STH2 $1 =latestack
+ "DEIk $1 "STH $1 =latestack
+ "DEI2k $1 "STH2 $1 =latestack
+ "LDZk $1 "STH $1 =latestack
+ "LDZ2k $1 "STH2 $1 =latestack
+ "DEI $1 "STH $1 =latestack
+ "DEI2 $1 "STH2 $1 =latestack
+ "STH2r $1 "ADD $1 =eagerstack
+ "STH2r $1 "SUB $1 =eagerstack
+ "STH2r $1 "MUL $1 =eagerstack
+ "STH2r $1 "DIV $1 =eagerstack
+ "STH2r $1 "EQU $1 =eagerstack
+ "STH2r $1 "NEQ $1 =eagerstack
+ "STH2r $1 "GTH $1 =eagerstack
+ "STH2r $1 "LTH $1 =eagerstack
+ "STH2 $1 "ADDr $1 =eagerstack
+ "STH2 $1 "SUBr $1 =eagerstack
+ "STH2 $1 "MULr $1 =eagerstack
+ "STH2 $1 "DIVr $1 =eagerstack
+ "STH2 $1 "EQUr $1 =eagerstack
+ "STH2 $1 "NEQr $1 =eagerstack
+ "STH2 $1 "GTHr $1 =eagerstack
+ "STH2 $1 "LTHr $1 =eagerstack
+ "#__ $1 "#__ $1 =combine
+ "DUP $1 "DUP $1 =keep
+ "DUP2 $1 "DUP2 $1 =keep
+ "DUP $1 "INC $1 =keep
+ "DUP2 $1 "INC2 $1 =keep
+ "DUP $1 "STH $1 =keep
+ "DUP2 $1 "STH2 $1 =keep
+ "DUP $1 "LDA $1 =keep
+ "DUP2 $1 "LDA2 $1 =keep
+ "DUP $1 "LDR $1 =keep
+ "DUP2 $1 "LDR2 $1 =keep
+ "DUP $1 "LDZ $1 =keep
+ "DUP2 $1 "LDZ2 $1 =keep
+ "DUP $1 "DEI $1 =keep
+ "DUP2 $1 "DEI2 $1 =keep
+ "DUP2 $1 "SWP2 $1 =swpk
+ "DUP2 $1 "OVR $1 =ovrk
+ "OVR $1 "DUP2 $1 =ovrk
+ "DUP2 $1 "EQU $1 =equk
+ "DUP2 $1 "NEQ $1 =neqk
+ "DUP2 $1 "GTH $1 =gthk
+ "DUP2 $1 "LTH $1 =lthk
+ "DUP2 $1 "ADD $1 =addk
+ "DUP2 $1 "SUB $1 =subk
+ "DUP2 $1 "MUL $1 =mulk
+ "DUP2 $1 "DIV $1 =divk
+ "DUP2 $1 "AND $1 =andk
+ "DUP2 $1 "ORA $1 =orak
+ "DUP2 $1 "EOR $1 =eork
+ "DUP2 $1 "SFT $1 =sftk
+ "SWP $1 "POP $1 =nip
+ "SWP2 $1 "POP2 $1 =nip2
+ "#01 $1 "ADD $1 =inc
+ "#0001 $1 "ADD2 $1 =inc2
+ "#02 $1 "ADD $1 =inc-twice
+ "#0002 $1 "ADD2 $1 =inc2-twice
+ "POP $1 "POP $1 =pop2
+ "NIP $1 "POP $1 =pop2
+ "POPr $1 "POPr $1 =pop2r
+ "POP $1 "NIP $1 =pop2
+ "OVR $1 "OVR $1 =dup2
+ "#0101 $1 "EQU2 $1 =and
+ "#0000 $1 "NEQ2 $1 =ora
+ "#0000 $1 "GTH2 $1 =ora
+ "#ffff $1 "NEQ2 $1 =inc2ora
+ "#02 $1 "DIV $1 =sft01
+ "#0002 $1 "DIV2 $1 =sft201
+ "#04 $1 "DIV $1 =sft02
+ "#0004 $1 "DIV2 $1 =sft202
+ "#08 $1 "DIV $1 =sft03
+ "#0008 $1 "DIV2 $1 =sft203
+ "#10 $1 "DIV $1 =sft04
+ "#0010 $1 "DIV2 $1 =sft204
+ "#20 $1 "DIV $1 =sft05
+ "#0020 $1 "DIV2 $1 =sft205
+ "#40 $1 "DIV $1 =sft06
+ "#0040 $1 "DIV2 $1 =sft206
+ "#80 $1 "DIV $1 =sft07
+ "#0080 $1 "DIV2 $1 =sft207
+ "#02 $1 "MUL $1 =sft10
+ "#0002 $1 "MUL2 $1 =sft210
+ "#04 $1 "MUL $1 =sft20
+ "#0004 $1 "MUL2 $1 =sft220
+ "#08 $1 "MUL $1 =sft30
+ "#0008 $1 "MUL2 $1 =sft230
+ "#10 $1 "MUL $1 =sft40
+ "#0010 $1 "MUL2 $1 =sft240
+ "#20 $1 "MUL $1 =sft50
+ "#0020 $1 "MUL2 $1 =sft250
+ "#40 $1 "MUL $1 =sft60
+ "#0040 $1 "MUL2 $1 =sft260
+ "#80 $1 "MUL $1 =sft70
+ "#0080 $1 "MUL2 $1 =sft270
+ "#00 $1 "#01 $1 =inck
+ "#0000 $1 "#0001 $1 =inc2k
+ "#10 $1 "SFT $1 =dupadd
+ "#10 $1 "SFT2 $1 =dup2add2
+ "JSR2 $1 "JMP2r $1 =jmp2
+ "JSR $1 "JMP2r $1 =jmp
+ "STH2kr $1 "LDA $1 =ldakrsthr
+ "STH2k $1 "LDAr $1 =ldaksth
+ "#ff $1 "NEQ $1 =inc
&end
@rules3
- "DUP $1 "#__ $1 "SWP $1 :00ovr
- "DUP2 $1 "#____ $1 "SWP2 $1 :0000ovr2
- "ROT $1 "ROT $1 "ROT $1 :redundance
- "ROT2 $1 "ROT2 $1 "ROT2 $1 :redundance
- "SFT $1 "#__ $1 "SFT $1 :combine
- "SFT2 $1 "#__ $1 "SFT $1 :combine
- "SFT $1 "#__ $1 "SFT2 $1 :combine
- "SFT2 $1 "#__ $1 "SFT2 $1 :combine
- "OVR $1 "OVR $1 "EQU $1 :keep
- "OVR2 $1 "OVR2 $1 "EQU2 $1 :keep
- "OVR $1 "OVR $1 "NEQ $1 :keep
- "OVR2 $1 "OVR2 $1 "NEQ2 $1 :keep
- "OVR $1 "OVR $1 "GTH $1 :keep
- "OVR2 $1 "OVR2 $1 "GTH2 $1 :keep
- "OVR $1 "OVR $1 "LTH $1 :keep
- "OVR2 $1 "OVR2 $1 "LTH2 $1 :keep
- "OVR $1 "OVR $1 "ADD $1 :keep
- "OVR2 $1 "OVR2 $1 "ADD2 $1 :keep
- "OVR $1 "OVR $1 "SUB $1 :keep
- "OVR2 $1 "OVR2 $1 "SUB2 $1 :keep
- "OVR $1 "OVR $1 "MUL $1 :keep
- "OVR2 $1 "OVR2 $1 "MUL2 $1 :keep
- "OVR $1 "OVR $1 "DIV $1 :keep
- "OVR2 $1 "OVR2 $1 "DIV2 $1 :keep
- "OVR $1 "OVR $1 "AND $1 :keep
- "OVR2 $1 "OVR2 $1 "AND2 $1 :keep
- "OVR $1 "OVR $1 "ORA $1 :keep
- "OVR2 $1 "OVR2 $1 "ORA2 $1 :keep
- "OVR $1 "OVR $1 "EOR $1 :keep
- "OVR2 $1 "OVR2 $1 "EOR2 $1 :keep
- "OVR $1 "OVR $1 "SWP $1 :keep
- "OVR2 $1 "OVR2 $1 "SWP2 $1 :keep
- "DUP2 $1 "#0000 $1 "EQU2 $1 :orak00equ
- "OVR $1 "OVR $1 "OVR $1 :ovrk
- "OVR2 $1 "OVR2 $1 "OVR2 $1 :ovr2k
- "STH $1 "SWP $1 "STHr $1 :rotswp
- "STH2 $1 "SWP2 $1 "STH2r $1 :rot2swp2
+ "DUP $1 "#__ $1 "SWP $1 =00ovr
+ "DUP2 $1 "#____ $1 "SWP2 $1 =0000ovr2
+ "ROT $1 "ROT $1 "ROT $1 =redundance
+ "ROT2 $1 "ROT2 $1 "ROT2 $1 =redundance
+ "SFT $1 "#__ $1 "SFT $1 =combine
+ "SFT2 $1 "#__ $1 "SFT $1 =combine
+ "SFT $1 "#__ $1 "SFT2 $1 =combine
+ "SFT2 $1 "#__ $1 "SFT2 $1 =combine
+ "OVR $1 "OVR $1 "EQU $1 =keep
+ "OVR2 $1 "OVR2 $1 "EQU2 $1 =keep
+ "OVR $1 "OVR $1 "NEQ $1 =keep
+ "OVR2 $1 "OVR2 $1 "NEQ2 $1 =keep
+ "OVR $1 "OVR $1 "GTH $1 =keep
+ "OVR2 $1 "OVR2 $1 "GTH2 $1 =keep
+ "OVR $1 "OVR $1 "LTH $1 =keep
+ "OVR2 $1 "OVR2 $1 "LTH2 $1 =keep
+ "OVR $1 "OVR $1 "ADD $1 =keep
+ "OVR2 $1 "OVR2 $1 "ADD2 $1 =keep
+ "OVR $1 "OVR $1 "SUB $1 =keep
+ "OVR2 $1 "OVR2 $1 "SUB2 $1 =keep
+ "OVR $1 "OVR $1 "MUL $1 =keep
+ "OVR2 $1 "OVR2 $1 "MUL2 $1 =keep
+ "OVR $1 "OVR $1 "DIV $1 =keep
+ "OVR2 $1 "OVR2 $1 "DIV2 $1 =keep
+ "OVR $1 "OVR $1 "AND $1 =keep
+ "OVR2 $1 "OVR2 $1 "AND2 $1 =keep
+ "OVR $1 "OVR $1 "ORA $1 =keep
+ "OVR2 $1 "OVR2 $1 "ORA2 $1 =keep
+ "OVR $1 "OVR $1 "EOR $1 =keep
+ "OVR2 $1 "OVR2 $1 "EOR2 $1 =keep
+ "OVR $1 "OVR $1 "SWP $1 =keep
+ "OVR2 $1 "OVR2 $1 "SWP2 $1 =keep
+ "DUP2 $1 "#0000 $1 "EQU2 $1 =orak00equ
+ "OVR $1 "OVR $1 "OVR $1 =ovrk
+ "OVR2 $1 "OVR2 $1 "OVR2 $1 =ovr2k
+ "STH $1 "SWP $1 "STHr $1 =rotswp
+ "STH2 $1 "SWP2 $1 "STH2r $1 =rot2swp2
&end