Merge branch 'master' into fix-compiilation-performance-only-coalesce-zeropage

This commit is contained in:
jespergravgaard 2023-04-24 07:42:41 +02:00
commit 153ab54f10
443 changed files with 34342 additions and 112649 deletions

17
.gitignore vendored
View File

@ -1,3 +1,6 @@
.project
.tmpdirs
/gen
*/*.mon
*/*.vs
*/*.brk
@ -5,11 +8,13 @@
*/*.sym
*/.tmpdirs
*/bin/
/target/
*/workspace.xml
**/.DS_Store
.project
.tmpdirs
**/.vscode/*.log
kickc.iml
/.idea/*
kickc.iml
/.vscode/*
**/.vscode/*
**/.vscode/*.log
**/target/*
*/workspace.xml
/gen/*
/src/main/fragment/cache

24
pom.xml
View File

@ -5,8 +5,8 @@
<modelVersion>4.0.0</modelVersion>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<argLine>-Xmx2048m</argLine>
</properties>
@ -47,24 +47,24 @@
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4</artifactId>
<version>4.9.3</version>
<version>4.12.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.9.3</version>
<version>4.12.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.6.2</version>
<version>4.7.1</version>
</dependency>
<dependency>
<groupId>javax.json</groupId>
@ -124,7 +124,7 @@
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.9.3</version>
<version>4.12.0</version>
<executions>
<execution>
<id>antlr</id>
@ -152,7 +152,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<version>3.0.0-M9</version>
<configuration>
<excludes>
<exclude>**/TestFragments.java</exclude>
@ -167,7 +167,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
<version>0.8.9</version>
<executions>
<execution>
<id>pre-unit-test</id>
@ -187,7 +187,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
@ -201,7 +201,7 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.5.0</version>
<version>5.1.8</version>
<executions>
<execution>
<id>bundle-manifest</id>
@ -214,7 +214,7 @@
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<version>3.5.0</version>
<configuration>
<finalName>kickc</finalName>
<tarLongFileMode>posix</tarLongFileMode>

View File

@ -75,6 +75,7 @@ LOCAL_RESERVE: '__zp_reserve' ;
ADDRESS: '__address' ;
ADDRESS_ZEROPAGE: '__zp' ;
ADDRESS_MAINMEM: '__mem' ;
BANK: '__bank' ;
FORM_SSA: '__ssa' ;
FORM_MA: '__ma' ;
INTRINSIC: '__intrinsic' ;

View File

@ -136,7 +136,7 @@ parameterDecl
;
pragma
: PRAGMA NAME PAR_BEGIN pragmaParam (COMMA pragmaParam)* PAR_END
: PRAGMA NAME PAR_BEGIN (pragmaParam (COMMA pragmaParam)* )? PAR_END
;
pragmaParam
@ -161,6 +161,7 @@ directive
| EXTERN #directiveExtern
| EXPORT #directiveExport
| INLINE #directiveInline
| BANK PAR_BEGIN NAME COMMA NUMBER PAR_END #directiveBank
| INTRINSIC #directiveIntrinsic
| INTERRUPT ( PAR_BEGIN NAME PAR_END )? #directiveInterrupt
| LOCAL_RESERVE PAR_BEGIN pragmaParam ( COMMA pragmaParam )* PAR_END #directiveReserveZp
@ -243,9 +244,10 @@ expr
| expr ( '&&' ) expr #exprBinary
| expr ( '||' ) expr #exprBinary
| expr '?' expr COLON expr #exprTernary
| <assoc=right> expr '=' expr #exprAssignment
| <assoc=right> expr ASSIGN expr #exprAssignment
| <assoc=right> expr ASSIGN_COMPOUND expr #exprAssignmentCompound
| CURLY_BEGIN expr (COMMA expr )* COMMA? CURLY_END #initList
| CURLY_BEGIN DOT NAME ASSIGN expr CURLY_END #initUnion
| NAME #exprId
| NUMBER #exprNumber
| STRING+ #exprString

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
tsx
sta STACK_BASE+{c1},x

View File

@ -0,0 +1,3 @@
tya
tsx
sta STACK_BASE+{c1},x

View File

@ -0,0 +1,9 @@
ldy {m1}
lda {c1}+3,y
pha
lda {c1}+2,y
pha
lda {c1}+1,y
pha
lda {c1},y
pha

View File

@ -0,0 +1,8 @@
lda #0
pha
lda #0
pha
lda {m1}+1
pha
lda {m1}
pha

View File

@ -0,0 +1,11 @@
sta $ff
lda $0
pha
lda #{c1}
sta $0
lda $ff
jsr {la1}
sta $ff
pla
sta $0
lda $ff

View File

@ -0,0 +1,11 @@
sta $ff
lda $1
pha
lda #{c1}
sta $1
lda $ff
jsr {la1}
sta $ff
pla
sta $1
lda $ff

View File

@ -0,0 +1,4 @@
jsr $FF6E
.byte <{la1}
.byte >{la1}
.byte {c1}

View File

@ -0,0 +1,4 @@
jsr $FF6E
.byte <{la1}
.byte >{la1}
.byte {c1}

View File

@ -0,0 +1 @@
jsr {la1}

View File

@ -1 +1 @@
jmp $e034
jmp (isr_vsync)

View File

@ -0,0 +1,7 @@
lda #<{c1}
cmp {c2}
bne !+
lda #>{c1}
cmp {c2}+1
beq {la1}
!:

View File

@ -0,0 +1,7 @@
lda #<{c1}
cmp #<{c2}
bne !+
lda #>{c1}
cmp #>{c2}
beq {la1}
!:

View File

@ -0,0 +1,8 @@
lda ({z1}),y
cmp #<{c1}
bne !+
iny
lda ({z1}),y
cmp #>{c1}
beq {la1}
!:

View File

@ -0,0 +1,6 @@
lda #<{c1}
cmp {c2}
bne {la1}
lda #>{c1}
cmp {c2}+1
bne {la1}

View File

@ -0,0 +1,4 @@
lda ({z1}),y
sec
sbc #1
sta ({z1}),y

View File

@ -0,0 +1,6 @@
lda {z1}
cmp {c1}
bne {la1}
lda {z1}+1
cmp {c1}+1
bne {la1}

View File

@ -0,0 +1,3 @@
lda ({z1}),y
cmp ({z2}),y
bcc {la1}

View File

@ -0,0 +1,7 @@
ldy {m1}
lda #{c2}
sta {c1},y
lda #0
sta {c1}+1,y
sta {c1}+2,y
sta {c1}+3,y

View File

@ -0,0 +1,8 @@
ldy {m1}
lda #<{c2}
sta {c1},y
lda #>{c2}
sta {c1}+1,y
lda #0
sta {c1}+2,y
sta {c1}+3,y

View File

@ -0,0 +1,8 @@
lda #<{c2}
sta {c1},y
lda #>{c2}
sta {c1}+1,y
lda #<{c2}>>$10
sta {c1}+2,y
lda #>{c2}>>$10
sta {c1}+3,y

View File

@ -0,0 +1,6 @@
ldy #$00
lda ({z1}),y
sta {c1},x
iny
lda ({z1}),y
sta {c1}+1,x

View File

@ -0,0 +1,10 @@
ldy #0
lda {m1}
sta $fe
lda {m1}+1
sta $ff
lda ($fe),y
sta {m1}
iny
lda ($fe),y
sta {m1}+1

View File

@ -0,0 +1,11 @@
lda #{c1}
tay
clc
lda ({z2}),y
adc #<{c2}
sta {z1}
iny
lda ({z2}),y
adc #>{c2}
sta {z1}+1

View File

@ -0,0 +1,8 @@
ldx #0
!:
lda {c1},x
sta ({z1}),y
iny
inx
cpx #{c2}
bne !-

View File

@ -0,0 +1,8 @@
ldx #0
!:
lda {c1},x
sta ({z1}),y
iny
inx
cpx #{c2}
bne !-

View File

@ -0,0 +1,13 @@
lda {c2},y
sta $ff
clc
adc {c1},x
sta {c1},x
iny
lda $ff
ora #$7f
bmi !+
lda #0
!:
adc {c1}+1,x
sta {c1}+1,x

View File

@ -0,0 +1,7 @@
lda {c1},x
clc
adc {m1}
sta {c1},x
bcc !+
inc {c1}+1,x
!:

View File

@ -0,0 +1,6 @@
ldy {c2}
lda ({z1}),y
sta {c1},x
iny
lda ({z1}),y
sta {c1}+1,x

View File

@ -0,0 +1,13 @@
lda {c2},x
sta $ff
clc
adc {c1},y
sta {c1},y
iny
lda $ff
ora #$7f
bmi !+
lda #0
!:
adc {c1}+1,y
sta {c1}+1,y

View File

@ -0,0 +1,7 @@
lda {c1},y
clc
adc {m1}
sta {c1},y
bcc !+
inc {c1}+1,y
!:

View File

@ -0,0 +1,5 @@
lda {c2}
sta ({z1}),y
iny
lda {c2}+1
sta ({z1}),y

View File

@ -0,0 +1,8 @@
lda {m2}
sta ({z1}),y
ora #$7F
bmi !+
lda #$00
!:
iny
sta ({z1}),y

View File

@ -0,0 +1,5 @@
sta ({z2}),y
sta ({z1}),y
iny
sta ({z2}),y
sta ({z1}),y

View File

@ -0,0 +1,10 @@
iny
lda ({z1}),y
bne !+
dey
lda ({z1}),y
beq !e+
lsr
!:
bpl {la1}
!e:

View File

@ -0,0 +1,10 @@
iny
lda ({z1}),y
cmp #>{c1}
bne !+
dey
lda ({z1}),y
cmp #<{c1}
beq {la1}
!:
bcc {la1}

View File

@ -0,0 +1,8 @@
ldy {m1}
lda {c1},y
sec
sbc {m2}
sta {c1},y
lda {c1}+1,y
sbc {m2}+1
sta {c1}+1,y

View File

@ -0,0 +1,8 @@
ldy {m1}
lda {c1},y
clc
adc {m2}
sta {c1},y
lda {c1}+1,y
adc {m2}+1
sta {c1}+1,y

View File

@ -0,0 +1,6 @@
lda {c1},x
and #<{c2}
sta {c1},x
lda {c1}+1,x
and #>{c2}
sta {c1}+1,x

View File

@ -0,0 +1,6 @@
lda {c1},x
ora #<{c2}
sta {c1},x
lda {c1}+1,x
ora #>{c2}
sta {c1}+1,x

View File

@ -0,0 +1,6 @@
lda {c1},x
eor #<{c2}
sta {c1},x
lda {c1}+1,x
eor #>{c2}
sta {c1}+1,x

View File

@ -0,0 +1,7 @@
lda {c1},x
sec
sbc {m1}
sta {c1},x
lda {c1}+1,x
sbc {m1}+1
sta {c1}+1,x

View File

@ -0,0 +1,7 @@
lda {c1},x
sec
sbc {z1}
sta {c1},x
lda {c1}+1,x
sbc {z1}+1
sta {c1}+1,x

View File

@ -0,0 +1,7 @@
lda {c1},x
clc
adc {m1}
sta {c1},x
lda {c1}+1,x
adc {m1}+1
sta {c1}+1,x

View File

@ -0,0 +1,7 @@
clc
lda {c1},x
adc {z1}
sta {c1},x
lda {c1}+1,x
adc {z1}+1
sta {c1}+1,x

View File

@ -0,0 +1,6 @@
lda {c1},y
and #<{c2}
sta {c1},y
lda {c1}+1,y
and #>{c2}
sta {c1}+1,y

View File

@ -0,0 +1,6 @@
lda {c1},y
ora #<{c2}
sta {c1},y
lda {c1}+1,y
ora #>{c2}
sta {c1}+1,y

View File

@ -0,0 +1,7 @@
lda {c1},y
sec
sbc {m1}
sta {c1},y
lda {c1}+1,y
sbc {m1}+1
sta {c1}+1,y

View File

@ -0,0 +1,7 @@
lda {c1},y
clc
adc {m1}
sta {c1},y
lda {c1}+1,y
adc {m1}+1
sta {c1}+1,y

View File

@ -0,0 +1,6 @@
lda {c1}+1,y
cmp {m1}+1
bne {la1}
lda {c1},y
cmp {m1}
bne {la1}

View File

@ -0,0 +1,8 @@
ldy {z1}
lda {c1},y
sec
sbc {z2}
sta {c1},y
lda {c1}+1,y
sbc {z2}+1
sta {c1}+1,y

View File

@ -0,0 +1,8 @@
ldy {z1}
lda {c1},y
clc
adc {z2}
sta {c1},y
lda {c1}+1,y
adc {z2}+1
sta {c1}+1,y

View File

@ -0,0 +1,9 @@
lda {m1}
sta $fe
lda {m1}+1
sta $ff
lda {m2}
sta ($fe),y
iny
lda {m2}+1
sta ($fe),y

View File

@ -0,0 +1,10 @@
sec
ldy #{c1}
lda ({z1}),y
sbc {m2}
sta ({z1}),y
ldy #{c1}+1
lda ({z1}),y
sbc {m2}+1
sta ({z1}),y

View File

@ -0,0 +1,10 @@
clc
ldy #{c1}
lda ({z1}),y
adc {m2}
sta ({z1}),y
ldy #{c1}+1
lda ({z1}),y
adc {m2}+1
sta ({z1}),y

View File

@ -0,0 +1,8 @@
ldy #{c1}
lda ({z1}),y
ldy #{c1}
sta ({z1}),y
ldy #{c1}+1
lda ({z1}),y
ldy #{c1}+1
sta ({z1}),y

View File

@ -0,0 +1,8 @@
ldy #{c2}
lda ({z1}),y
ldy #{c1}
sta ({z1}),y
ldy #{c2}+1
lda ({z1}),y
ldy #{c1}+1
sta ({z1}),y

View File

@ -0,0 +1,5 @@
lda {c2}
sta ({z1}),y
iny
lda {c2}+1
sta ({z1}),y

View File

@ -0,0 +1,8 @@
ldy {z2}
lda ({z3}),y
and #<{c1}
sta ({z1}),y
iny
lda ({z3}),y
and #>{c1}
sta ({z1}),y

View File

@ -0,0 +1,8 @@
ldy {z2}
lda ({z3}),y
ora #<{c1}
sta ({z1}),y
iny
lda ({z3}),y
ora #>{c1}
sta ({z1}),y

View File

@ -0,0 +1,6 @@
lda {z1}
adc #1
sta {z1}
lda {z1}+1
adc #0
sta {z1}+1

View File

@ -0,0 +1,6 @@
lda {z2}
adc #1
sta {z1}
lda {z2}+1
adc #0
sta {z1}+1

View File

@ -0,0 +1,6 @@
ldy #$00
lda ({z1}),y
sta {c1},x
iny
lda ({z1}),y
sta {c1}+1,x

View File

@ -0,0 +1,6 @@
ldy {c2}
lda ({z1}),y
sta {c1},x
iny
lda ({z1}),y
sta {c1}+1,x

View File

@ -0,0 +1,7 @@
lda {z1}
cmp {c1},x
bne !+
lda {z1}+1
cmp {c1}+1,x
beq {la1}
!:

View File

@ -0,0 +1,7 @@
lda {z1}
cmp {c1},y
bne !+
lda {z1}+1
cmp {c1}+1,y
beq {la1}
!:

View File

@ -0,0 +1,8 @@
clc
lda {z1}
adc #1
sta {z1}
lda {z1}+1
adc #0
sta {z1}+1

View File

@ -0,0 +1,7 @@
clc
lda {z2}
adc #1
sta {z1}
lda {z2}+1
adc #0
sta {z1}+1

View File

@ -0,0 +1,7 @@
ldy #<{c1}
lda ({z1}),y
bne !+
iny
lda ({z1}),y
beq {la1}
!:

View File

@ -0,0 +1,7 @@
ldy #<{c1}
lda ({z1}),y
bne {la1}
iny
lda ({z1}),y
bne {la1}
!:

View File

@ -0,0 +1 @@
pla

View File

@ -0,0 +1,7 @@
cmp #{c1}
bcs !+
lda #0
jmp !e+
!:
lda #1
!e:

View File

@ -0,0 +1,3 @@
cmp #{c1}
lda #0
rol

View File

@ -0,0 +1,7 @@
lda {m2}
sta $fe
lda {m2}+1
sta $ff
lda ($fe),y
and #{c1}
sta {m1}

View File

@ -0,0 +1,2 @@
lda ({m2}),y
sta {m1}

View File

@ -0,0 +1,8 @@
lda {c1},x
sta {m1}
inx
lda {c1},x
sta {m1}+1
lda #0
sta {m1}+2
sta {m1}+3

View File

@ -0,0 +1,8 @@
lda {c1},y
sta {m1}
iny
lda {c1},y
sta {m1}+1
lda #0
sta {m1}+2
sta {m1}+3

View File

@ -0,0 +1,9 @@
ldy #{c1}
lda ({z2}),y
sta {m1}
iny
lda ({z2}),y
sta {m1}+1
lda #0
sta {m1}+2
sta {m1}+3

View File

@ -0,0 +1,5 @@
sta {m1}+1
sta {m1}+3
lda #{c1}
sta {m1}
stx {m1}+2

View File

@ -0,0 +1,5 @@
sta {m1}+1
lda #{c1}
sta {m1}
stx {m1}+2
stx {m1}+3

View File

@ -0,0 +1,5 @@
sta {m1}+1
lda #{c1}
sta {m1}
stx {m1}+2
sty {m1}+3

View File

@ -0,0 +1,13 @@
sec
lda #0
sbc {m1}
sta {m1}
lda #0
sbc {m1}+1
sta {m1}+1
lda #0
sbc {m1}+2
sta {m1}+2
lda #0
sbc {m1}+3
sta {m1}+3

View File

@ -0,0 +1,13 @@
sec
lda #0
sbc {m2}
sta {m1}
lda #0
sbc {m2}+1
sta {m1}+1
lda #0
sbc {m2}+2
sta {m1}+2
lda #0
sbc {m2}+3
sta {m1}+3

View File

@ -0,0 +1,12 @@
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}
lsr {m1}+3
ror {m1}+2
ror {m1}+1
ror {m1}

View File

@ -0,0 +1,13 @@
sec
lda {m2}
sbc #1
sta {m1}
lda {m2}+1
sbc #0
sta {m1}+1
lda {m2}+2
sbc #0
sta {m1}+2
lda {m2}+3
sbc #0
sta {m1}+3

View File

@ -0,0 +1,13 @@
sec
lda {m2}
sbc {m1}
sta {m1}
lda {m2}+1
sbc {m1}+1
sta {m1}+1
lda {m2}+2
sbc {m1}+2
sta {m1}+2
lda {m2}+3
sbc {m1}+3
sta {m1}+3

View File

@ -15,4 +15,4 @@ rol {m1}+3
asl {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3
rol {m1}+3

View File

@ -0,0 +1,20 @@
lda {m2}
asl
sta {m1}
lda {m2}+1
rol
sta {m1}+1
lda {m2}+2
rol
sta {m1}+2
lda {m2}+3
rol
sta {m1}+3
asl {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3
asl {m1}
rol {m1}+1
rol {m1}+2
rol {m1}+3

View File

@ -0,0 +1,16 @@
lda #>{c1}>>$10
cmp {m1}+3
bcc {la1}
bne !+
lda #<{c1}>>$10
cmp {m1}+2
bcc {la1}
bne !+
lda #>{c1}
cmp {m1}+1
bcc {la1}
bne !+
lda #<{c1}
cmp {m1}
bcc {la1}
!:

View File

@ -0,0 +1,17 @@
lda {m1}+3
cmp #>{c1}>>$10
bcc {la1}
bne {la1}
lda {m1}+2
cmp #<{c1}>>$10
bcc {la1}
bne {la1}
lda {m1}+1
cmp #>{c1}
bcc {la1}
bne {la1}
lda {m1}
cmp #<{c1}
bcc {la1}
bne {la1}
!:

View File

@ -0,0 +1,12 @@
lda {m1}+3
cmp {m2}+3
bne {la1}
lda {m1}+2
cmp {m2}+2
bne {la1}
lda {m1}+1
cmp {m2}+1
bne {la1}
lda {m1}
cmp {m2}
bne {la1}

View File

@ -0,0 +1,8 @@
lda {c1},x
sta {z1}
inx
lda {c1},x
sta {z1}+1
lda #0
sta {z1}+2
sta {z1}+3

View File

@ -0,0 +1,8 @@
lda {c1},y
sta {z1}
iny
lda {c1},y
sta {z1}+1
lda #0
sta {z1}+2
sta {z1}+3

View File

@ -0,0 +1,9 @@
ldy #{c1}
lda ({z2}),y
sta {z1}
iny
lda ({z2}),y
sta {z1}+1
lda #0
sta {z1}+2
sta {z1}+3

View File

@ -0,0 +1,8 @@
lda ({z2}),y
clc
adc {c2}
sta {m1}
iny
lda ({z2}),y
adc #0
sta {m1}+1

View File

@ -0,0 +1,11 @@
clc
lda ({z2}),y
adc {m1}
sta {m1}
lda ({z2}),y
ora #$7f
bmi !+
lda #0
!:
adc {m1}+1
sta {m1}+1

Some files were not shown because too many files have changed in this diff Show More