1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Implemented the rest of the comparison test. Fixed a double jump problem.

This commit is contained in:
jespergravgaard 2018-01-02 10:17:59 +01:00
parent 53d8afbb1d
commit 2084be92e0
12 changed files with 10716 additions and 1874 deletions

View File

@ -42,7 +42,7 @@ public class AsmFragmentManager {
if(log.isVerboseFragmentLog()) {
log.append("Unknown fragment " + signature.getSignature());
}
throw new UnknownFragmentException(signature.toString());
throw new UnknownFragmentException(signature.getSignature());
}
if(bestTemplate == null) {
AsmFragmentTemplateSynthesizer synthesizer = new AsmFragmentTemplateSynthesizer(signature.getSignature(), log);
@ -52,7 +52,7 @@ public class AsmFragmentManager {
log.append("Unknown fragment " + signature.toString());
}
bestFragmentCache.put(signature.getSignature(), UNKNOWN);
throw new UnknownFragmentException(signature.toString());
throw new UnknownFragmentException(signature.getSignature());
}
double minScore = Double.MAX_VALUE;
double maxScore = Double.MIN_VALUE;
@ -550,7 +550,7 @@ public class AsmFragmentManager {
private String fragmentSignature;
UnknownFragmentException(String signature) {
super("Fragment not found " + signature + ".asm");
super("Fragment not found " + signature );
this.fragmentSignature = signature;
}

View File

@ -1,3 +1,3 @@
cmp {z1}
cmp {c1}
bcc {la1}
beq {la1}

View File

@ -0,0 +1,4 @@
cmp {c1},y
beq !+
bcs {la1}
!:

View File

@ -0,0 +1,3 @@
cmp {c1},y
bcc {la1}
beq {la1}

View File

@ -0,0 +1,2 @@
cmp {c1},y
bcc {la1}

View File

@ -0,0 +1,2 @@
cmp {c1},y
bne {la1}

View File

@ -62,7 +62,7 @@ public class Pass5DoubleJumpElimination extends Pass5AsmOptimization {
AsmInstruction asmInstruction = (AsmInstruction) line;
if(asmInstruction.getType().isJump()) {
String immediateJmpTarget = immediateJumps.get(currentScope + "::" + asmInstruction.getParameter());
if(immediateJmpTarget != null) {
if(immediateJmpTarget != null && !immediateJmpTarget.equals(asmInstruction.getParameter())) {
getLog().append("Skipping double jump to " + immediateJmpTarget + " in " + asmInstruction.toString());
asmInstruction.setParameter(immediateJmpTarget);
optimized = true;

View File

@ -1,10 +1,11 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label char_cursor = 9
.label line_cursor = 4
.label char_cursor = 8
jsr main
main: {
.label b = $c
.label a = 2
.label i = 3
jsr print_cls
@ -21,81 +22,384 @@ main: {
lda #7
sta a
b1:
lda #$ee
lda #$ce
sec
sbc a
tay
sta b
lda a
sty $ff
cmp $ff
bcs b6
cmp b
bcs b23
ldx #'+'
jmp b2
b6:
b23:
ldx #'-'
b2:
sty printu.b
lda #'<'
lda b
sta printu.b
lda #<op
sta printu.op
lda #>op
sta printu.op+1
jsr printu
lda a
cmp #$87
bcs b7
cmp #$37
bcs b24
ldx #'+'
jmp b3
b7:
b24:
ldx #'-'
b3:
lda #$87
lda #$37
sta printu.b
lda #'<'
lda #<op1
sta printu.op
lda #>op1
sta printu.op+1
jsr printu
lda a
ldy i
cmp cs,y
bcs b8
bcs b25
ldx #'+'
jmp b4
b8:
b25:
ldx #'-'
b4:
ldy i
lda cs,y
sta printu.b
lda #'<'
lda #<op2
sta printu.op
lda #>op2
sta printu.op+1
jsr printu
lda a
cmp a
bcs b9
bcs b26
ldx #'+'
jmp b5
b9:
b26:
ldx #'-'
b5:
lda a
sta printu.b
lda #'<'
lda #<op3
sta printu.op
lda #>op3
sta printu.op+1
jsr printu
jsr print_ln
lda b
cmp a
bcs b27
ldx #'+'
jmp b6
b27:
ldx #'-'
b6:
lda b
sta printu.b
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
lda #<op4
sta printu.op
lda #>op4
sta printu.op+1
jsr printu
lda a
cmp #$37
bcc b28
beq b28
ldx #'+'
jmp b7
b28:
ldx #'-'
b7:
lda #$37
sta printu.b
lda #<op5
sta printu.op
lda #>op5
sta printu.op+1
jsr printu
lda a
ldy i
cmp cs,y
bcc b29
beq b29
ldx #'+'
jmp b8
b29:
ldx #'-'
b8:
ldy i
lda cs,y
sta printu.b
lda #<op6
sta printu.op
lda #>op6
sta printu.op+1
jsr printu
lda a
cmp a
bcs b30
ldx #'+'
jmp b9
b30:
ldx #'-'
b9:
lda a
sta printu.b
lda #<op7
sta printu.op
lda #>op7
sta printu.op+1
jsr printu
jsr print_ln
lda b
cmp a
bcc b31
ldx #'+'
jmp b10
b31:
ldx #'-'
b10:
lda b
sta printu.b
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
lda #<op8
sta printu.op
lda #>op8
sta printu.op+1
jsr printu
lda a
cmp #$37
beq !+
bcs b32
!:
ldx #'+'
jmp b11
b32:
ldx #'-'
b11:
lda #$37
sta printu.b
lda #<op9
sta printu.op
lda #>op9
sta printu.op+1
jsr printu
lda a
ldy i
cmp cs,y
beq !+
bcs b33
!:
ldx #'+'
jmp b12
b33:
ldx #'-'
b12:
ldy i
lda cs,y
sta printu.b
lda #<op10
sta printu.op
lda #>op10
sta printu.op+1
jsr printu
lda a
cmp a
bcc b34
ldx #'+'
jmp b13
b34:
ldx #'-'
b13:
lda a
sta printu.b
lda #<op11
sta printu.op
lda #>op11
sta printu.op+1
jsr printu
jsr print_ln
lda a
cmp b
bcc b35
ldx #'+'
jmp b14
b35:
ldx #'-'
b14:
lda b
sta printu.b
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
lda #<op12
sta printu.op
lda #>op12
sta printu.op+1
jsr printu
lda a
cmp #$37
bcc b36
ldx #'+'
jmp b15
b36:
ldx #'-'
b15:
lda #$37
sta printu.b
lda #<op13
sta printu.op
lda #>op13
sta printu.op+1
jsr printu
lda a
ldy i
cmp cs,y
bcc b37
ldx #'+'
jmp b16
b37:
ldx #'-'
b16:
ldy i
lda cs,y
sta printu.b
lda #<op14
sta printu.op
lda #>op14
sta printu.op+1
jsr printu
lda a
cmp a
bcc b38
ldx #'+'
jmp b17
b38:
ldx #'-'
b17:
lda a
sta printu.b
lda #<op15
sta printu.op
lda #>op15
sta printu.op+1
jsr printu
jsr print_ln
lda a
cmp b
bne b39
ldx #'+'
jmp b18
b39:
ldx #'-'
b18:
lda b
sta printu.b
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
lda #<op16
sta printu.op
lda #>op16
sta printu.op+1
jsr printu
lda a
cmp #$37
bne b40
ldx #'+'
jmp b19
b40:
ldx #'-'
b19:
lda #$37
sta printu.b
lda #<op17
sta printu.op
lda #>op17
sta printu.op+1
jsr printu
lda a
ldy i
cmp cs,y
bne b41
ldx #'+'
jmp b20
b41:
ldx #'-'
b20:
ldy i
lda cs,y
sta printu.b
lda #<op18
sta printu.op
lda #>op18
sta printu.op+1
jsr printu
lda a
cmp a
bne b42
ldx #'+'
jmp b21
b42:
ldx #'-'
b21:
lda a
sta printu.b
lda #<op19
sta printu.op
lda #>op19
sta printu.op+1
jsr printu
jsr print_ln
lda a
clc
adc #$10
adc #$30
sta a
inc i
lda i
cmp #$10
bne b17
rts
b17:
cmp #5
bne b71
b22:
jmp b22
b71:
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
jmp b1
cs: .byte 7, $f7, $17, $e7, $27, $d7, $37, $c7, $47, $b7, $57, $a7, $67, $97, $77, $87
op: .text "< @"
op1: .text "< @"
op2: .text "< @"
op3: .text "< @"
op4: .text "> @"
op5: .text "> @"
op6: .text "> @"
op7: .text "> @"
op8: .text "<=@"
op9: .text "<=@"
op10: .text "<=@"
op11: .text "<=@"
op12: .text ">=@"
op13: .text ">=@"
op14: .text ">=@"
op15: .text ">=@"
op16: .text "==@"
op17: .text "==@"
op18: .text "==@"
op19: .text "==@"
cs: .byte 7, $c7, $37, $97, $67
}
print_ln: {
b1:
@ -118,15 +422,14 @@ print_ln: {
}
printu: {
.label a = 2
.label b = 7
.label b = 8
.label op = 6
lda #' '
jsr print_char
lda a
sta print_byte.b
jsr print_byte
lda op
jsr print_char
jsr print_str
lda b
sta print_byte.b
jsr print_byte
@ -146,7 +449,7 @@ print_char: {
rts
}
print_byte: {
.label b = $a
.label b = $b
lda b
lsr
lsr
@ -163,6 +466,28 @@ print_byte: {
rts
hextab: .text "0123456789abcdef"
}
print_str: {
.label str = 6
b1:
ldy #0
lda (str),y
cmp #'@'
bne b2
rts
b2:
ldy #0
lda (str),y
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
inc str
bne !+
inc str+1
!:
jmp b1
}
print_cls: {
.label sc = 4
lda #<$400

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2,56 +2,153 @@
(label) @begin
(label) @end
(byte*) char_cursor
(byte*) char_cursor#27 char_cursor zp ZP_WORD:8 8.0
(byte*) char_cursor#28 char_cursor zp ZP_WORD:8 3.041666666666665
(byte*) char_cursor#45 char_cursor zp ZP_WORD:8 46.0
(byte*) char_cursor#46 char_cursor zp ZP_WORD:8 2.75
(byte*~) char_cursor#58 char_cursor zp ZP_WORD:8 22.0
(byte*) char_cursor#1 char_cursor zp ZP_WORD:9 11.0
(byte*) char_cursor#114 char_cursor zp ZP_WORD:9 2.75
(byte*~) char_cursor#137 char_cursor zp ZP_WORD:9 22.0
(byte*~) char_cursor#138 char_cursor zp ZP_WORD:9 22.0
(byte*~) char_cursor#142 char_cursor zp ZP_WORD:9 22.0
(byte*~) char_cursor#146 char_cursor zp ZP_WORD:9 22.0
(byte*~) char_cursor#154 char_cursor zp ZP_WORD:9 22.0
(byte*) char_cursor#2 char_cursor zp ZP_WORD:9 6.166666666666666
(byte*) char_cursor#51 char_cursor zp ZP_WORD:9 7.0
(byte*) char_cursor#52 char_cursor zp ZP_WORD:9 2.106060606060605
(byte*) char_cursor#89 char_cursor zp ZP_WORD:9 2.0
(byte*) char_cursor#90 char_cursor zp ZP_WORD:9 222.0
(byte*) line_cursor
(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 40.625
(byte*) line_cursor#13 line_cursor zp ZP_WORD:4 0.41935483870967744
(byte*) line_cursor#6 line_cursor zp ZP_WORD:4 204.0
(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 3.2265625
(byte*) line_cursor#10 line_cursor zp ZP_WORD:4 204.0
(byte*) line_cursor#20 line_cursor zp ZP_WORD:4 57.0
(byte*) line_cursor#21 line_cursor zp ZP_WORD:4 0.7333333333333333
(void()) main()
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@12
(label) main::@13
(label) main::@14
(label) main::@15
(label) main::@16
(label) main::@17
(label) main::@18
(label) main::@19
(label) main::@2
(label) main::@20
(label) main::@21
(label) main::@22
(label) main::@23
(label) main::@24
(label) main::@25
(label) main::@26
(label) main::@27
(label) main::@28
(label) main::@29
(label) main::@3
(label) main::@30
(label) main::@31
(label) main::@32
(label) main::@33
(label) main::@34
(label) main::@35
(label) main::@36
(label) main::@37
(label) main::@38
(label) main::@39
(label) main::@4
(label) main::@40
(label) main::@41
(label) main::@42
(label) main::@46
(label) main::@47
(label) main::@48
(label) main::@49
(label) main::@5
(label) main::@50
(label) main::@51
(label) main::@52
(label) main::@53
(label) main::@54
(label) main::@55
(label) main::@56
(label) main::@57
(label) main::@58
(label) main::@59
(label) main::@6
(label) main::@60
(label) main::@61
(label) main::@62
(label) main::@63
(label) main::@64
(label) main::@65
(label) main::@66
(label) main::@67
(label) main::@68
(label) main::@69
(label) main::@7
(label) main::@70
(label) main::@71
(label) main::@8
(label) main::@9
(label) main::@return
(byte) main::a
(byte) main::a#1 a zp ZP_BYTE:2 5.5
(byte) main::a#10 a zp ZP_BYTE:2 4.612903225806452
(byte) main::a#10 a zp ZP_BYTE:2 3.860927152317884
(byte) main::b
(byte) main::b#0 reg byte y 6.6000000000000005
(byte[16]) main::cs
(const byte[16]) main::cs#0 cs = { (byte/signed byte/word/signed word) 7, (byte/word/signed word) 247, (byte/signed byte/word/signed word) 23, (byte/word/signed word) 231, (byte/signed byte/word/signed word) 39, (byte/word/signed word) 215, (byte/signed byte/word/signed word) 55, (byte/word/signed word) 199, (byte/signed byte/word/signed word) 71, (byte/word/signed word) 183, (byte/signed byte/word/signed word) 87, (byte/word/signed word) 167, (byte/signed byte/word/signed word) 103, (byte/word/signed word) 151, (byte/signed byte/word/signed word) 119, (byte/word/signed word) 135 }
(byte) main::b#0 b zp ZP_BYTE:12 0.9758064516129035
(byte[5]) main::cs
(const byte[5]) main::cs#0 cs = { (byte/signed byte/word/signed word) 7, (byte/word/signed word) 199, (byte/signed byte/word/signed word) 55, (byte/word/signed word) 151, (byte/signed byte/word/signed word) 103 }
(byte) main::i
(byte) main::i#1 i zp ZP_BYTE:3 11.0
(byte) main::i#10 i zp ZP_BYTE:3 1.375
(byte) main::i#10 i zp ZP_BYTE:3 0.8684210526315792
(const string) main::op op = (string) "< @"
(const string) main::op1 op1 = (string) "< @"
(const string) main::op10 op10 = (string) "<=@"
(const string) main::op11 op11 = (string) "<=@"
(const string) main::op12 op12 = (string) ">=@"
(const string) main::op13 op13 = (string) ">=@"
(const string) main::op14 op14 = (string) ">=@"
(const string) main::op15 op15 = (string) ">=@"
(const string) main::op16 op16 = (string) "==@"
(const string) main::op17 op17 = (string) "==@"
(const string) main::op18 op18 = (string) "==@"
(const string) main::op19 op19 = (string) "==@"
(const string) main::op2 op2 = (string) "< @"
(const string) main::op3 op3 = (string) "< @"
(const string) main::op4 op4 = (string) "> @"
(const string) main::op5 op5 = (string) "> @"
(const string) main::op6 op6 = (string) "> @"
(const string) main::op7 op7 = (string) "> @"
(const string) main::op8 op8 = (string) "<=@"
(const string) main::op9 op9 = (string) "<=@"
(byte) main::r
(byte) main::r#10 reg byte x 3.6666666666666665
(byte) main::r#11 reg byte x 3.6666666666666665
(byte) main::r#8 reg byte x 3.6666666666666665
(byte) main::r#9 reg byte x 5.5
(byte) main::r#40 reg byte x 3.6666666666666665
(byte) main::r#41 reg byte x 5.5
(byte) main::r#42 reg byte x 3.6666666666666665
(byte) main::r#43 reg byte x 3.6666666666666665
(byte) main::r#44 reg byte x 3.6666666666666665
(byte) main::r#45 reg byte x 5.5
(byte) main::r#46 reg byte x 3.6666666666666665
(byte) main::r#47 reg byte x 3.6666666666666665
(byte) main::r#48 reg byte x 3.6666666666666665
(byte) main::r#49 reg byte x 5.5
(byte) main::r#50 reg byte x 3.6666666666666665
(byte) main::r#51 reg byte x 3.6666666666666665
(byte) main::r#52 reg byte x 3.6666666666666665
(byte) main::r#53 reg byte x 5.5
(byte) main::r#54 reg byte x 3.6666666666666665
(byte) main::r#55 reg byte x 3.6666666666666665
(byte) main::r#56 reg byte x 3.6666666666666665
(byte) main::r#57 reg byte x 5.5
(byte) main::r#58 reg byte x 3.6666666666666665
(byte) main::r#59 reg byte x 3.6666666666666665
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte y 4.0
(byte~) print_byte::$2 reg byte y 4.0
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0
(byte) print_byte::b#0 b zp ZP_BYTE:11 4.0
(byte) print_byte::b#1 b zp ZP_BYTE:11 4.0
(byte) print_byte::b#2 b zp ZP_BYTE:11 2.0
(byte[]) print_byte::hextab
(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef"
(void()) print_char((byte) print_char::ch)
@ -59,9 +156,8 @@
(byte) print_char::ch
(byte) print_char::ch#0 reg byte a 4.0
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#3 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 4.0
(byte) print_char::ch#6 reg byte a 10.0
(byte) print_char::ch#4 reg byte a 4.0
(byte) print_char::ch#5 reg byte a 8.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
@ -71,7 +167,15 @@
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
(void()) printu((byte) printu::a , (byte) printu::op , (byte) printu::b , (byte) printu::res)
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:6 22.0
(byte*) print_str::str#1 str zp ZP_WORD:6 2.0
(byte*) print_str::str#2 str zp ZP_WORD:6 11.5
(void()) printu((byte) printu::a , (byte[]) printu::op , (byte) printu::b , (byte) printu::res)
(label) printu::@1
(label) printu::@2
(label) printu::@3
@ -81,36 +185,96 @@
(byte) printu::a
(byte) printu::a#0 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#1 a zp ZP_BYTE:2 11.0
(byte) printu::a#10 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#11 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#12 a zp ZP_BYTE:2 5.5
(byte) printu::a#13 a zp ZP_BYTE:2 11.0
(byte) printu::a#14 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#15 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#16 a zp ZP_BYTE:2 5.5
(byte) printu::a#17 a zp ZP_BYTE:2 11.0
(byte) printu::a#18 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#19 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#2 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#20 a zp ZP_BYTE:2 111.0
(byte) printu::a#3 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#4 a zp ZP_BYTE:2 23.0
(byte) printu::a#4 a zp ZP_BYTE:2 5.5
(byte) printu::a#5 a zp ZP_BYTE:2 11.0
(byte) printu::a#6 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#7 a zp ZP_BYTE:2 7.333333333333333
(byte) printu::a#8 a zp ZP_BYTE:2 5.5
(byte) printu::a#9 a zp ZP_BYTE:2 11.0
(byte) printu::b
(byte) printu::b#0 b zp ZP_BYTE:7 11.0
(byte) printu::b#2 b zp ZP_BYTE:7 11.0
(byte) printu::b#3 b zp ZP_BYTE:7 11.0
(byte) printu::b#4 b zp ZP_BYTE:7 5.833333333333333
(byte) printu::op
(byte) printu::op#4 op zp ZP_BYTE:6 0.5
(byte) printu::b#0 b zp ZP_BYTE:8 11.0
(byte) printu::b#10 b zp ZP_BYTE:8 11.0
(byte) printu::b#11 b zp ZP_BYTE:8 11.0
(byte) printu::b#12 b zp ZP_BYTE:8 7.333333333333333
(byte) printu::b#14 b zp ZP_BYTE:8 11.0
(byte) printu::b#15 b zp ZP_BYTE:8 11.0
(byte) printu::b#16 b zp ZP_BYTE:8 7.333333333333333
(byte) printu::b#18 b zp ZP_BYTE:8 11.0
(byte) printu::b#19 b zp ZP_BYTE:8 11.0
(byte) printu::b#2 b zp ZP_BYTE:8 11.0
(byte) printu::b#20 b zp ZP_BYTE:8 27.833333333333325
(byte) printu::b#3 b zp ZP_BYTE:8 11.0
(byte) printu::b#4 b zp ZP_BYTE:8 7.333333333333333
(byte) printu::b#6 b zp ZP_BYTE:8 11.0
(byte) printu::b#7 b zp ZP_BYTE:8 11.0
(byte) printu::b#8 b zp ZP_BYTE:8 7.333333333333333
(byte[]) printu::op
(byte[]) printu::op#20 op zp ZP_WORD:6 0.5
(byte) printu::res
(byte) printu::res#0 reg byte x 22.0
(byte) printu::res#1 reg byte x 22.0
(byte) printu::res#10 reg byte x 22.0
(byte) printu::res#11 reg byte x 22.0
(byte) printu::res#12 reg byte x 11.0
(byte) printu::res#13 reg byte x 22.0
(byte) printu::res#14 reg byte x 22.0
(byte) printu::res#15 reg byte x 22.0
(byte) printu::res#16 reg byte x 11.0
(byte) printu::res#17 reg byte x 22.0
(byte) printu::res#18 reg byte x 22.0
(byte) printu::res#19 reg byte x 22.0
(byte) printu::res#2 reg byte x 22.0
(byte) printu::res#20 reg byte x 22.200000000000003
(byte) printu::res#3 reg byte x 22.0
(byte) printu::res#4 reg byte x 4.6000000000000005
(byte) printu::res#4 reg byte x 11.0
(byte) printu::res#5 reg byte x 22.0
(byte) printu::res#6 reg byte x 22.0
(byte) printu::res#7 reg byte x 22.0
(byte) printu::res#8 reg byte x 11.0
(byte) printu::res#9 reg byte x 22.0
zp ZP_BYTE:2 [ main::a#10 main::a#1 printu::a#4 printu::a#0 printu::a#1 printu::a#2 printu::a#3 ]
zp ZP_BYTE:2 [ main::a#10 main::a#1 printu::a#20 printu::a#8 printu::a#9 printu::a#10 printu::a#11 printu::a#12 printu::a#13 printu::a#14 printu::a#15 printu::a#16 printu::a#17 printu::a#0 printu::a#18 printu::a#19 printu::a#1 printu::a#2 printu::a#3 printu::a#4 printu::a#5 printu::a#6 printu::a#7 ]
zp ZP_BYTE:3 [ main::i#10 main::i#1 ]
reg byte x [ main::r#8 ]
reg byte x [ main::r#9 ]
reg byte x [ main::r#10 ]
reg byte x [ main::r#11 ]
zp ZP_WORD:4 [ line_cursor#6 line_cursor#13 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_BYTE:6 [ printu::op#4 ]
zp ZP_BYTE:7 [ printu::b#4 printu::b#0 printu::b#2 printu::b#3 ]
reg byte x [ printu::res#4 printu::res#0 printu::res#1 printu::res#2 printu::res#3 ]
reg byte a [ print_char::ch#6 print_char::ch#0 print_char::ch#1 print_char::ch#3 print_char::ch#5 ]
zp ZP_WORD:8 [ char_cursor#27 char_cursor#45 char_cursor#46 char_cursor#58 char_cursor#28 ]
zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte y [ main::b#0 ]
reg byte x [ main::r#40 ]
reg byte x [ main::r#41 ]
reg byte x [ main::r#42 ]
reg byte x [ main::r#43 ]
reg byte x [ main::r#44 ]
reg byte x [ main::r#45 ]
reg byte x [ main::r#46 ]
reg byte x [ main::r#47 ]
reg byte x [ main::r#48 ]
reg byte x [ main::r#49 ]
reg byte x [ main::r#50 ]
reg byte x [ main::r#51 ]
reg byte x [ main::r#52 ]
reg byte x [ main::r#53 ]
reg byte x [ main::r#54 ]
reg byte x [ main::r#55 ]
reg byte x [ main::r#56 ]
reg byte x [ main::r#57 ]
reg byte x [ main::r#58 ]
reg byte x [ main::r#59 ]
zp ZP_WORD:4 [ line_cursor#10 line_cursor#20 line_cursor#21 line_cursor#1 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:6 [ printu::op#20 print_str::str#2 print_str::str#1 print_str::str#0 ]
zp ZP_BYTE:8 [ printu::b#20 printu::b#8 printu::b#10 printu::b#11 printu::b#12 printu::b#14 printu::b#15 printu::b#16 printu::b#0 printu::b#18 printu::b#19 printu::b#2 printu::b#3 printu::b#4 printu::b#6 printu::b#7 ]
reg byte x [ printu::res#20 printu::res#8 printu::res#9 printu::res#10 printu::res#11 printu::res#12 printu::res#13 printu::res#14 printu::res#15 printu::res#16 printu::res#17 printu::res#0 printu::res#18 printu::res#19 printu::res#1 printu::res#2 printu::res#3 printu::res#4 printu::res#5 printu::res#6 printu::res#7 ]
reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#1 print_char::ch#4 ]
zp ZP_WORD:9 [ char_cursor#51 char_cursor#89 char_cursor#90 char_cursor#138 char_cursor#52 char_cursor#142 char_cursor#146 char_cursor#114 char_cursor#137 char_cursor#154 char_cursor#2 char_cursor#1 ]
zp ZP_BYTE:11 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
zp ZP_BYTE:12 [ main::b#0 ]
reg byte y [ print_byte::$0 ]
reg byte y [ print_byte::$2 ]

View File

@ -2,26 +2,48 @@ import "print.kc"
void main() {
print_cls();
byte r;
byte[$10] cs = { $07, $f7, $17, $e7, $27, $d7 , $37, $c7, $47, $b7, $57, $a7, $67, $97, $77, $87 };
byte a = 7;
for( byte i : 0..$f ) {
byte b = $ee-a;
r = '-'; if(a<b) r='+'; printu(a, '<', b, r);
r = '-'; if(a<$87) r='+'; printu(a, '<', $87, r);
r = '-'; if(a<cs[i]) r='+'; printu(a, '<', cs[i], r);
r = '-'; if(a<a) r='+'; printu(a, '<', a, r);
for( byte i : 0..4 ) {
byte r;
byte b = $ce-a;
byte[5] cs = { $07, $c7, $37, $97, $67 };
r = '-'; if(a<b) r='+'; printu(a, "< @", b, r);
r = '-'; if(a<$37) r='+'; printu(a, "< @", $37, r);
r = '-'; if(a<cs[i]) r='+'; printu(a, "< @", cs[i], r);
r = '-'; if(a<a) r='+'; printu(a, "< @", a, r);
print_ln();
a=a+$10;
r = '-'; if(a>b) r='+'; printu(a, "> @", b, r);
r = '-'; if(a>$37) r='+'; printu(a, "> @", $37, r);
r = '-'; if(a>cs[i]) r='+'; printu(a, "> @", cs[i], r);
r = '-'; if(a>a) r='+'; printu(a, "> @", a, r);
print_ln();
r = '-'; if(a<=b) r='+'; printu(a, "<=@", b, r);
r = '-'; if(a<=$37) r='+'; printu(a, "<=@", $37, r);
r = '-'; if(a<=cs[i]) r='+'; printu(a, "<=@", cs[i], r);
r = '-'; if(a<=a) r='+'; printu(a, "<=@", a, r);
print_ln();
r = '-'; if(a>=b) r='+'; printu(a, ">=@", b, r);
r = '-'; if(a>=$37) r='+'; printu(a, ">=@", $37, r);
r = '-'; if(a>=cs[i]) r='+'; printu(a, ">=@", cs[i], r);
r = '-'; if(a>=a) r='+'; printu(a, ">=@", a, r);
print_ln();
r = '-'; if(a==b) r='+'; printu(a, "==@", b, r);
r = '-'; if(a==$37) r='+'; printu(a, "==@", $37, r);
r = '-'; if(a==cs[i]) r='+'; printu(a, "==@", cs[i], r);
r = '-'; if(a==a) r='+'; printu(a, "==@", a, r);
print_ln();
a=a+$30;
}
do {
// nothing;
} while(true);
}
void printu(byte a, byte op, byte b, byte res) {
void printu(byte a, byte[] op, byte b, byte res) {
print_char(' ');
print_byte(a);
print_char(op);
print_str(op);
print_byte(b);
print_char(' ');
print_char(res);