mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-27 01:29:37 +00:00
Now using kickassembler-5.16-65ce02 properly.
This commit is contained in:
parent
afae4975f1
commit
f62631812e
@ -1,13 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="Maven: cml.kickass:kickassembler:5.16-65ce02.b">
|
||||
<library name="Maven: cml.kickass:kickassembler:5.16-65ce02.c">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/cml/kickass/kickassembler/5.16-65ce02.b/kickassembler-5.16-65ce02.b.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/cml/kickass/kickassembler/5.16-65ce02.c/kickassembler-5.16-65ce02.c.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/cml/kickass/kickassembler/5.16-65ce02.b/kickassembler-5.16-65ce02.b-javadoc.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/cml/kickass/kickassembler/5.16-65ce02.c/kickassembler-5.16-65ce02.c-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/cml/kickass/kickassembler/5.16-65ce02.b/kickassembler-5.16-65ce02.b-sources.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/cml/kickass/kickassembler/5.16-65ce02.c/kickassembler-5.16-65ce02.c-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
@ -18,7 +18,7 @@
|
||||
<orderEntry type="library" name="Maven: org.antlr:antlr4-runtime:4.8-1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: cml.kickass:kickassembler:5.16-65ce02.b" level="project" />
|
||||
<orderEntry type="library" name="Maven: cml.kickass:kickassembler:5.16-65ce02.c" level="project" />
|
||||
<orderEntry type="library" name="Maven: info.picocli:picocli:4.2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: javax.json:javax.json-api:1.1.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.glassfish:javax.json:1.1.4" level="project" />
|
||||
|
2
pom.xml
2
pom.xml
@ -44,7 +44,7 @@
|
||||
<dependency>
|
||||
<groupId>cml.kickass</groupId>
|
||||
<artifactId>kickassembler</artifactId>
|
||||
<version>5.16-65ce02.b</version>
|
||||
<version>5.16-65ce02.c</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>info.picocli</groupId>
|
||||
|
@ -0,0 +1,4 @@
|
||||
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||
#Sun Jul 26 02:10:40 CEST 2020
|
||||
kickassembler-5.16-65ce02.c.jar>=
|
||||
kickassembler-5.16-65ce02.c.pom>=
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
56d1571c918b28593d3152fbb40097fb
|
@ -0,0 +1 @@
|
||||
48cf3ed4276035cc8a4ba97330a5c3cfad80a34d
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>cml.kickass</groupId>
|
||||
<artifactId>kickassembler</artifactId>
|
||||
<version>5.16-65ce02.c</version>
|
||||
<description>POM was created from install:install-file</description>
|
||||
</project>
|
@ -0,0 +1 @@
|
||||
bfe11cbb157b234ea12082890c8916b3
|
@ -0,0 +1 @@
|
||||
a6de8d19ac9d1cdbcdb13d22a5a6aaa08981c602
|
@ -3,7 +3,7 @@
|
||||
<groupId>cml.kickass</groupId>
|
||||
<artifactId>kickassembler</artifactId>
|
||||
<versioning>
|
||||
<release>5.16</release>
|
||||
<release>5.16-65ce02.c</release>
|
||||
<versions>
|
||||
<version>4.19</version>
|
||||
<version>5.7</version>
|
||||
@ -15,7 +15,8 @@
|
||||
<version>5.16</version>
|
||||
<version>5.16-65ce02.a</version>
|
||||
<version>5.16-65ce02.b</version>
|
||||
<version>5.16-65ce02.c</version>
|
||||
</versions>
|
||||
<lastUpdated>20200725235309</lastUpdated>
|
||||
<lastUpdated>20200726001040</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<groupId>cml.kickass</groupId>
|
||||
<artifactId>kickassembler</artifactId>
|
||||
<versioning>
|
||||
<release>5.16</release>
|
||||
<release>5.16-65ce02.c</release>
|
||||
<versions>
|
||||
<version>4.19</version>
|
||||
<version>5.7</version>
|
||||
@ -15,7 +15,8 @@
|
||||
<version>5.16</version>
|
||||
<version>5.16-65ce02.a</version>
|
||||
<version>5.16-65ce02.b</version>
|
||||
<version>5.16-65ce02.c</version>
|
||||
</versions>
|
||||
<lastUpdated>20200725235309</lastUpdated>
|
||||
<lastUpdated>20200726001040</lastUpdated>
|
||||
</versioning>
|
||||
</metadata>
|
||||
|
@ -1 +1 @@
|
||||
acbc3a966df601966f31fa7b39ca107b
|
||||
adfabf6e204c3daac799ee85ec8f7319
|
@ -1 +1 @@
|
||||
5ad5d74f555a0e5d39b6f2139c8b0b8f812f1c01
|
||||
c05e418489895864cd4f28522cb3ea9e8ba1abe9
|
@ -9,7 +9,7 @@ import dk.camelot64.kickc.model.*;
|
||||
import dk.camelot64.kickc.model.statements.StatementSource;
|
||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||
import dk.camelot64.kickc.parser.CTargetPlatformParser;
|
||||
import kickass.KickAssembler;
|
||||
import kickass.KickAssembler65CE02;
|
||||
import kickass.nonasm.c64.CharToPetsciiConverter;
|
||||
import picocli.CommandLine;
|
||||
|
||||
@ -448,7 +448,7 @@ public class KickC implements Callable<Integer> {
|
||||
int kasmResult = -1;
|
||||
try {
|
||||
CharToPetsciiConverter.setCurrentEncoding("screencode_mixed");
|
||||
kasmResult = KickAssembler.main2(assembleCommand.toArray(new String[0]));
|
||||
kasmResult = KickAssembler65CE02.main2(assembleCommand.toArray(new String[0]));
|
||||
} catch(Throwable e) {
|
||||
throw new CompileError("KickAssembling file failed! ", e);
|
||||
} finally {
|
||||
|
@ -1,15 +1,15 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.asm.*;
|
||||
import dk.camelot64.kickc.asm.AsmFormat;
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.InternalError;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import kickass.KickAssembler;
|
||||
import kickass.KickAssembler65CE02;
|
||||
import kickass.nonasm.c64.CharToPetsciiConverter;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.*;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@ -86,7 +86,7 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
|
||||
int asmRes = -1;
|
||||
try {
|
||||
CharToPetsciiConverter.setCurrentEncoding("screencode_mixed");
|
||||
asmRes = KickAssembler.main2(new String[]{asmFile.getAbsolutePath(), "-o", binaryFile.getAbsolutePath()});
|
||||
asmRes = KickAssembler65CE02.main2(new String[]{asmFile.getAbsolutePath(), "-o", binaryFile.getAbsolutePath()});
|
||||
} catch(Throwable e) {
|
||||
if(e instanceof AssertionError && e.getMessage().contains("Invalid number of bytes in memblock!")) {
|
||||
throw new CompileError("Error! KickAssembler failed due to assertion. Please run java without -ea / -enableassertions.", e);
|
||||
|
@ -1,3 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
# mvn install:install-file -Dmaven.repo.local=./repo/ -Dfile=/Applications/KickAssembler/KickAss.jar -DgroupId=cml.kickass -DartifactId=kickassembler -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true -Dversion=5.16
|
||||
mvn install:install-file -Dmaven.repo.local=./repo/ -Dfile=/Users/jespergravgaard/c64/kickassembler65ce02/out/KickAss65CE02.jar -DgroupId=cml.kickass -DartifactId=kickassembler -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true -Dversion=5.16-65ce02.b
|
||||
mvn install:install-file -Dmaven.repo.local=./repo/ -Dfile=/Users/jespergravgaard/c64/kickassembler65ce02/out/KickAss65CE02.jar -DgroupId=cml.kickass -DartifactId=kickassembler -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true -Dversion=5.16-65ce02.c
|
||||
|
@ -1,6 +1,6 @@
|
||||
package dk.camelot64.kickc.test;
|
||||
|
||||
import kickass.KickAssembler;
|
||||
import kickass.KickAssembler65CE02;
|
||||
import kickass.nonasm.c64.CharToPetsciiConverter;
|
||||
import org.junit.Test;
|
||||
|
||||
@ -27,7 +27,7 @@ public class TestKickAssRun {
|
||||
System.setOut(new PrintStream(kickAssOut));
|
||||
try {
|
||||
CharToPetsciiConverter.setCurrentEncoding("screencode_mixed");
|
||||
KickAssembler.main2(new String[]{asmPath.toAbsolutePath().toString(), "-o", asmPrgFile.getAbsolutePath()});
|
||||
KickAssembler65CE02.main2(new String[]{asmPath.toAbsolutePath().toString(), "-o", asmPrgFile.getAbsolutePath()});
|
||||
} catch (AssertionError e) {
|
||||
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
|
||||
String output = kickAssOut.toString();
|
||||
|
@ -8,7 +8,7 @@ import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.TargetPlatform;
|
||||
import dk.camelot64.kickc.parser.CTargetPlatformParser;
|
||||
import kickass.KickAssembler;
|
||||
import kickass.KickAssembler65CE02;
|
||||
import kickass.nonasm.c64.CharToPetsciiConverter;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
@ -42,6 +42,11 @@ public class TestPrograms {
|
||||
public TestPrograms() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMega65C65ce02() throws IOException, URISyntaxException {
|
||||
compileAndCompare("mega65-c65ce02.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCastingNegative() throws IOException, URISyntaxException {
|
||||
compileAndCompare("casting-negative.c");
|
||||
@ -4610,7 +4615,7 @@ public class TestPrograms {
|
||||
int asmRes = -1;
|
||||
try {
|
||||
CharToPetsciiConverter.setCurrentEncoding("screencode_mixed");
|
||||
asmRes = KickAssembler.main2(new String[]{asmFile.getAbsolutePath(), "-log", asmLogFile.getAbsolutePath(), "-o", asmPrgFile.getAbsolutePath(), "-vicesymbols", "-showmem", "-bytedump"});
|
||||
asmRes = KickAssembler65CE02.main2(new String[]{asmFile.getAbsolutePath(), "-log", asmLogFile.getAbsolutePath(), "-o", asmPrgFile.getAbsolutePath(), "-vicesymbols", "-showmem", "-bytedump"});
|
||||
} catch(Throwable e) {
|
||||
fail("KickAssembling file failed! " + e.getMessage());
|
||||
} finally {
|
||||
|
15
src/test/java/dk/camelot64/kickc/test/kickasstest.asm
Normal file
15
src/test/java/dk/camelot64/kickc/test/kickasstest.asm
Normal file
@ -0,0 +1,15 @@
|
||||
// Minimal if() test
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
main: {
|
||||
ldx #0
|
||||
lda #'a'
|
||||
b1:
|
||||
sta SCREEN,x
|
||||
inx
|
||||
cpx #40
|
||||
bcc b1
|
||||
rts
|
||||
}
|
10
src/test/kc/mega65-c65ce02.c
Normal file
10
src/test/kc/mega65-c65ce02.c
Normal file
@ -0,0 +1,10 @@
|
||||
// Tests compiling inline C65CE02 Assembler
|
||||
|
||||
void main() {
|
||||
kickasm {{
|
||||
.cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
}}
|
||||
}
|
14
src/test/ref/mega65-c65ce02.asm
Normal file
14
src/test/ref/mega65-c65ce02.asm
Normal file
@ -0,0 +1,14 @@
|
||||
// Tests compiling inline C65CE02 Assembler
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
// kickasm
|
||||
.cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
|
||||
// }
|
||||
rts
|
||||
}
|
12
src/test/ref/mega65-c65ce02.cfg
Normal file
12
src/test/ref/mega65-c65ce02.cfg
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from
|
||||
kickasm() {{ .cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
}}
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[1] return
|
||||
to:@return
|
159
src/test/ref/mega65-c65ce02.log
Normal file
159
src/test/ref/mega65-c65ce02.log
Normal file
@ -0,0 +1,159 @@
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from __start
|
||||
kickasm() {{ .cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
}}
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
|
||||
(void()) __start()
|
||||
__start: scope:[__start] from
|
||||
call main
|
||||
to:__start::@1
|
||||
__start::@1: scope:[__start] from __start
|
||||
to:__start::@return
|
||||
__start::@return: scope:[__start] from __start::@1
|
||||
return
|
||||
to:@return
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(void()) __start()
|
||||
(label) __start::@1
|
||||
(label) __start::@return
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
Removing unused procedure __start
|
||||
Removing unused procedure block __start
|
||||
Removing unused procedure block __start::@1
|
||||
Removing unused procedure block __start::@return
|
||||
Successful SSA optimization PassNEliminateEmptyStart
|
||||
CALL GRAPH
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from
|
||||
kickasm() {{ .cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
}}
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[1] return
|
||||
to:@return
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
Complete equivalence classes
|
||||
|
||||
INITIAL ASM
|
||||
Target platform is c64basic / MOS6502X
|
||||
// File Comments
|
||||
// Tests compiling inline C65CE02 Assembler
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// main
|
||||
main: {
|
||||
// kickasm() {{ .cpu _45gs02 ldz #2 stz $0800 adcq ($2) }}
|
||||
.cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
|
||||
jmp __breturn
|
||||
// main::@return
|
||||
__breturn:
|
||||
// [1] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 265 combination
|
||||
Uplifting [] best 265 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
// Tests compiling inline C65CE02 Assembler
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// main
|
||||
main: {
|
||||
// kickasm() {{ .cpu _45gs02 ldz #2 stz $0800 adcq ($2) }}
|
||||
.cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
|
||||
jmp __breturn
|
||||
// main::@return
|
||||
__breturn:
|
||||
// [1] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp __breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction __breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 262
|
||||
|
||||
// File Comments
|
||||
// Tests compiling inline C65CE02 Assembler
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
// main
|
||||
main: {
|
||||
// kickasm
|
||||
// kickasm() {{ .cpu _45gs02 ldz #2 stz $0800 adcq ($2) }}
|
||||
.cpu _45gs02
|
||||
ldz #2
|
||||
stz $0800
|
||||
adcq ($2)
|
||||
|
||||
// main::@return
|
||||
// }
|
||||
// [1] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
3
src/test/ref/mega65-c65ce02.sym
Normal file
3
src/test/ref/mega65-c65ce02.sym
Normal file
@ -0,0 +1,3 @@
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
Loading…
x
Reference in New Issue
Block a user