1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-09 18:29:36 +00:00

Now using kickassembler-5.16-65ce02 properly.

This commit is contained in:
jespergravgaard 2020-07-26 02:25:33 +02:00
parent afae4975f1
commit f62631812e
25 changed files with 261 additions and 24 deletions

View File

@ -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>

View File

@ -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" />

View File

@ -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>

View File

@ -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>=

View File

@ -0,0 +1 @@
56d1571c918b28593d3152fbb40097fb

View File

@ -0,0 +1 @@
48cf3ed4276035cc8a4ba97330a5c3cfad80a34d

View File

@ -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>

View File

@ -0,0 +1 @@
bfe11cbb157b234ea12082890c8916b3

View File

@ -0,0 +1 @@
a6de8d19ac9d1cdbcdb13d22a5a6aaa08981c602

View File

@ -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>

View File

@ -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>

View File

@ -1 +1 @@
acbc3a966df601966f31fa7b39ca107b
adfabf6e204c3daac799ee85ec8f7319

View File

@ -1 +1 @@
5ad5d74f555a0e5d39b6f2139c8b0b8f812f1c01
c05e418489895864cd4f28522cb3ea9e8ba1abe9

View File

@ -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 {

View File

@ -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);

View File

@ -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

View File

@ -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();

View File

@ -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 {

View 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
}

View File

@ -0,0 +1,10 @@
// Tests compiling inline C65CE02 Assembler
void main() {
kickasm {{
.cpu _45gs02
ldz #2
stz $0800
adcq ($2)
}}
}

View 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
}

View 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

View 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

View File

@ -0,0 +1,3 @@
(void()) main()
(label) main::@return