mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-08-01 17:29:45 +00:00
Added kickc.sh executor and examples of kickc code to release.
This commit is contained in:
parent
0b86f55829
commit
32d224589a
@ -11,9 +11,10 @@ release:
|
|||||||
artifacts:
|
artifacts:
|
||||||
name: kickc_${CI_BUILD_REF_NAME}
|
name: kickc_${CI_BUILD_REF_NAME}
|
||||||
paths:
|
paths:
|
||||||
|
- ./bin
|
||||||
- ./lib
|
- ./lib
|
||||||
- ./stdlib
|
- ./stdlib
|
||||||
|
- ./examples
|
||||||
- ./LICENSE*
|
- ./LICENSE*
|
||||||
- ./NOTICE*
|
- ./NOTICE*
|
||||||
- ./*.pdf
|
- ./*.pdf
|
||||||
|
|
||||||
|
@ -18,6 +18,14 @@
|
|||||||
<include>*.kc</include>
|
<include>*.kc</include>
|
||||||
</includes>
|
</includes>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>src/test/java/dk/camelot64/kickc/test/kc/examples</directory>
|
||||||
|
<outputDirectory>examples</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>*/*.kc</include>
|
||||||
|
<include>*/*.png</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>src/main/doc</directory>
|
<directory>src/main/doc</directory>
|
||||||
<outputDirectory></outputDirectory>
|
<outputDirectory></outputDirectory>
|
||||||
@ -25,6 +33,13 @@
|
|||||||
<include>*.pdf</include>
|
<include>*.pdf</include>
|
||||||
</includes>
|
</includes>
|
||||||
</fileSet>
|
</fileSet>
|
||||||
|
<fileSet>
|
||||||
|
<directory>src/main/script</directory>
|
||||||
|
<outputDirectory>bin</outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>*.sh</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
<fileSet>
|
<fileSet>
|
||||||
<directory>${project.build.directory}</directory>
|
<directory>${project.build.directory}</directory>
|
||||||
<outputDirectory>lib</outputDirectory>
|
<outputDirectory>lib</outputDirectory>
|
||||||
|
12
src/main/script/kickc.sh
Executable file
12
src/main/script/kickc.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# JAVA HOME
|
||||||
|
# KICKC HOME
|
||||||
|
export KICKC_HOME="$(dirname $0)/.."
|
||||||
|
# KCLIB HOME
|
||||||
|
export KICKCLIB_HOME="$KICKC_HOME/stdlib"
|
||||||
|
# KICKASSEMBLER HOME
|
||||||
|
# VICE HOME
|
||||||
|
|
||||||
|
echo java -jar lib/kickc-0.5-SNAPSHOT.jar -I $KICKCLIB_HOME $*
|
||||||
|
java -jar lib/kickc-0.5-SNAPSHOT.jar -I $KICKCLIB_HOME $*
|
@ -106,7 +106,23 @@ public class ReferenceHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public File getTmpFile(String fileName, String extension) {
|
public File getTmpFile(String fileName, String extension) {
|
||||||
return new File(tempDir.toFile(), fileName + extension);
|
File file = new File(tempDir.toFile(), fileName + extension);
|
||||||
|
mkPath(file);
|
||||||
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensures that the path to the passed file is created.
|
||||||
|
* @param file The file to create a path for
|
||||||
|
*/
|
||||||
|
private void mkPath(File file) {
|
||||||
|
Path parent = file.toPath().getParent();
|
||||||
|
File dir = parent.toFile();
|
||||||
|
if(!dir.exists()) {
|
||||||
|
mkPath(dir);
|
||||||
|
dir.mkdir();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIrqHyperscreen() throws IOException, URISyntaxException {
|
public void testIrqHyperscreen() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("irq-hyperscreen");
|
compileAndCompare("examples/irq/irq-hyperscreen");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -140,7 +140,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMultiplexer() throws IOException, URISyntaxException {
|
public void testMultiplexer() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("simple-multiplexer", 10);
|
compileAndCompare("examples/multiplexer/simple-multiplexer", 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -165,17 +165,17 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSinePlotter() throws IOException, URISyntaxException {
|
public void testSinePlotter() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("sine-plotter");
|
compileAndCompare("examples/sinplotter/sine-plotter");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScrollLogo() throws IOException, URISyntaxException {
|
public void testScrollLogo() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("scrolllogo");
|
compileAndCompare("examples/scrolllogo/scrolllogo");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testShowLogo() throws IOException, URISyntaxException {
|
public void testShowLogo() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("showlogo");
|
compileAndCompare("examples/showlogo/showlogo");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -250,7 +250,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHelloWorld() throws IOException, URISyntaxException {
|
public void testHelloWorld() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("helloworld");
|
compileAndCompare("examples/helloworld/helloworld");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -280,7 +280,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testVarForwardProblem() throws IOException, URISyntaxException {
|
public void testVarForwardProblem() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("var-forward-problem");
|
compileAndCompare("var-forward-problem");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -375,7 +375,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testChargenAnalysis() throws IOException, URISyntaxException {
|
public void testChargenAnalysis() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("chargen-analysis");
|
compileAndCompare("examples/chargen/chargen-analysis");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -485,7 +485,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRasterBars() throws IOException, URISyntaxException {
|
public void testRasterBars() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("raster-bars");
|
compileAndCompare("examples/rasterbars/raster-bars");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -555,7 +555,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSinusSprites() throws IOException, URISyntaxException {
|
public void testSinusSprites() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("sinus-sprites");
|
compileAndCompare("examples/sinsprites/sinus-sprites");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -650,7 +650,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScrollBig() throws IOException, URISyntaxException {
|
public void testScrollBig() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("scrollbig");
|
compileAndCompare("examples/scrollbig/scrollbig");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -675,7 +675,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBitmapBresenham() throws IOException, URISyntaxException {
|
public void testBitmapBresenham() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("bitmap-bresenham");
|
compileAndCompare("examples/bresenham/bitmap-bresenham");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -725,7 +725,7 @@ public class TestPrograms {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScroll() throws IOException, URISyntaxException {
|
public void testScroll() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("scroll");
|
compileAndCompare("examples/scroll/scroll");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -1025,7 +1025,7 @@ public class TestPrograms {
|
|||||||
Compiler compiler = new Compiler();
|
Compiler compiler = new Compiler();
|
||||||
compiler.addImportPath(stdlibPath);
|
compiler.addImportPath(stdlibPath);
|
||||||
compiler.addImportPath(testPath);
|
compiler.addImportPath(testPath);
|
||||||
if(upliftCombinations!=null) {
|
if(upliftCombinations != null) {
|
||||||
compiler.setUpliftCombinations(upliftCombinations);
|
compiler.setUpliftCombinations(upliftCombinations);
|
||||||
}
|
}
|
||||||
Program program = compiler.compile(fileName);
|
Program program = compiler.compile(fileName);
|
||||||
@ -1047,9 +1047,12 @@ public class TestPrograms {
|
|||||||
private void compileAsm(String fileName, Program program) throws IOException {
|
private void compileAsm(String fileName, Program program) throws IOException {
|
||||||
writeBinFile(fileName, ".asm", program.getAsm().toString(false));
|
writeBinFile(fileName, ".asm", program.getAsm().toString(false));
|
||||||
for(Path asmResourceFile : program.getAsmResourceFiles()) {
|
for(Path asmResourceFile : program.getAsmResourceFiles()) {
|
||||||
File binFile = getBinFile(asmResourceFile.getFileName().toString());
|
File asmFile = getBinFile(fileName, ".asm");
|
||||||
|
String asmFolder = asmFile.getParent();
|
||||||
|
File resFile = new File(asmFolder, asmResourceFile.getFileName().toString());
|
||||||
|
mkPath(resFile);
|
||||||
try {
|
try {
|
||||||
Files.copy(asmResourceFile, binFile.toPath());
|
Files.copy(asmResourceFile, resFile.toPath());
|
||||||
} catch(FileAlreadyExistsException e) {
|
} catch(FileAlreadyExistsException e) {
|
||||||
// Ignore this
|
// Ignore this
|
||||||
}
|
}
|
||||||
@ -1080,11 +1083,23 @@ public class TestPrograms {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public File getBinFile(String fileName, String extension) {
|
public File getBinFile(String fileName, String extension) {
|
||||||
return new File(getBinDir(), fileName + extension);
|
File binFile = new File(getBinDir(), fileName + extension);
|
||||||
|
mkPath(binFile);
|
||||||
|
return binFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getBinFile(String fileName) {
|
*/
|
||||||
return new File(getBinDir(), fileName);
|
/**
|
||||||
|
* Ensures that the path to the passed file is created.
|
||||||
|
* @param file The file to create a path for
|
||||||
|
*/
|
||||||
|
private void mkPath(File file) {
|
||||||
|
Path parent = file.toPath().getParent();
|
||||||
|
File dir = parent.toFile();
|
||||||
|
if(!dir.exists()) {
|
||||||
|
mkPath(dir);
|
||||||
|
dir.mkdir();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getBinDir() {
|
public File getBinDir() {
|
||||||
@ -1092,10 +1107,8 @@ public class TestPrograms {
|
|||||||
File binDir = new File(tempDir.toFile(), "bin");
|
File binDir = new File(tempDir.toFile(), "bin");
|
||||||
if(!binDir.exists()) {
|
if(!binDir.exists()) {
|
||||||
binDir.mkdir();
|
binDir.mkdir();
|
||||||
|
|
||||||
}
|
}
|
||||||
return binDir;
|
return binDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
@ -5,7 +5,6 @@ import "memory.kc"
|
|||||||
byte* SCREEN = $400;
|
byte* SCREEN = $400;
|
||||||
byte* LOGO = $2000;
|
byte* LOGO = $2000;
|
||||||
kickasm(resource "logo.png", pc LOGO, bytes 6*40*8) {{
|
kickasm(resource "logo.png", pc LOGO, bytes 6*40*8) {{
|
||||||
logo:
|
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
@ -4,7 +4,6 @@ byte* SCREEN = $400;
|
|||||||
byte* LOGO = $2000;
|
byte* LOGO = $2000;
|
||||||
|
|
||||||
kickasm(resource "logo.png", pc LOGO, bytes 6*40*8 ) {{
|
kickasm(resource "logo.png", pc LOGO, bytes 6*40*8 ) {{
|
||||||
logo:
|
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
@ -712,8 +712,7 @@ fill: {
|
|||||||
.align $100
|
.align $100
|
||||||
xsin: .fill 2*XSIN_SIZE, 0
|
xsin: .fill 2*XSIN_SIZE, 0
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
@ -2,8 +2,7 @@
|
|||||||
[0] phi() [ ] ( )
|
[0] phi() [ ] ( )
|
||||||
to:@24
|
to:@24
|
||||||
@24: scope:[] from @begin
|
@24: scope:[] from @begin
|
||||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
@ -505,8 +505,7 @@ fill::@return: scope:[fill] from fill::@1
|
|||||||
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||||
(byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40
|
(byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||||
(byte/signed word/word/dword/signed dword~) $1 ← (byte/word/signed word/dword/signed dword~) $0 * (byte/signed byte/word/signed word/dword/signed dword) 8
|
(byte/signed word/word/dword/signed dword~) $1 ← (byte/word/signed word/dword/signed dword~) $0 * (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||||
kickasm(location (byte*) LOGO#0) {{ logo:
|
kickasm(location (byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -2745,8 +2744,7 @@ FINAL CONTROL FLOW GRAPH
|
|||||||
[0] phi() [ ] ( )
|
[0] phi() [ ] ( )
|
||||||
to:@24
|
to:@24
|
||||||
@24: scope:[] from @begin
|
@24: scope:[] from @begin
|
||||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -3743,7 +3741,7 @@ bbegin:
|
|||||||
jmp b24
|
jmp b24
|
||||||
//SEG3 @24
|
//SEG3 @24
|
||||||
b24:
|
b24:
|
||||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||||
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
||||||
b27_from_b24:
|
b27_from_b24:
|
||||||
jmp b27
|
jmp b27
|
||||||
@ -5379,8 +5377,7 @@ fill: {
|
|||||||
.align $100
|
.align $100
|
||||||
xsin: .fill 2*XSIN_SIZE, 0
|
xsin: .fill 2*XSIN_SIZE, 0
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -5886,7 +5883,7 @@ bbegin:
|
|||||||
jmp b24
|
jmp b24
|
||||||
//SEG3 @24
|
//SEG3 @24
|
||||||
b24:
|
b24:
|
||||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||||
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
||||||
b27_from_b24:
|
b27_from_b24:
|
||||||
jmp b27
|
jmp b27
|
||||||
@ -7254,8 +7251,7 @@ fill: {
|
|||||||
.align $100
|
.align $100
|
||||||
xsin: .fill 2*XSIN_SIZE, 0
|
xsin: .fill 2*XSIN_SIZE, 0
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -7969,7 +7965,7 @@ Score: 41393
|
|||||||
.label xsin_idx = 2
|
.label xsin_idx = 2
|
||||||
//SEG2 @begin
|
//SEG2 @begin
|
||||||
//SEG3 @24
|
//SEG3 @24
|
||||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||||
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
//SEG5 [2] phi from @24 to @27 [phi:@24->@27]
|
||||||
//SEG6 @27
|
//SEG6 @27
|
||||||
//SEG7 [3] call main [ ] ( )
|
//SEG7 [3] call main [ ] ( )
|
||||||
@ -9107,8 +9103,7 @@ fill: {
|
|||||||
.align $100
|
.align $100
|
||||||
xsin: .fill 2*XSIN_SIZE, 0
|
xsin: .fill 2*XSIN_SIZE, 0
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
@ -89,8 +89,7 @@ fill: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
@ -2,8 +2,7 @@
|
|||||||
[0] phi() [ ] ( )
|
[0] phi() [ ] ( )
|
||||||
to:@3
|
to:@3
|
||||||
@3: scope:[] from @begin
|
@3: scope:[] from @begin
|
||||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
@ -21,8 +21,7 @@ CONTROL FLOW GRAPH SSA
|
|||||||
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||||
(byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40
|
(byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||||
(byte/signed word/word/dword/signed dword~) $1 ← (byte/word/signed word/dword/signed dword~) $0 * (byte/signed byte/word/signed word/dword/signed dword) 8
|
(byte/signed word/word/dword/signed dword~) $1 ← (byte/word/signed word/dword/signed dword~) $0 * (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||||
kickasm(location (byte*) LOGO#0) {{ logo:
|
kickasm(location (byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -398,8 +397,7 @@ FINAL CONTROL FLOW GRAPH
|
|||||||
[0] phi() [ ] ( )
|
[0] phi() [ ] ( )
|
||||||
to:@3
|
to:@3
|
||||||
@3: scope:[] from @begin
|
@3: scope:[] from @begin
|
||||||
kickasm(location (const byte*) LOGO#0) {{ logo:
|
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -544,7 +542,7 @@ bbegin:
|
|||||||
jmp b3
|
jmp b3
|
||||||
//SEG3 @3
|
//SEG3 @3
|
||||||
b3:
|
b3:
|
||||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||||
b5_from_b3:
|
b5_from_b3:
|
||||||
jmp b5
|
jmp b5
|
||||||
@ -701,8 +699,7 @@ fill: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -773,7 +770,7 @@ bbegin:
|
|||||||
jmp b3
|
jmp b3
|
||||||
//SEG3 @3
|
//SEG3 @3
|
||||||
b3:
|
b3:
|
||||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||||
b5_from_b3:
|
b5_from_b3:
|
||||||
jmp b5
|
jmp b5
|
||||||
@ -923,8 +920,7 @@ fill: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
||||||
@ -1071,7 +1067,7 @@ Score: 3578
|
|||||||
.label LOGO = $2000
|
.label LOGO = $2000
|
||||||
//SEG2 @begin
|
//SEG2 @begin
|
||||||
//SEG3 @3
|
//SEG3 @3
|
||||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ logo: .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||||
//SEG6 @5
|
//SEG6 @5
|
||||||
//SEG7 [3] call main [ ] ( )
|
//SEG7 [3] call main [ ] ( )
|
||||||
@ -1194,8 +1190,7 @@ fill: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
.pc = LOGO "Inline"
|
.pc = LOGO "Inline"
|
||||||
logo:
|
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||||
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
|
||||||
.for (var y=0; y<6 ; y++)
|
.for (var y=0; y<6 ; y++)
|
||||||
.for (var x=0;x<40; x++)
|
.for (var x=0;x<40; x++)
|
||||||
.for(var cp=0; cp<8; cp++)
|
.for(var cp=0; cp<8; cp++)
|
@ -0,0 +1,73 @@
|
|||||||
|
(label) @3
|
||||||
|
(label) @5
|
||||||
|
(label) @begin
|
||||||
|
(label) @end
|
||||||
|
(byte*) BGCOL
|
||||||
|
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||||
|
(byte*) BGCOL2
|
||||||
|
(const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282
|
||||||
|
(byte*) BGCOL3
|
||||||
|
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
|
||||||
|
(byte) BLACK
|
||||||
|
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||||
|
(byte*) BORDERCOL
|
||||||
|
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||||
|
(byte*) COLS
|
||||||
|
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||||
|
(byte*) D016
|
||||||
|
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
|
||||||
|
(byte*) D018
|
||||||
|
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||||
|
(byte) DARK_GREY
|
||||||
|
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||||
|
(byte*) LOGO
|
||||||
|
(const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||||
|
(byte*) SCREEN
|
||||||
|
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||||
|
(byte) VIC_CSEL
|
||||||
|
(const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||||
|
(byte) VIC_MCM
|
||||||
|
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||||
|
(byte) WHITE
|
||||||
|
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||||
|
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
|
||||||
|
(label) fill::@1
|
||||||
|
(label) fill::@return
|
||||||
|
(byte*) fill::addr
|
||||||
|
(byte*) fill::addr#0 addr zp ZP_WORD:4 2.0
|
||||||
|
(byte*) fill::addr#1 addr zp ZP_WORD:4 16.5
|
||||||
|
(byte*) fill::addr#2 addr zp ZP_WORD:4 17.5
|
||||||
|
(byte*) fill::end
|
||||||
|
(byte*) fill::end#0 end zp ZP_WORD:2 2.6
|
||||||
|
(word) fill::size
|
||||||
|
(word) fill::size#2 size zp ZP_WORD:2 2.0
|
||||||
|
(byte*) fill::start
|
||||||
|
(byte) fill::val
|
||||||
|
(byte) fill::val#3 reg byte x 1.8333333333333333
|
||||||
|
(void()) main()
|
||||||
|
(label) main::@1
|
||||||
|
(label) main::@10
|
||||||
|
(label) main::@3
|
||||||
|
(label) main::@9
|
||||||
|
(byte) main::ch
|
||||||
|
(byte) main::ch#1 reg byte x 16.5
|
||||||
|
(byte) main::ch#2 reg byte x 22.0
|
||||||
|
(label) main::toD0181
|
||||||
|
(word~) main::toD0181_$0
|
||||||
|
(word~) main::toD0181_$1
|
||||||
|
(word~) main::toD0181_$2
|
||||||
|
(byte~) main::toD0181_$3
|
||||||
|
(word~) main::toD0181_$4
|
||||||
|
(byte~) main::toD0181_$5
|
||||||
|
(byte~) main::toD0181_$6
|
||||||
|
(byte~) main::toD0181_$7
|
||||||
|
(byte~) main::toD0181_$8
|
||||||
|
(byte*) main::toD0181_gfx
|
||||||
|
(byte) main::toD0181_return
|
||||||
|
(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) LOGO#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
|
||||||
|
(byte*) main::toD0181_screen
|
||||||
|
|
||||||
|
reg byte x [ main::ch#2 main::ch#1 ]
|
||||||
|
zp ZP_WORD:2 [ fill::size#2 fill::end#0 ]
|
||||||
|
reg byte x [ fill::val#3 ]
|
||||||
|
zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
Loading…
Reference in New Issue
Block a user