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

Fixed precedence problems for casts and inc/dec

This commit is contained in:
Jesper Gravgaard 2018-03-05 10:10:56 +01:00
parent f4196b9e67
commit 133f8603c7
21 changed files with 59 additions and 59 deletions

View File

@ -66,7 +66,7 @@ public class AsmFormat {
// No cast needed
return getAsmConstant(program, operand, outerPrecedence, codeScope);
} else {
return "$ff & " + getAsmConstant(program, operand, Operator.BOOL_AND.getPrecedence(), codeScope);
return getAsmConstant(program, new ConstantBinary(new ConstantInteger((long)0xff), Operator.BOOL_AND, operand), outerPrecedence, codeScope);
}
} else if(Operator.CAST_WORD.equals(operator) || Operator.CAST_SWORD.equals(operator) || Operator.CAST_PTRBY.equals(operator)) {
SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand);
@ -74,7 +74,7 @@ public class AsmFormat {
// No cast needed
return getAsmConstant(program, operand, outerPrecedence, codeScope);
} else {
return "$ffff & " + getAsmConstant(program, operand, Operator.BOOL_AND.getPrecedence(), codeScope);
return getAsmConstant(program, new ConstantBinary(new ConstantInteger((long)0xffff), Operator.BOOL_AND, operand), outerPrecedence, codeScope);
}
} else if(Operator.CAST_DWORD.equals(operator) || Operator.CAST_SDWORD.equals(operator)) {
SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand);
@ -82,7 +82,7 @@ public class AsmFormat {
// No cast needed
return getAsmConstant(program, operand, outerPrecedence, codeScope);
} else {
return "$ffffffff & " + getAsmConstant(program, operand, Operator.BOOL_AND.getPrecedence(), codeScope);
return getAsmConstant(program, new ConstantBinary(new ConstantInteger((long)0xffffffff), Operator.BOOL_AND, operand), outerPrecedence, codeScope);
}
} else if(Operator.LOWBYTE.equals(operator)) {
SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand);
@ -91,7 +91,7 @@ public class AsmFormat {
} else if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType) || operandType instanceof SymbolTypePointer) {
return "<" + getAsmConstant(program, operand, outerPrecedence, codeScope);
} else if(SymbolType.isDWord(operandType) || SymbolType.isSDWord(operandType)) {
return getAsmConstant(program, operand, outerPrecedence, codeScope) + "&$ffff";
return getAsmConstant(program, new ConstantBinary(operand, Operator.BOOL_AND, new ConstantInteger((long)0xffff)), outerPrecedence, codeScope);
} else {
throw new CompileError("Unhandled type "+operand);
}
@ -102,14 +102,14 @@ public class AsmFormat {
} else if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType) || operandType instanceof SymbolTypePointer) {
return ">" + getAsmConstant(program, operand, outerPrecedence, codeScope);
} else if(SymbolType.isDWord(operandType) || SymbolType.isSDWord(operandType)) {
return getAsmConstant(program, operand, outerPrecedence, codeScope) + ">>16";
return getAsmConstant(program, new ConstantBinary(operand, Operator.SHIFT_RIGHT, new ConstantInteger((long)16)), outerPrecedence, codeScope);
} else {
throw new CompileError("Unhandled type "+operand);
}
} else if(Operator.INCREMENT.equals(operator)) {
return getAsmConstant(program, operand, Operator.PLUS.getPrecedence(), codeScope) + "+1";
return getAsmConstant(program, new ConstantBinary(operand, Operator.PLUS, new ConstantInteger((long)1)), outerPrecedence, codeScope);
} else if(Operator.DECREMENT.equals(operator)) {
return getAsmConstant(program, operand, Operator.PLUS.getPrecedence(), codeScope) + "-1";
return getAsmConstant(program, new ConstantBinary(operand, Operator.MINUS, new ConstantInteger((long)1)), outerPrecedence, codeScope);
} else {
return operator.getOperator() +
getAsmConstant(program, operand, operator.getPrecedence(), codeScope);

View File

@ -18,7 +18,7 @@ main: {
sta FGCOL
lda #BMM|DEN|RSEL|3
sta D011
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
jsr init_screen
jsr init_plot_tables

View File

@ -4288,7 +4288,7 @@ main: {
lda #BMM|DEN|RSEL|3
sta D011
//SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
//SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
//SEG14 [180] phi from main to init_screen [phi:main->init_screen]
@ -5639,7 +5639,7 @@ main: {
lda #BMM|DEN|RSEL|3
sta D011
//SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
//SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
//SEG14 [180] phi from main to init_screen [phi:main->init_screen]
@ -7070,7 +7070,7 @@ main: {
lda #BMM|DEN|RSEL|3
sta D011
//SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
//SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
//SEG14 [180] phi from main to init_screen [phi:main->init_screen]

View File

@ -19,7 +19,7 @@ main: {
sta FGCOL
lda #BMM|DEN|RSEL|3
sta D011
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
jsr init_screen
jsr init_plot_tables

View File

@ -1783,7 +1783,7 @@ main: {
lda #BMM|DEN|RSEL|3
sta D011
//SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
//SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
//SEG14 [63] phi from main to init_screen [phi:main->init_screen]
@ -2321,7 +2321,7 @@ main: {
lda #BMM|DEN|RSEL|3
sta D011
//SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
//SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
//SEG14 [63] phi from main to init_screen [phi:main->init_screen]
@ -2912,7 +2912,7 @@ main: {
lda #BMM|DEN|RSEL|3
sta D011
//SEG12 [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400)
lda #$ff&(($ffff&SCREEN)/$40|($ffff&BITMAP)/$400)
sta D018
//SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] )
//SEG14 [63] phi from main to init_screen [phi:main->init_screen]

View File

@ -10,7 +10,7 @@ main: {
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
.const midw = ($ff&sumw>>1)+1
lda #midw
sta SCREEN+0
lda #midb

View File

@ -346,7 +346,7 @@ main: {
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
.const midw = ($ff&sumw>>1)+1
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN+0
@ -421,7 +421,7 @@ main: {
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
.const midw = ($ff&sumw>>1)+1
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN+0
@ -520,7 +520,7 @@ main: {
.const sumw = min+max
.const sumb = min+max
.const midb = (sumb>>1)+1
.const midw = $ff & sumw>>1+1
.const midw = ($ff&sumw>>1)+1
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN+0

View File

@ -20,7 +20,7 @@ test_sbytes: {
.const bb = 0
.const bc = bb+2
.const bd = bc-4
.const bf = $ff & -$7f-$7f
.const bf = $ff&-$7f-$7f
.const be = -bd
lda #0
sta assert_sbyte.c

View File

@ -2564,7 +2564,7 @@ test_sbytes: {
.const bb = 0
.const bc = bb+2
.const bd = bc-4
.const bf = $ff & -$7f-$7f
.const bf = $ff&-$7f-$7f
.const be = -bd
//SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
//SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte]
@ -3202,7 +3202,7 @@ test_sbytes: {
.const bb = 0
.const bc = bb+2
.const bd = bc-4
.const bf = $ff & -$7f-$7f
.const bf = $ff&-$7f-$7f
.const be = -bd
//SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
//SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte]
@ -3966,7 +3966,7 @@ test_sbytes: {
.const bb = 0
.const bc = bb+2
.const bd = bc-4
.const bf = $ff & -$7f-$7f
.const bf = $ff&-$7f-$7f
.const be = -bd
//SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] )
//SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte]

View File

@ -183,7 +183,7 @@ init: {
sta SPRITES_YPOS+0
lda #WHITE
sta SPRITES_COLS+0
lda #$ff & SPRITE/$40
lda #$ff&SPRITE/$40
sta SPRITES_PTR+0
lda #<SCREEN
sta sc

View File

@ -1865,7 +1865,7 @@ init: {
lda #WHITE
sta SPRITES_COLS+0
//SEG82 [40] *((const byte*) SPRITES_PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & SPRITE/$40
lda #$ff&SPRITE/$40
sta SPRITES_PTR+0
//SEG83 [41] phi from init to init::@1 [phi:init->init::@1]
b1_from_init:
@ -2325,7 +2325,7 @@ init: {
lda #WHITE
sta SPRITES_COLS+0
//SEG82 [40] *((const byte*) SPRITES_PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & SPRITE/$40
lda #$ff&SPRITE/$40
sta SPRITES_PTR+0
//SEG83 [41] phi from init to init::@1 [phi:init->init::@1]
b1_from_init:
@ -2828,7 +2828,7 @@ init: {
lda #WHITE
sta SPRITES_COLS+0
//SEG82 [40] *((const byte*) SPRITES_PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
lda #$ff & SPRITE/$40
lda #$ff&SPRITE/$40
sta SPRITES_PTR+0
//SEG83 [41] phi from init to init::@1 [phi:init->init::@1]
//SEG84 [41] phi (byte*) init::sc#2 = (const byte*) SCREEN#0 [phi:init->init::@1#0] -- pbuz1=pbuc1

View File

@ -539,7 +539,7 @@ place_sprites: {
lda #$3c
sta spr_x
ldy #0
lda #$ff & sprites/$40
lda #$ff&sprites/$40
sta spr_id
b1:
lda spr_id

View File

@ -7706,7 +7706,7 @@ place_sprites: {
lda #0
sta j
//SEG460 [218] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1
lda #$ff & sprites/$40
lda #$ff&sprites/$40
sta spr_id
jmp b1
//SEG461 [218] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
@ -9384,7 +9384,7 @@ place_sprites: {
//SEG459 [218] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1
ldy #0
//SEG460 [218] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1
lda #$ff & sprites/$40
lda #$ff&sprites/$40
sta spr_id
jmp b1
//SEG461 [218] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
@ -11112,7 +11112,7 @@ place_sprites: {
//SEG459 [218] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1
ldy #0
//SEG460 [218] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte*) sprites#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1
lda #$ff & sprites/$40
lda #$ff&sprites/$40
sta spr_id
//SEG461 [218] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1]
//SEG462 [218] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy

View File

@ -488,9 +488,9 @@ div32u16u: {
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
lda #<0
sta divr16u.rem

View File

@ -6614,9 +6614,9 @@ div32u16u: {
lda #>main.wavelength
sta divr16u.divisor+1
//SEG269 [142] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#1] -- vwuz1=vwuc1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
//SEG270 [142] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#2] -- vwuz1=vbuc1
lda #<0
@ -8023,9 +8023,9 @@ div32u16u: {
lda #>main.wavelength
sta divr16u.divisor+1
//SEG269 [142] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#1] -- vwuz1=vwuc1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
//SEG270 [142] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#2] -- vwuz1=vbuc1
lda #<0
@ -9444,9 +9444,9 @@ div32u16u: {
lda #>main.wavelength
sta divr16u.divisor+1
//SEG269 [142] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#1] -- vwuz1=vwuc1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
//SEG270 [142] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#2] -- vwuz1=vbuc1
lda #<0

View File

@ -490,9 +490,9 @@ div32u16u: {
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
lda #<0
sta divr16u.rem

View File

@ -8046,9 +8046,9 @@ div32u16u: {
lda #>main.wavelength
sta divr16u.divisor+1
//SEG265 [144] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#1] -- vwuz1=vwuc1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
//SEG266 [144] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#2] -- vwuz1=vbuc1
lda #<0
@ -10178,9 +10178,9 @@ div32u16u: {
lda #>main.wavelength
sta divr16u.divisor+1
//SEG265 [144] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#1] -- vwuz1=vwuc1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
//SEG266 [144] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#2] -- vwuz1=vbuc1
lda #<0
@ -12310,9 +12310,9 @@ div32u16u: {
lda #>main.wavelength
sta divr16u.divisor+1
//SEG265 [144] phi (word) divr16u::dividend#6 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#1] -- vwuz1=vwuc1
lda #<PI2_u4f28>>16
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>16
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
//SEG266 [144] phi (word) divr16u::rem#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#2] -- vwuz1=vbuc1
lda #<0

View File

@ -20,7 +20,7 @@ sin8u_table: {
.const max = $ff
.label amplitude = max-min
.const sum = min+max
.const mid = $ff & (sum>>1)+1
.const mid = $ff&(sum>>1)+1
.label step = $12
.label sinx = $11
.label sinx_sc = $f

View File

@ -7064,7 +7064,7 @@ sin8u_table: {
.const max = $ff
.label amplitude = max-min
.const sum = min+max
.const mid = $ff & (sum>>1)+1
.const mid = $ff&(sum>>1)+1
.label _20 = $39
.label step = $30
.label sinx = $33
@ -8763,7 +8763,7 @@ sin8u_table: {
.const max = $ff
.label amplitude = max-min
.const sum = min+max
.const mid = $ff & (sum>>1)+1
.const mid = $ff&(sum>>1)+1
.label step = $12
.label sinx = $11
.label sinx_sc = $f
@ -10667,7 +10667,7 @@ sin8u_table: {
.const max = $ff
.label amplitude = max-min
.const sum = min+max
.const mid = $ff & (sum>>1)+1
.const mid = $ff&(sum>>1)+1
.label step = $12
.label sinx = $11
.label sinx_sc = $f

View File

@ -5,9 +5,9 @@
jsr main
main: {
.label SCREEN = $400
lda #>PI_u4f28>>16
lda #>PI_u4f28>>$10
sta SCREEN+0
lda #<PI_u4f28>>16
lda #<PI_u4f28>>$10
sta SCREEN+1
lda #>PI_u4f28&$ffff
sta SCREEN+2

View File

@ -241,10 +241,10 @@ bend:
main: {
.label SCREEN = $400
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← >>(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #>PI_u4f28>>16
lda #>PI_u4f28>>$10
sta SCREEN+0
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #<PI_u4f28>>16
lda #<PI_u4f28>>$10
sta SCREEN+1
//SEG11 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #>PI_u4f28&$ffff
@ -297,10 +297,10 @@ bend:
main: {
.label SCREEN = $400
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← >>(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #>PI_u4f28>>16
lda #>PI_u4f28>>$10
sta SCREEN+0
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #<PI_u4f28>>16
lda #<PI_u4f28>>$10
sta SCREEN+1
//SEG11 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #>PI_u4f28&$ffff
@ -362,10 +362,10 @@ Score: 36
main: {
.label SCREEN = $400
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← >>(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #>PI_u4f28>>16
lda #>PI_u4f28>>$10
sta SCREEN+0
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← <>(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #<PI_u4f28>>16
lda #<PI_u4f28>>$10
sta SCREEN+1
//SEG11 [6] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← ><(const dword) PI_u4f28#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
lda #>PI_u4f28&$ffff