1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-25 11:32:07 +00:00

Merge remote-tracking branch 'origin/master'

This commit is contained in:
jespergravgaard 2022-02-18 09:18:17 +01:00
commit 46f66c5499
16 changed files with 46 additions and 22 deletions

View File

@ -79,7 +79,7 @@
<dependency> <dependency>
<groupId>cml.kickass</groupId> <groupId>cml.kickass</groupId>
<artifactId>kickassembler</artifactId> <artifactId>kickassembler</artifactId>
<version>5.24-65ce02.d</version> <version>5.24-65ce02.e</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>dk.camelot64.kickass.xexplugin</groupId> <groupId>dk.camelot64.kickass.xexplugin</groupId>

View File

@ -0,0 +1 @@
d35f87fd307d0576de440c34320fae54

View File

@ -0,0 +1 @@
fea193965f72acd22809e8a308425124e36cefbd

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.24-65ce02.e</version>
<description>POM was created from install:install-file</description>
</project>

View File

@ -0,0 +1 @@
18962fc0bd9f7febf7b4a537dbb68bda

View File

@ -0,0 +1 @@
f1bda5c5c9a57c2bffbc8d6c566af673c0ccc293

View File

@ -3,7 +3,7 @@
<groupId>cml.kickass</groupId> <groupId>cml.kickass</groupId>
<artifactId>kickassembler</artifactId> <artifactId>kickassembler</artifactId>
<versioning> <versioning>
<release>5.24-65ce02.d</release> <release>5.24-65ce02.e</release>
<versions> <versions>
<version>4.19</version> <version>4.19</version>
<version>5.7</version> <version>5.7</version>
@ -31,7 +31,8 @@
<version>5.24-65ce02.b</version> <version>5.24-65ce02.b</version>
<version>5.24-65ce02.c</version> <version>5.24-65ce02.c</version>
<version>5.24-65ce02.d</version> <version>5.24-65ce02.d</version>
<version>5.24-65ce02.e</version>
</versions> </versions>
<lastUpdated>20220213103243</lastUpdated> <lastUpdated>20220213212400</lastUpdated>
</versioning> </versioning>
</metadata> </metadata>

View File

@ -1 +1 @@
566035322d1120a899902e225415aea4 12dc7c134f8dcf276f4031702b11b5d7

View File

@ -1 +1 @@
9d02e7968040c29f57b25cc02f1ae3c143e7b773 8cc20999d0045eea75ba3fff20b93c212b7cc52a

View File

@ -65,7 +65,7 @@ public class Cpu45GS02 extends Cpu65xx {
addOpcode( new int[] {0x42, 0x42, 0xA5},"ldq",CpuAddressingMode.ZP,8,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xA5},"ldq",CpuAddressingMode.ZP,8,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xAD},"ldq",CpuAddressingMode.ABS,9,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xAD},"ldq",CpuAddressingMode.ABS,9,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xB1},"ldq",CpuAddressingMode.IZY,10,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xB1},"ldq",CpuAddressingMode.IZY,10,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xB2},"ldq",CpuAddressingMode.INZ,10,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xB2},"ldq",CpuAddressingMode.IZZ,10,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xB5},"ldq",CpuAddressingMode.ZPX,9,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xB5},"ldq",CpuAddressingMode.ZPX,9,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xB9},"ldq",CpuAddressingMode.ABY,10,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xB9},"ldq",CpuAddressingMode.ABY,10,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xBD},"ldq",CpuAddressingMode.ABX,10,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xBD},"ldq",CpuAddressingMode.ABX,10,"AXYZnz");
@ -84,7 +84,7 @@ public class Cpu45GS02 extends Cpu65xx {
addOpcode( new int[] {0x42, 0x42, 0xea, 0x52},"eorq",CpuAddressingMode.LIN,13,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xea, 0x52},"eorq",CpuAddressingMode.LIN,13,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xea, 0x72},"adcq",CpuAddressingMode.LIN,13,"AXYZcvnz"); addOpcode( new int[] {0x42, 0x42, 0xea, 0x72},"adcq",CpuAddressingMode.LIN,13,"AXYZcvnz");
addOpcode( new int[] {0x42, 0x42, 0xea, 0x92},"stq",CpuAddressingMode.LIN,13,""); addOpcode( new int[] {0x42, 0x42, 0xea, 0x92},"stq",CpuAddressingMode.LIN,13,"");
addOpcode( new int[] {0x42, 0x42, 0xea, 0xB2},"ldq",CpuAddressingMode.LIN,13,"AXYZnz"); addOpcode( new int[] {0x42, 0x42, 0xea, 0xB2},"ldq",CpuAddressingMode.LIZ,13,"AXYZnz");
addOpcode( new int[] {0x42, 0x42, 0xea, 0xD2},"cpq",CpuAddressingMode.LIN,13,"cnz"); addOpcode( new int[] {0x42, 0x42, 0xea, 0xD2},"cpq",CpuAddressingMode.LIN,13,"cnz");
addOpcode( new int[] {0x42, 0x42, 0xea, 0xF2},"sbcq",CpuAddressingMode.LIN,13,"AXYZcvnz"); addOpcode( new int[] {0x42, 0x42, 0xea, 0xF2},"sbcq",CpuAddressingMode.LIN,13,"AXYZcvnz");
addOpcode( new int[] {0x42, 0x42, 0xED},"sbcq",CpuAddressingMode.ABS,9,"AXYZcvnz"); addOpcode( new int[] {0x42, 0x42, 0xED},"sbcq",CpuAddressingMode.ABS,9,"AXYZcvnz");

View File

@ -4,7 +4,7 @@
cp ./repo/cml/kickass/kickassembler/maven-metadata.xml ./repo/cml/kickass/kickassembler/maven-metadata-local.xml cp ./repo/cml/kickass/kickassembler/maven-metadata.xml ./repo/cml/kickass/kickassembler/maven-metadata-local.xml
# 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=/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.24-65ce02.d 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.24-65ce02.e
# Finalize by making the local metadata official # Finalize by making the local metadata official
pushd ./repo/cml/kickass/kickassembler pushd ./repo/cml/kickass/kickassembler

View File

@ -46,10 +46,14 @@ void main() {
// 65C02: ($1234,X) // 65C02: ($1234,X)
jmp ($1234,x) jmp ($1234,x)
lbl3: lbl3:
// 45GS02: 32bit Indirect,Z
ldq ($12),z
// 45GS02: Indirect Long,Z // 45GS02: Indirect Long,Z
lda (($12)),z lda (($12)),z
// 45GS02: Indirect Long // 45GS02: 32bit Indirect Long,Z
ldq (($12)) ldq (($12)),z
// 45GS02: 32bit Indirect Long
stq (($12))
} }
} }

View File

@ -32,8 +32,10 @@ main: {
lbl2: lbl2:
jmp ($1234,x) jmp ($1234,x)
lbl3: lbl3:
ldq ($12),z
lda (($12)),z lda (($12)),z
ldq (($12)) ldq (($12)),z
stq (($12))
// } // }
rts rts
} }

View File

@ -1,7 +1,7 @@
void main() void main()
main: scope:[main] from main: scope:[main] from
asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: lda(($12)),z ldq(($12)) } asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: ldq($12),z lda(($12)),z ldq(($12)),z stq(($12)) }
to:main::@return to:main::@return
main::@return: scope:[main] from main main::@return: scope:[main] from main
[1] return [1] return

View File

@ -4,7 +4,7 @@ CONTROL FLOW GRAPH SSA
void main() void main()
main: scope:[main] from __start main: scope:[main] from __start
asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: lda(($12)),z ldq(($12)) } asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: ldq($12),z lda(($12)),z ldq(($12)),z stq(($12)) }
to:main::@return to:main::@return
main::@return: scope:[main] from main main::@return: scope:[main] from main
return return
@ -41,7 +41,7 @@ FINAL CONTROL FLOW GRAPH
void main() void main()
main: scope:[main] from main: scope:[main] from
asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: lda(($12)),z ldq(($12)) } asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: ldq($12),z lda(($12)),z ldq(($12)),z stq(($12)) }
to:main::@return to:main::@return
main::@return: scope:[main] from main main::@return: scope:[main] from main
[1] return [1] return
@ -54,14 +54,14 @@ void main()
Initial phi equivalence classes Initial phi equivalence classes
Complete equivalence classes Complete equivalence classes
REGISTER UPLIFT POTENTIAL REGISTERS REGISTER UPLIFT POTENTIAL REGISTERS
Statement asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: lda(($12)),z ldq(($12)) } always clobbers reg byte a reg byte x reg byte y reg byte z Statement asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: ldq($12),z lda(($12)),z ldq(($12)),z stq(($12)) } always clobbers reg byte a reg byte x reg byte y reg byte z
REGISTER UPLIFT SCOPES REGISTER UPLIFT SCOPES
Uplift Scope [main] Uplift Scope [main]
Uplift Scope [] Uplift Scope []
Uplifting [main] best 106 combination Uplifting [main] best 129 combination
Uplifting [] best 106 combination Uplifting [] best 129 combination
ASSEMBLER BEFORE OPTIMIZATION ASSEMBLER BEFORE OPTIMIZATION
// File Comments // File Comments
@ -80,7 +80,7 @@ ASSEMBLER BEFORE OPTIMIZATION
.segment Code .segment Code
// main // main
main: { main: {
// asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: lda(($12)),z ldq(($12)) } // asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: ldq($12),z lda(($12)),z ldq(($12)),z stq(($12)) }
inx inx
lda #$12 lda #$12
phw #$1234 phw #$1234
@ -102,8 +102,10 @@ main: {
lbl2: lbl2:
jmp ($1234,x) jmp ($1234,x)
lbl3: lbl3:
ldq ($12),z
lda (($12)),z lda (($12)),z
ldq (($12)) ldq (($12)),z
stq (($12))
jmp __breturn jmp __breturn
// main::@return // main::@return
__breturn: __breturn:
@ -128,7 +130,7 @@ void main()
FINAL ASSEMBLER FINAL ASSEMBLER
Score: 103 Score: 126
// File Comments // File Comments
// Tests the different ASM addressing modes // Tests the different ASM addressing modes
@ -147,7 +149,7 @@ Score: 103
// main // main
main: { main: {
// asm // asm
// asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: lda(($12)),z ldq(($12)) } // asm { inx lda#$12 phw#$1234 lda$12 lda$12,x ldx$12,y lda($12,x) lda($12),y ora($12),z lda($12,sp),y lda$1234 lda$1234,x lda$1234,y beqlbl1 lbeqfar bbr0$12,lbl2 lbl1: jmp($1234) lbl2: jmp($1234,x) lbl3: ldq($12),z lda(($12)),z ldq(($12)),z stq(($12)) }
inx inx
lda #$12 lda #$12
phw #$1234 phw #$1234
@ -169,8 +171,10 @@ main: {
lbl2: lbl2:
jmp ($1234,x) jmp ($1234,x)
lbl3: lbl3:
ldq ($12),z
lda (($12)),z lda (($12)),z
ldq (($12)) ldq (($12)),z
stq (($12))
// main::@return // main::@return
// } // }
// [1] return // [1] return