1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-24 04:31:02 +00:00

Fixed ATASCII newline encoding. Closes #526

This commit is contained in:
jespergravgaard 2020-09-29 02:07:09 +02:00
parent 5831e8ac26
commit 7c1bed30f2
4 changed files with 39 additions and 12 deletions

View File

@ -7,4 +7,5 @@ char * SCREEN = 0x0400;
void main() {
SCREEN[0] = TEXT[13];
SCREEN[1] = '\n';
}

View File

@ -7,9 +7,12 @@ main: {
// SCREEN[0] = TEXT[13]
lda TEXT+$d
sta SCREEN
// SCREEN[1] = '\n'
.encoding "ascii"
lda #'\$9b'
sta SCREEN+1
// }
rts
}
.encoding "ascii"
TEXT: .text @"hello, world!\$9b"
.byte 0

View File

@ -2,7 +2,9 @@
(void()) main()
main: scope:[main] from
[0] *((const byte*) SCREEN) ← *((const byte*) TEXT+(byte) $d)
[1] *((const byte*) SCREEN+(byte) 1) ← (byte) '
'at
to:main::@return
main::@return: scope:[main] from main
[1] return
[2] return
to:@return

View File

@ -5,6 +5,8 @@ CONTROL FLOW GRAPH SSA
(void()) main()
main: scope:[main] from __start::@1
*((const byte*) SCREEN + (number) 0) ← *((const byte*) TEXT + (number) $d)
*((const byte*) SCREEN + (number) 1) ← (byte) '
'at
to:main::@return
main::@return: scope:[main] from main
return
@ -38,13 +40,17 @@ SYMBOL TABLE SSA
Adding number conversion cast (unumber) $d in *((const byte*) SCREEN + (number) 0) ← *((const byte*) TEXT + (number) $d)
Adding number conversion cast (unumber) 0 in *((const byte*) SCREEN + (number) 0) ← *((const byte*) TEXT + (unumber)(number) $d)
Adding number conversion cast (unumber) 1 in *((const byte*) SCREEN + (number) 1) ← (byte) '
'at
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant pointer cast (byte*) 1024
Simplifying constant integer cast $d
Simplifying constant integer cast 0
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) $d
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Simplifying expression containing zero SCREEN in [0] *((const byte*) SCREEN + (byte) 0) ← *((const byte*) TEXT + (byte) $d)
Successful SSA optimization PassNSimplifyExpressionWithZero
@ -56,6 +62,7 @@ Removing unused procedure block __start::@2
Removing unused procedure block __start::@return
Successful SSA optimization PassNEliminateEmptyStart
Consolidated array index constant in *(TEXT+$d)
Consolidated array index constant in *(SCREEN+1)
Successful SSA optimization Pass2ConstantAdditionElimination
CALL GRAPH
@ -67,9 +74,11 @@ FINAL CONTROL FLOW GRAPH
(void()) main()
main: scope:[main] from
[0] *((const byte*) SCREEN) ← *((const byte*) TEXT+(byte) $d)
[1] *((const byte*) SCREEN+(byte) 1) ← (byte) '
'at
to:main::@return
main::@return: scope:[main] from main
[1] return
[2] return
to:@return
@ -94,26 +103,31 @@ main: {
// [0] *((const byte*) SCREEN) ← *((const byte*) TEXT+(byte) $d) -- _deref_pbuc1=_deref_pbuc2
lda TEXT+$d
sta SCREEN
// [1] *((const byte*) SCREEN+(byte) 1) ← (byte) ' 'at -- _deref_pbuc1=vbuc2
.encoding "ascii"
lda #'\$9b'
sta SCREEN+1
jmp __breturn
// main::@return
__breturn:
// [1] return
// [2] return
rts
}
// File Data
.encoding "ascii"
TEXT: .text @"hello, world!\$9b"
.byte 0
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [0] *((const byte*) SCREEN) ← *((const byte*) TEXT+(byte) $d) [ ] ( [ ] { } ) always clobbers reg byte a
Statement [1] *((const byte*) SCREEN+(byte) 1) ← (byte) '
'at [ ] ( [ ] { } ) always clobbers reg byte a
REGISTER UPLIFT SCOPES
Uplift Scope [main]
Uplift Scope []
Uplifting [main] best 17 combination
Uplifting [] best 17 combination
Uplifting [main] best 23 combination
Uplifting [] best 23 combination
ASSEMBLER BEFORE OPTIMIZATION
// File Comments
@ -129,14 +143,17 @@ main: {
// [0] *((const byte*) SCREEN) ← *((const byte*) TEXT+(byte) $d) -- _deref_pbuc1=_deref_pbuc2
lda TEXT+$d
sta SCREEN
// [1] *((const byte*) SCREEN+(byte) 1) ← (byte) ' 'at -- _deref_pbuc1=vbuc2
.encoding "ascii"
lda #'\$9b'
sta SCREEN+1
jmp __breturn
// main::@return
__breturn:
// [1] return
// [2] return
rts
}
// File Data
.encoding "ascii"
TEXT: .text @"hello, world!\$9b"
.byte 0
@ -156,7 +173,7 @@ FINAL SYMBOL TABLE
FINAL ASSEMBLER
Score: 14
Score: 20
// File Comments
// Tests ATASCII encoding
@ -172,13 +189,17 @@ main: {
// [0] *((const byte*) SCREEN) ← *((const byte*) TEXT+(byte) $d) -- _deref_pbuc1=_deref_pbuc2
lda TEXT+$d
sta SCREEN
// SCREEN[1] = '\n'
// [1] *((const byte*) SCREEN+(byte) 1) ← (byte) ' 'at -- _deref_pbuc1=vbuc2
.encoding "ascii"
lda #'\$9b'
sta SCREEN+1
// main::@return
// }
// [1] return
// [2] return
rts
}
// File Data
.encoding "ascii"
TEXT: .text @"hello, world!\$9b"
.byte 0