mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-29 03:56:15 +00:00
1642 lines
87 KiB
Plaintext
1642 lines
87 KiB
Plaintext
|
Adding pointer type conversion cast (byte*) main::SCREEN in (byte*) main::SCREEN ← (number) $400
|
||
|
Culled Empty Block (label) main::@2
|
||
|
|
||
|
CONTROL FLOW GRAPH SSA
|
||
|
@begin: scope:[] from
|
||
|
to:@1
|
||
|
main: scope:[main] from @1
|
||
|
(byte*) main::SCREEN#0 ← ((byte*)) (number) $400
|
||
|
(byte) main::i#0 ← (byte) 0
|
||
|
to:main::@1
|
||
|
main::@1: scope:[main] from main main::@1
|
||
|
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||
|
(number~) main::$0 ← (number) 0 * (number) $28
|
||
|
(byte*~) main::$1 ← (byte*) main::SCREEN#0 + (number~) main::$0
|
||
|
(number~) main::$2 ← (byte) main::i#2 * (number) 1
|
||
|
*((byte*~) main::$1 + (byte) main::i#2) ← (number~) main::$2
|
||
|
(number~) main::$3 ← (number) 1 * (number) $28
|
||
|
(byte*~) main::$4 ← (byte*) main::SCREEN#0 + (number~) main::$3
|
||
|
(number~) main::$5 ← (byte) main::i#2 * (number) 2
|
||
|
*((byte*~) main::$4 + (byte) main::i#2) ← (number~) main::$5
|
||
|
(number~) main::$6 ← (number) 2 * (number) $28
|
||
|
(byte*~) main::$7 ← (byte*) main::SCREEN#0 + (number~) main::$6
|
||
|
(number~) main::$8 ← (byte) main::i#2 * (number) 3
|
||
|
*((byte*~) main::$7 + (byte) main::i#2) ← (number~) main::$8
|
||
|
(number~) main::$9 ← (number) 3 * (number) $28
|
||
|
(byte*~) main::$10 ← (byte*) main::SCREEN#0 + (number~) main::$9
|
||
|
(number~) main::$11 ← (byte) main::i#2 * (number) 4
|
||
|
*((byte*~) main::$10 + (byte) main::i#2) ← (number~) main::$11
|
||
|
(number~) main::$12 ← (number) 4 * (number) $28
|
||
|
(byte*~) main::$13 ← (byte*) main::SCREEN#0 + (number~) main::$12
|
||
|
(number~) main::$14 ← (byte) main::i#2 * (number) 5
|
||
|
*((byte*~) main::$13 + (byte) main::i#2) ← (number~) main::$14
|
||
|
(number~) main::$15 ← (number) 5 * (number) $28
|
||
|
(byte*~) main::$16 ← (byte*) main::SCREEN#0 + (number~) main::$15
|
||
|
(number~) main::$17 ← (byte) main::i#2 * (number) 6
|
||
|
*((byte*~) main::$16 + (byte) main::i#2) ← (number~) main::$17
|
||
|
(number~) main::$18 ← (number) 6 * (number) $28
|
||
|
(byte*~) main::$19 ← (byte*) main::SCREEN#0 + (number~) main::$18
|
||
|
(number~) main::$20 ← (byte) main::i#2 * (number) 7
|
||
|
*((byte*~) main::$19 + (byte) main::i#2) ← (number~) main::$20
|
||
|
(number~) main::$21 ← (number) 7 * (number) $28
|
||
|
(byte*~) main::$22 ← (byte*) main::SCREEN#0 + (number~) main::$21
|
||
|
(number~) main::$23 ← (byte) main::i#2 * (number) 8
|
||
|
*((byte*~) main::$22 + (byte) main::i#2) ← (number~) main::$23
|
||
|
(number~) main::$24 ← (number) 8 * (number) $28
|
||
|
(byte*~) main::$25 ← (byte*) main::SCREEN#0 + (number~) main::$24
|
||
|
(number~) main::$26 ← (byte) main::i#2 * (number) 9
|
||
|
*((byte*~) main::$25 + (byte) main::i#2) ← (number~) main::$26
|
||
|
(number~) main::$27 ← (number) 9 * (number) $28
|
||
|
(byte*~) main::$28 ← (byte*) main::SCREEN#0 + (number~) main::$27
|
||
|
(number~) main::$29 ← (byte) main::i#2 * (number) $a
|
||
|
*((byte*~) main::$28 + (byte) main::i#2) ← (number~) main::$29
|
||
|
(number~) main::$30 ← (number) $a * (number) $28
|
||
|
(byte*~) main::$31 ← (byte*) main::SCREEN#0 + (number~) main::$30
|
||
|
(number~) main::$32 ← (byte) main::i#2 * (number) $b
|
||
|
*((byte*~) main::$31 + (byte) main::i#2) ← (number~) main::$32
|
||
|
(number~) main::$33 ← (number) $b * (number) $28
|
||
|
(byte*~) main::$34 ← (byte*) main::SCREEN#0 + (number~) main::$33
|
||
|
(number~) main::$35 ← (byte) main::i#2 * (number) $c
|
||
|
*((byte*~) main::$34 + (byte) main::i#2) ← (number~) main::$35
|
||
|
(number~) main::$36 ← (number) $c * (number) $28
|
||
|
(byte*~) main::$37 ← (byte*) main::SCREEN#0 + (number~) main::$36
|
||
|
(number~) main::$38 ← (byte) main::i#2 * (number) $d
|
||
|
*((byte*~) main::$37 + (byte) main::i#2) ← (number~) main::$38
|
||
|
(number~) main::$39 ← (number) $d * (number) $28
|
||
|
(byte*~) main::$40 ← (byte*) main::SCREEN#0 + (number~) main::$39
|
||
|
(number~) main::$41 ← (byte) main::i#2 * (number) $e
|
||
|
*((byte*~) main::$40 + (byte) main::i#2) ← (number~) main::$41
|
||
|
(number~) main::$42 ← (number) $e * (number) $28
|
||
|
(byte*~) main::$43 ← (byte*) main::SCREEN#0 + (number~) main::$42
|
||
|
(number~) main::$44 ← (byte) main::i#2 * (number) $f
|
||
|
*((byte*~) main::$43 + (byte) main::i#2) ← (number~) main::$44
|
||
|
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$11)
|
||
|
(bool~) main::$45 ← (byte) main::i#1 != rangelast(0,$11)
|
||
|
if((bool~) main::$45) goto main::@1
|
||
|
to:main::@return
|
||
|
main::@return: scope:[main] from main::@1
|
||
|
return
|
||
|
to:@return
|
||
|
@1: scope:[] from @begin
|
||
|
call main
|
||
|
to:@2
|
||
|
@2: scope:[] from @1
|
||
|
to:@end
|
||
|
@end: scope:[] from @2
|
||
|
|
||
|
SYMBOL TABLE SSA
|
||
|
(label) @1
|
||
|
(label) @2
|
||
|
(label) @begin
|
||
|
(label) @end
|
||
|
(void()) main()
|
||
|
(number~) main::$0
|
||
|
(byte*~) main::$1
|
||
|
(byte*~) main::$10
|
||
|
(number~) main::$11
|
||
|
(number~) main::$12
|
||
|
(byte*~) main::$13
|
||
|
(number~) main::$14
|
||
|
(number~) main::$15
|
||
|
(byte*~) main::$16
|
||
|
(number~) main::$17
|
||
|
(number~) main::$18
|
||
|
(byte*~) main::$19
|
||
|
(number~) main::$2
|
||
|
(number~) main::$20
|
||
|
(number~) main::$21
|
||
|
(byte*~) main::$22
|
||
|
(number~) main::$23
|
||
|
(number~) main::$24
|
||
|
(byte*~) main::$25
|
||
|
(number~) main::$26
|
||
|
(number~) main::$27
|
||
|
(byte*~) main::$28
|
||
|
(number~) main::$29
|
||
|
(number~) main::$3
|
||
|
(number~) main::$30
|
||
|
(byte*~) main::$31
|
||
|
(number~) main::$32
|
||
|
(number~) main::$33
|
||
|
(byte*~) main::$34
|
||
|
(number~) main::$35
|
||
|
(number~) main::$36
|
||
|
(byte*~) main::$37
|
||
|
(number~) main::$38
|
||
|
(number~) main::$39
|
||
|
(byte*~) main::$4
|
||
|
(byte*~) main::$40
|
||
|
(number~) main::$41
|
||
|
(number~) main::$42
|
||
|
(byte*~) main::$43
|
||
|
(number~) main::$44
|
||
|
(bool~) main::$45
|
||
|
(number~) main::$5
|
||
|
(number~) main::$6
|
||
|
(byte*~) main::$7
|
||
|
(number~) main::$8
|
||
|
(number~) main::$9
|
||
|
(label) main::@1
|
||
|
(label) main::@return
|
||
|
(byte*) main::SCREEN
|
||
|
(byte*) main::SCREEN#0
|
||
|
(byte) main::i
|
||
|
(byte) main::i#0
|
||
|
(byte) main::i#1
|
||
|
(byte) main::i#2
|
||
|
|
||
|
Adding number conversion cast (unumber) main::$0 in (byte*~) main::$1 ← (byte*) main::SCREEN#0 + (number~) main::$0
|
||
|
Adding number conversion cast (unumber) 1 in (number~) main::$2 ← (byte) main::i#2 * (number) 1
|
||
|
Adding number conversion cast (unumber) main::$2 in (number~) main::$2 ← (byte) main::i#2 * (unumber)(number) 1
|
||
|
Adding number conversion cast (unumber) main::$3 in (byte*~) main::$4 ← (byte*) main::SCREEN#0 + (number~) main::$3
|
||
|
Adding number conversion cast (unumber) 2 in (number~) main::$5 ← (byte) main::i#2 * (number) 2
|
||
|
Adding number conversion cast (unumber) main::$5 in (number~) main::$5 ← (byte) main::i#2 * (unumber)(number) 2
|
||
|
Adding number conversion cast (unumber) main::$6 in (byte*~) main::$7 ← (byte*) main::SCREEN#0 + (number~) main::$6
|
||
|
Adding number conversion cast (unumber) 3 in (number~) main::$8 ← (byte) main::i#2 * (number) 3
|
||
|
Adding number conversion cast (unumber) main::$8 in (number~) main::$8 ← (byte) main::i#2 * (unumber)(number) 3
|
||
|
Adding number conversion cast (unumber) main::$9 in (byte*~) main::$10 ← (byte*) main::SCREEN#0 + (number~) main::$9
|
||
|
Adding number conversion cast (unumber) 4 in (number~) main::$11 ← (byte) main::i#2 * (number) 4
|
||
|
Adding number conversion cast (unumber) main::$11 in (number~) main::$11 ← (byte) main::i#2 * (unumber)(number) 4
|
||
|
Adding number conversion cast (unumber) main::$12 in (byte*~) main::$13 ← (byte*) main::SCREEN#0 + (number~) main::$12
|
||
|
Adding number conversion cast (unumber) 5 in (number~) main::$14 ← (byte) main::i#2 * (number) 5
|
||
|
Adding number conversion cast (unumber) main::$14 in (number~) main::$14 ← (byte) main::i#2 * (unumber)(number) 5
|
||
|
Adding number conversion cast (unumber) main::$15 in (byte*~) main::$16 ← (byte*) main::SCREEN#0 + (number~) main::$15
|
||
|
Adding number conversion cast (unumber) 6 in (number~) main::$17 ← (byte) main::i#2 * (number) 6
|
||
|
Adding number conversion cast (unumber) main::$17 in (number~) main::$17 ← (byte) main::i#2 * (unumber)(number) 6
|
||
|
Adding number conversion cast (unumber) main::$18 in (byte*~) main::$19 ← (byte*) main::SCREEN#0 + (number~) main::$18
|
||
|
Adding number conversion cast (unumber) 7 in (number~) main::$20 ← (byte) main::i#2 * (number) 7
|
||
|
Adding number conversion cast (unumber) main::$20 in (number~) main::$20 ← (byte) main::i#2 * (unumber)(number) 7
|
||
|
Adding number conversion cast (unumber) main::$21 in (byte*~) main::$22 ← (byte*) main::SCREEN#0 + (number~) main::$21
|
||
|
Adding number conversion cast (unumber) 8 in (number~) main::$23 ← (byte) main::i#2 * (number) 8
|
||
|
Adding number conversion cast (unumber) main::$23 in (number~) main::$23 ← (byte) main::i#2 * (unumber)(number) 8
|
||
|
Adding number conversion cast (unumber) main::$24 in (byte*~) main::$25 ← (byte*) main::SCREEN#0 + (number~) main::$24
|
||
|
Adding number conversion cast (unumber) 9 in (number~) main::$26 ← (byte) main::i#2 * (number) 9
|
||
|
Adding number conversion cast (unumber) main::$26 in (number~) main::$26 ← (byte) main::i#2 * (unumber)(number) 9
|
||
|
Adding number conversion cast (unumber) main::$27 in (byte*~) main::$28 ← (byte*) main::SCREEN#0 + (number~) main::$27
|
||
|
Adding number conversion cast (unumber) $a in (number~) main::$29 ← (byte) main::i#2 * (number) $a
|
||
|
Adding number conversion cast (unumber) main::$29 in (number~) main::$29 ← (byte) main::i#2 * (unumber)(number) $a
|
||
|
Adding number conversion cast (unumber) main::$30 in (byte*~) main::$31 ← (byte*) main::SCREEN#0 + (number~) main::$30
|
||
|
Adding number conversion cast (unumber) $b in (number~) main::$32 ← (byte) main::i#2 * (number) $b
|
||
|
Adding number conversion cast (unumber) main::$32 in (number~) main::$32 ← (byte) main::i#2 * (unumber)(number) $b
|
||
|
Adding number conversion cast (unumber) main::$33 in (byte*~) main::$34 ← (byte*) main::SCREEN#0 + (number~) main::$33
|
||
|
Adding number conversion cast (unumber) $c in (number~) main::$35 ← (byte) main::i#2 * (number) $c
|
||
|
Adding number conversion cast (unumber) main::$35 in (number~) main::$35 ← (byte) main::i#2 * (unumber)(number) $c
|
||
|
Adding number conversion cast (unumber) main::$36 in (byte*~) main::$37 ← (byte*) main::SCREEN#0 + (number~) main::$36
|
||
|
Adding number conversion cast (unumber) $d in (number~) main::$38 ← (byte) main::i#2 * (number) $d
|
||
|
Adding number conversion cast (unumber) main::$38 in (number~) main::$38 ← (byte) main::i#2 * (unumber)(number) $d
|
||
|
Adding number conversion cast (unumber) main::$39 in (byte*~) main::$40 ← (byte*) main::SCREEN#0 + (number~) main::$39
|
||
|
Adding number conversion cast (unumber) $e in (number~) main::$41 ← (byte) main::i#2 * (number) $e
|
||
|
Adding number conversion cast (unumber) main::$41 in (number~) main::$41 ← (byte) main::i#2 * (unumber)(number) $e
|
||
|
Adding number conversion cast (unumber) main::$42 in (byte*~) main::$43 ← (byte*) main::SCREEN#0 + (number~) main::$42
|
||
|
Adding number conversion cast (unumber) $f in (number~) main::$44 ← (byte) main::i#2 * (number) $f
|
||
|
Adding number conversion cast (unumber) main::$44 in (number~) main::$44 ← (byte) main::i#2 * (unumber)(number) $f
|
||
|
Successful SSA optimization PassNAddNumberTypeConversions
|
||
|
Inlining cast (byte*) main::SCREEN#0 ← (byte*)(number) $400
|
||
|
Inlining cast (unumber~) main::$46 ← (unumber)(number~) main::$0
|
||
|
Inlining cast (unumber~) main::$47 ← (unumber)(number~) main::$3
|
||
|
Inlining cast (unumber~) main::$48 ← (unumber)(number~) main::$6
|
||
|
Inlining cast (unumber~) main::$49 ← (unumber)(number~) main::$9
|
||
|
Inlining cast (unumber~) main::$50 ← (unumber)(number~) main::$12
|
||
|
Inlining cast (unumber~) main::$51 ← (unumber)(number~) main::$15
|
||
|
Inlining cast (unumber~) main::$52 ← (unumber)(number~) main::$18
|
||
|
Inlining cast (unumber~) main::$53 ← (unumber)(number~) main::$21
|
||
|
Inlining cast (unumber~) main::$54 ← (unumber)(number~) main::$24
|
||
|
Inlining cast (unumber~) main::$55 ← (unumber)(number~) main::$27
|
||
|
Inlining cast (unumber~) main::$56 ← (unumber)(number~) main::$30
|
||
|
Inlining cast (unumber~) main::$57 ← (unumber)(number~) main::$33
|
||
|
Inlining cast (unumber~) main::$58 ← (unumber)(number~) main::$36
|
||
|
Inlining cast (unumber~) main::$59 ← (unumber)(number~) main::$39
|
||
|
Inlining cast (unumber~) main::$60 ← (unumber)(number~) main::$42
|
||
|
Successful SSA optimization Pass2InlineCast
|
||
|
Simplifying constant pointer cast (byte*) 1024
|
||
|
Simplifying constant integer cast 1
|
||
|
Simplifying constant integer cast 2
|
||
|
Simplifying constant integer cast 3
|
||
|
Simplifying constant integer cast 4
|
||
|
Simplifying constant integer cast 5
|
||
|
Simplifying constant integer cast 6
|
||
|
Simplifying constant integer cast 7
|
||
|
Simplifying constant integer cast 8
|
||
|
Simplifying constant integer cast 9
|
||
|
Simplifying constant integer cast $a
|
||
|
Simplifying constant integer cast $b
|
||
|
Simplifying constant integer cast $c
|
||
|
Simplifying constant integer cast $d
|
||
|
Simplifying constant integer cast $e
|
||
|
Simplifying constant integer cast $f
|
||
|
Successful SSA optimization PassNCastSimplification
|
||
|
Finalized unsigned number type (byte) 1
|
||
|
Finalized unsigned number type (byte) 2
|
||
|
Finalized unsigned number type (byte) 3
|
||
|
Finalized unsigned number type (byte) 4
|
||
|
Finalized unsigned number type (byte) 5
|
||
|
Finalized unsigned number type (byte) 6
|
||
|
Finalized unsigned number type (byte) 7
|
||
|
Finalized unsigned number type (byte) 8
|
||
|
Finalized unsigned number type (byte) 9
|
||
|
Finalized unsigned number type (byte) $a
|
||
|
Finalized unsigned number type (byte) $b
|
||
|
Finalized unsigned number type (byte) $c
|
||
|
Finalized unsigned number type (byte) $d
|
||
|
Finalized unsigned number type (byte) $e
|
||
|
Finalized unsigned number type (byte) $f
|
||
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||
|
Inferred type updated to byte in (unumber~) main::$2 ← (byte) main::i#2 * (byte) 1
|
||
|
Inferred type updated to byte in (unumber~) main::$5 ← (byte) main::i#2 * (byte) 2
|
||
|
Inferred type updated to byte in (unumber~) main::$8 ← (byte) main::i#2 * (byte) 3
|
||
|
Inferred type updated to byte in (unumber~) main::$11 ← (byte) main::i#2 * (byte) 4
|
||
|
Inferred type updated to byte in (unumber~) main::$14 ← (byte) main::i#2 * (byte) 5
|
||
|
Inferred type updated to byte in (unumber~) main::$17 ← (byte) main::i#2 * (byte) 6
|
||
|
Inferred type updated to byte in (unumber~) main::$20 ← (byte) main::i#2 * (byte) 7
|
||
|
Inferred type updated to byte in (unumber~) main::$23 ← (byte) main::i#2 * (byte) 8
|
||
|
Inferred type updated to byte in (unumber~) main::$26 ← (byte) main::i#2 * (byte) 9
|
||
|
Inferred type updated to byte in (unumber~) main::$29 ← (byte) main::i#2 * (byte) $a
|
||
|
Inferred type updated to byte in (unumber~) main::$32 ← (byte) main::i#2 * (byte) $b
|
||
|
Inferred type updated to byte in (unumber~) main::$35 ← (byte) main::i#2 * (byte) $c
|
||
|
Inferred type updated to byte in (unumber~) main::$38 ← (byte) main::i#2 * (byte) $d
|
||
|
Inferred type updated to byte in (unumber~) main::$41 ← (byte) main::i#2 * (byte) $e
|
||
|
Inferred type updated to byte in (unumber~) main::$44 ← (byte) main::i#2 * (byte) $f
|
||
|
Simple Condition (bool~) main::$45 [80] if((byte) main::i#1!=rangelast(0,$11)) goto main::@1
|
||
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||
|
Constant right-side identified [3] (number~) main::$0 ← (number) 0 * (number) $28
|
||
|
Constant right-side identified [8] (number~) main::$3 ← (number) 1 * (number) $28
|
||
|
Constant right-side identified [13] (number~) main::$6 ← (number) 2 * (number) $28
|
||
|
Constant right-side identified [18] (number~) main::$9 ← (number) 3 * (number) $28
|
||
|
Constant right-side identified [23] (number~) main::$12 ← (number) 4 * (number) $28
|
||
|
Constant right-side identified [28] (number~) main::$15 ← (number) 5 * (number) $28
|
||
|
Constant right-side identified [33] (number~) main::$18 ← (number) 6 * (number) $28
|
||
|
Constant right-side identified [38] (number~) main::$21 ← (number) 7 * (number) $28
|
||
|
Constant right-side identified [43] (number~) main::$24 ← (number) 8 * (number) $28
|
||
|
Constant right-side identified [48] (number~) main::$27 ← (number) 9 * (number) $28
|
||
|
Constant right-side identified [53] (number~) main::$30 ← (number) $a * (number) $28
|
||
|
Constant right-side identified [58] (number~) main::$33 ← (number) $b * (number) $28
|
||
|
Constant right-side identified [63] (number~) main::$36 ← (number) $c * (number) $28
|
||
|
Constant right-side identified [68] (number~) main::$39 ← (number) $d * (number) $28
|
||
|
Constant right-side identified [73] (number~) main::$42 ← (number) $e * (number) $28
|
||
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||
|
Constant (const byte*) main::SCREEN#0 = (byte*) 1024
|
||
|
Constant (const byte) main::i#0 = 0
|
||
|
Constant (const number) main::$0 = 0*$28
|
||
|
Constant (const number) main::$3 = 1*$28
|
||
|
Constant (const number) main::$6 = 2*$28
|
||
|
Constant (const number) main::$9 = 3*$28
|
||
|
Constant (const number) main::$12 = 4*$28
|
||
|
Constant (const number) main::$15 = 5*$28
|
||
|
Constant (const number) main::$18 = 6*$28
|
||
|
Constant (const number) main::$21 = 7*$28
|
||
|
Constant (const number) main::$24 = 8*$28
|
||
|
Constant (const number) main::$27 = 9*$28
|
||
|
Constant (const number) main::$30 = $a*$28
|
||
|
Constant (const number) main::$33 = $b*$28
|
||
|
Constant (const number) main::$36 = $c*$28
|
||
|
Constant (const number) main::$39 = $d*$28
|
||
|
Constant (const number) main::$42 = $e*$28
|
||
|
Successful SSA optimization Pass2ConstantIdentification
|
||
|
Constant value identified (unumber)main::$0 in [4] (unumber~) main::$46 ← (unumber)(const number) main::$0
|
||
|
Constant value identified (unumber)main::$3 in [9] (unumber~) main::$47 ← (unumber)(const number) main::$3
|
||
|
Constant value identified (unumber)main::$6 in [14] (unumber~) main::$48 ← (unumber)(const number) main::$6
|
||
|
Constant value identified (unumber)main::$9 in [19] (unumber~) main::$49 ← (unumber)(const number) main::$9
|
||
|
Constant value identified (unumber)main::$12 in [24] (unumber~) main::$50 ← (unumber)(const number) main::$12
|
||
|
Constant value identified (unumber)main::$15 in [29] (unumber~) main::$51 ← (unumber)(const number) main::$15
|
||
|
Constant value identified (unumber)main::$18 in [34] (unumber~) main::$52 ← (unumber)(const number) main::$18
|
||
|
Constant value identified (unumber)main::$21 in [39] (unumber~) main::$53 ← (unumber)(const number) main::$21
|
||
|
Constant value identified (unumber)main::$24 in [44] (unumber~) main::$54 ← (unumber)(const number) main::$24
|
||
|
Constant value identified (unumber)main::$27 in [49] (unumber~) main::$55 ← (unumber)(const number) main::$27
|
||
|
Constant value identified (unumber)main::$30 in [54] (unumber~) main::$56 ← (unumber)(const number) main::$30
|
||
|
Constant value identified (unumber)main::$33 in [59] (unumber~) main::$57 ← (unumber)(const number) main::$33
|
||
|
Constant value identified (unumber)main::$36 in [64] (unumber~) main::$58 ← (unumber)(const number) main::$36
|
||
|
Constant value identified (unumber)main::$39 in [69] (unumber~) main::$59 ← (unumber)(const number) main::$39
|
||
|
Constant value identified (unumber)main::$42 in [74] (unumber~) main::$60 ← (unumber)(const number) main::$42
|
||
|
Successful SSA optimization Pass2ConstantValues
|
||
|
Resolved ranged next value [78] main::i#1 ← ++ main::i#2 to ++
|
||
|
Resolved ranged comparison value [80] if(main::i#1!=rangelast(0,$11)) goto main::@1 to (number) $12
|
||
|
Simplifying constant evaluating to zero (number) 0*(number) $28 in
|
||
|
Simplifying constant evaluating to zero (unumber)(const number) main::$0 in [4] (unumber~) main::$46 ← (unumber)(const number) main::$0
|
||
|
Successful SSA optimization PassNSimplifyConstantZero
|
||
|
Eliminating unused constant (const number) main::$0
|
||
|
Successful SSA optimization PassNEliminateUnusedVars
|
||
|
Adding number conversion cast (unumber) $12 in if((byte) main::i#1!=(number) $12) goto main::@1
|
||
|
Successful SSA optimization PassNAddNumberTypeConversions
|
||
|
Simplifying constant integer cast $12
|
||
|
Successful SSA optimization PassNCastSimplification
|
||
|
Finalized unsigned number type (byte) 0
|
||
|
Finalized unsigned number type (byte) $12
|
||
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||
|
Inferred type updated to byte in (unumber~) main::$46 ← (byte) 0
|
||
|
Constant (const byte) main::$46 = 0
|
||
|
Constant (const unumber) main::$47 = (unumber)main::$3
|
||
|
Constant (const unumber) main::$48 = (unumber)main::$6
|
||
|
Constant (const unumber) main::$49 = (unumber)main::$9
|
||
|
Constant (const unumber) main::$50 = (unumber)main::$12
|
||
|
Constant (const unumber) main::$51 = (unumber)main::$15
|
||
|
Constant (const unumber) main::$52 = (unumber)main::$18
|
||
|
Constant (const unumber) main::$53 = (unumber)main::$21
|
||
|
Constant (const unumber) main::$54 = (unumber)main::$24
|
||
|
Constant (const unumber) main::$55 = (unumber)main::$27
|
||
|
Constant (const unumber) main::$56 = (unumber)main::$30
|
||
|
Constant (const unumber) main::$57 = (unumber)main::$33
|
||
|
Constant (const unumber) main::$58 = (unumber)main::$36
|
||
|
Constant (const unumber) main::$59 = (unumber)main::$39
|
||
|
Constant (const unumber) main::$60 = (unumber)main::$42
|
||
|
Successful SSA optimization Pass2ConstantIdentification
|
||
|
Simplifying expression containing zero main::SCREEN#0 in [2] (byte*~) main::$1 ← (const byte*) main::SCREEN#0 + (const byte) main::$46
|
||
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||
|
Eliminating unused constant (const byte) main::$46
|
||
|
Successful SSA optimization PassNEliminateUnusedVars
|
||
|
Simplifying constant integer cast (const unumber) main::$3
|
||
|
Simplifying constant integer cast (const unumber) main::$6
|
||
|
Simplifying constant integer cast (const unumber) main::$9
|
||
|
Simplifying constant integer cast (const unumber) main::$12
|
||
|
Simplifying constant integer cast (const unumber) main::$15
|
||
|
Simplifying constant integer cast (const unumber) main::$18
|
||
|
Simplifying constant integer cast (const unumber) main::$21
|
||
|
Simplifying constant integer cast (const unumber) main::$24
|
||
|
Simplifying constant integer cast (const unumber) main::$27
|
||
|
Simplifying constant integer cast (const unumber) main::$30
|
||
|
Simplifying constant integer cast (const unumber) main::$33
|
||
|
Simplifying constant integer cast (const unumber) main::$36
|
||
|
Simplifying constant integer cast (const unumber) main::$39
|
||
|
Simplifying constant integer cast (const unumber) main::$42
|
||
|
Successful SSA optimization PassNCastSimplification
|
||
|
Constant right-side identified [4] (byte*~) main::$4 ← (const byte*) main::SCREEN#0 + (const unumber) main::$47
|
||
|
Constant right-side identified [7] (byte*~) main::$7 ← (const byte*) main::SCREEN#0 + (const unumber) main::$48
|
||
|
Constant right-side identified [10] (byte*~) main::$10 ← (const byte*) main::SCREEN#0 + (const unumber) main::$49
|
||
|
Constant right-side identified [13] (byte*~) main::$13 ← (const byte*) main::SCREEN#0 + (const unumber) main::$50
|
||
|
Constant right-side identified [16] (byte*~) main::$16 ← (const byte*) main::SCREEN#0 + (const unumber) main::$51
|
||
|
Constant right-side identified [19] (byte*~) main::$19 ← (const byte*) main::SCREEN#0 + (const unumber) main::$52
|
||
|
Constant right-side identified [22] (byte*~) main::$22 ← (const byte*) main::SCREEN#0 + (const unumber) main::$53
|
||
|
Constant right-side identified [25] (byte*~) main::$25 ← (const byte*) main::SCREEN#0 + (const unumber) main::$54
|
||
|
Constant right-side identified [28] (byte*~) main::$28 ← (const byte*) main::SCREEN#0 + (const unumber) main::$55
|
||
|
Constant right-side identified [31] (byte*~) main::$31 ← (const byte*) main::SCREEN#0 + (const unumber) main::$56
|
||
|
Constant right-side identified [34] (byte*~) main::$34 ← (const byte*) main::SCREEN#0 + (const unumber) main::$57
|
||
|
Constant right-side identified [37] (byte*~) main::$37 ← (const byte*) main::SCREEN#0 + (const unumber) main::$58
|
||
|
Constant right-side identified [40] (byte*~) main::$40 ← (const byte*) main::SCREEN#0 + (const unumber) main::$59
|
||
|
Constant right-side identified [43] (byte*~) main::$43 ← (const byte*) main::SCREEN#0 + (const unumber) main::$60
|
||
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||
|
Constant (const byte*) main::$1 = main::SCREEN#0
|
||
|
Constant (const byte*) main::$4 = main::SCREEN#0+main::$47
|
||
|
Constant (const byte*) main::$7 = main::SCREEN#0+main::$48
|
||
|
Constant (const byte*) main::$10 = main::SCREEN#0+main::$49
|
||
|
Constant (const byte*) main::$13 = main::SCREEN#0+main::$50
|
||
|
Constant (const byte*) main::$16 = main::SCREEN#0+main::$51
|
||
|
Constant (const byte*) main::$19 = main::SCREEN#0+main::$52
|
||
|
Constant (const byte*) main::$22 = main::SCREEN#0+main::$53
|
||
|
Constant (const byte*) main::$25 = main::SCREEN#0+main::$54
|
||
|
Constant (const byte*) main::$28 = main::SCREEN#0+main::$55
|
||
|
Constant (const byte*) main::$31 = main::SCREEN#0+main::$56
|
||
|
Constant (const byte*) main::$34 = main::SCREEN#0+main::$57
|
||
|
Constant (const byte*) main::$37 = main::SCREEN#0+main::$58
|
||
|
Constant (const byte*) main::$40 = main::SCREEN#0+main::$59
|
||
|
Constant (const byte*) main::$43 = main::SCREEN#0+main::$60
|
||
|
Successful SSA optimization Pass2ConstantIdentification
|
||
|
Rewriting multiplication to remove identity multiply/divide [1] (byte~) main::$2 ← (byte) main::i#2 * (byte) 1
|
||
|
Rewriting multiplication to use shift [3] (byte~) main::$5 ← (byte) main::i#2 * (byte) 2
|
||
|
Rewriting multiplication to use shift and addition[5] (byte~) main::$8 ← (byte) main::i#2 * (byte) 3
|
||
|
Rewriting multiplication to use shift [7] (byte~) main::$11 ← (byte) main::i#2 * (byte) 4
|
||
|
Rewriting multiplication to use shift and addition[9] (byte~) main::$14 ← (byte) main::i#2 * (byte) 5
|
||
|
Rewriting multiplication to use shift and addition[11] (byte~) main::$17 ← (byte) main::i#2 * (byte) 6
|
||
|
Rewriting multiplication to use shift and addition[13] (byte~) main::$20 ← (byte) main::i#2 * (byte) 7
|
||
|
Rewriting multiplication to use shift [15] (byte~) main::$23 ← (byte) main::i#2 * (byte) 8
|
||
|
Rewriting multiplication to use shift and addition[17] (byte~) main::$26 ← (byte) main::i#2 * (byte) 9
|
||
|
Rewriting multiplication to use shift and addition[19] (byte~) main::$29 ← (byte) main::i#2 * (byte) $a
|
||
|
Rewriting multiplication to use shift and addition[21] (byte~) main::$32 ← (byte) main::i#2 * (byte) $b
|
||
|
Rewriting multiplication to use shift and addition[23] (byte~) main::$35 ← (byte) main::i#2 * (byte) $c
|
||
|
Rewriting multiplication to use shift and addition[25] (byte~) main::$38 ← (byte) main::i#2 * (byte) $d
|
||
|
Rewriting multiplication to use shift and addition[27] (byte~) main::$41 ← (byte) main::i#2 * (byte) $e
|
||
|
Rewriting multiplication to use shift and addition[29] (byte~) main::$44 ← (byte) main::i#2 * (byte) $f
|
||
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
||
|
Inlining constant with var siblings (const byte) main::i#0
|
||
|
Constant inlined main::$50 = (number) 4*(number) $28
|
||
|
Constant inlined main::$51 = (number) 5*(number) $28
|
||
|
Constant inlined main::$12 = (number) 4*(number) $28
|
||
|
Constant inlined main::$56 = (number) $a*(number) $28
|
||
|
Constant inlined main::$34 = (const byte*) main::SCREEN#0+(number) $b*(number) $28
|
||
|
Constant inlined main::$57 = (number) $b*(number) $28
|
||
|
Constant inlined main::$13 = (const byte*) main::SCREEN#0+(number) 4*(number) $28
|
||
|
Constant inlined main::$36 = (number) $c*(number) $28
|
||
|
Constant inlined main::$58 = (number) $c*(number) $28
|
||
|
Constant inlined main::$15 = (number) 5*(number) $28
|
||
|
Constant inlined main::$59 = (number) $d*(number) $28
|
||
|
Constant inlined main::$37 = (const byte*) main::SCREEN#0+(number) $c*(number) $28
|
||
|
Constant inlined main::$30 = (number) $a*(number) $28
|
||
|
Constant inlined main::$52 = (number) 6*(number) $28
|
||
|
Constant inlined main::$53 = (number) 7*(number) $28
|
||
|
Constant inlined main::$31 = (const byte*) main::SCREEN#0+(number) $a*(number) $28
|
||
|
Constant inlined main::$54 = (number) 8*(number) $28
|
||
|
Constant inlined main::$10 = (const byte*) main::SCREEN#0+(number) 3*(number) $28
|
||
|
Constant inlined main::$33 = (number) $b*(number) $28
|
||
|
Constant inlined main::$55 = (number) 9*(number) $28
|
||
|
Constant inlined main::$16 = (const byte*) main::SCREEN#0+(number) 5*(number) $28
|
||
|
Constant inlined main::$39 = (number) $d*(number) $28
|
||
|
Constant inlined main::$18 = (number) 6*(number) $28
|
||
|
Constant inlined main::$19 = (const byte*) main::SCREEN#0+(number) 6*(number) $28
|
||
|
Constant inlined main::i#0 = (byte) 0
|
||
|
Constant inlined main::$60 = (number) $e*(number) $28
|
||
|
Constant inlined main::$40 = (const byte*) main::SCREEN#0+(number) $d*(number) $28
|
||
|
Constant inlined main::$24 = (number) 8*(number) $28
|
||
|
Constant inlined main::$47 = (number) 1*(number) $28
|
||
|
Constant inlined main::$25 = (const byte*) main::SCREEN#0+(number) 8*(number) $28
|
||
|
Constant inlined main::$48 = (number) 2*(number) $28
|
||
|
Constant inlined main::$42 = (number) $e*(number) $28
|
||
|
Constant inlined main::$21 = (number) 7*(number) $28
|
||
|
Constant inlined main::$43 = (const byte*) main::SCREEN#0+(number) $e*(number) $28
|
||
|
Constant inlined main::$22 = (const byte*) main::SCREEN#0+(number) 7*(number) $28
|
||
|
Constant inlined main::$27 = (number) 9*(number) $28
|
||
|
Constant inlined main::$1 = (const byte*) main::SCREEN#0
|
||
|
Constant inlined main::$49 = (number) 3*(number) $28
|
||
|
Constant inlined main::$28 = (const byte*) main::SCREEN#0+(number) 9*(number) $28
|
||
|
Constant inlined main::$6 = (number) 2*(number) $28
|
||
|
Constant inlined main::$3 = (number) 1*(number) $28
|
||
|
Constant inlined main::$4 = (const byte*) main::SCREEN#0+(number) 1*(number) $28
|
||
|
Constant inlined main::$9 = (number) 3*(number) $28
|
||
|
Constant inlined main::$7 = (const byte*) main::SCREEN#0+(number) 2*(number) $28
|
||
|
Successful SSA optimization Pass2ConstantInlining
|
||
|
Adding number conversion cast (unumber) 1*$28 in [4] *((const byte*) main::SCREEN#0+(number) 1*(number) $28 + (byte) main::i#2) ← (byte~) main::$5
|
||
|
Adding number conversion cast (unumber) 2*$28 in [6] *((const byte*) main::SCREEN#0+(number) 2*(number) $28 + (byte) main::i#2) ← (byte~) main::$8
|
||
|
Adding number conversion cast (unumber) 3*$28 in [8] *((const byte*) main::SCREEN#0+(number) 3*(number) $28 + (byte) main::i#2) ← (byte~) main::$11
|
||
|
Adding number conversion cast (unumber) 4*$28 in [10] *((const byte*) main::SCREEN#0+(number) 4*(number) $28 + (byte) main::i#2) ← (byte~) main::$14
|
||
|
Adding number conversion cast (unumber) 5*$28 in [12] *((const byte*) main::SCREEN#0+(number) 5*(number) $28 + (byte) main::i#2) ← (byte~) main::$17
|
||
|
Adding number conversion cast (unumber) 6*$28 in [14] *((const byte*) main::SCREEN#0+(number) 6*(number) $28 + (byte) main::i#2) ← (byte~) main::$20
|
||
|
Adding number conversion cast (unumber) 7*$28 in [16] *((const byte*) main::SCREEN#0+(number) 7*(number) $28 + (byte) main::i#2) ← (byte~) main::$23
|
||
|
Adding number conversion cast (unumber) 8*$28 in [18] *((const byte*) main::SCREEN#0+(number) 8*(number) $28 + (byte) main::i#2) ← (byte~) main::$26
|
||
|
Adding number conversion cast (unumber) 9*$28 in [20] *((const byte*) main::SCREEN#0+(number) 9*(number) $28 + (byte) main::i#2) ← (byte~) main::$29
|
||
|
Adding number conversion cast (unumber) $a*$28 in [22] *((const byte*) main::SCREEN#0+(number) $a*(number) $28 + (byte) main::i#2) ← (byte~) main::$32
|
||
|
Adding number conversion cast (unumber) $b*$28 in [24] *((const byte*) main::SCREEN#0+(number) $b*(number) $28 + (byte) main::i#2) ← (byte~) main::$35
|
||
|
Adding number conversion cast (unumber) $c*$28 in [26] *((const byte*) main::SCREEN#0+(number) $c*(number) $28 + (byte) main::i#2) ← (byte~) main::$38
|
||
|
Adding number conversion cast (unumber) $d*$28 in [28] *((const byte*) main::SCREEN#0+(number) $d*(number) $28 + (byte) main::i#2) ← (byte~) main::$41
|
||
|
Adding number conversion cast (unumber) $e*$28 in [30] *((const byte*) main::SCREEN#0+(number) $e*(number) $28 + (byte) main::i#2) ← (byte~) main::$44
|
||
|
Successful SSA optimization PassNAddNumberTypeConversions
|
||
|
Alias (byte) main::i#2 = (byte~) main::$2
|
||
|
Alias (byte~) main::$8 = (byte) main::$62
|
||
|
Alias (byte~) main::$14 = (byte) main::$64
|
||
|
Alias (byte~) main::$17 = (byte) main::$67
|
||
|
Alias (byte~) main::$20 = (byte) main::$71
|
||
|
Alias (byte~) main::$26 = (byte) main::$73
|
||
|
Alias (byte~) main::$29 = (byte) main::$76
|
||
|
Alias (byte~) main::$32 = (byte) main::$80
|
||
|
Alias (byte~) main::$35 = (byte) main::$83
|
||
|
Alias (byte~) main::$38 = (byte) main::$87
|
||
|
Alias (byte~) main::$41 = (byte) main::$92
|
||
|
Alias (byte~) main::$44 = (byte) main::$98
|
||
|
Successful SSA optimization Pass2AliasElimination
|
||
|
Identified duplicate assignment right side [5] (byte) main::$61 ← (byte) main::i#2 << (byte) 1
|
||
|
Identified duplicate assignment right side [11] (byte) main::$63 ← (byte) main::i#2 << (byte) 2
|
||
|
Identified duplicate assignment right side [15] (byte) main::$65 ← (byte) main::i#2 << (byte) 1
|
||
|
Identified duplicate assignment right side [20] (byte) main::$68 ← (byte) main::i#2 << (byte) 1
|
||
|
Identified duplicate assignment right side [28] (byte) main::$72 ← (byte) main::i#2 << (byte) 3
|
||
|
Identified duplicate assignment right side [32] (byte) main::$74 ← (byte) main::i#2 << (byte) 2
|
||
|
Identified duplicate assignment right side [37] (byte) main::$77 ← (byte) main::i#2 << (byte) 2
|
||
|
Identified duplicate assignment right side [43] (byte) main::$81 ← (byte) main::i#2 << (byte) 1
|
||
|
Identified duplicate assignment right side [48] (byte) main::$84 ← (byte) main::i#2 << (byte) 1
|
||
|
Identified duplicate assignment right side [54] (byte) main::$88 ← (byte) main::i#2 << (byte) 1
|
||
|
Identified duplicate assignment right side [61] (byte) main::$93 ← (byte) main::i#2 << (byte) 1
|
||
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||
|
Alias (byte) main::$61 = (byte~) main::$5 (byte) main::$65 (byte) main::$68 (byte) main::$81 (byte) main::$84 (byte) main::$88 (byte) main::$93
|
||
|
Alias (byte) main::$63 = (byte~) main::$11 (byte) main::$74 (byte) main::$77
|
||
|
Alias (byte) main::$72 = (byte~) main::$23
|
||
|
Successful SSA optimization Pass2AliasElimination
|
||
|
Added new block during phi lifting main::@3(between main::@1 and main::@1)
|
||
|
Adding NOP phi() at start of @begin
|
||
|
Adding NOP phi() at start of @1
|
||
|
Adding NOP phi() at start of @2
|
||
|
Adding NOP phi() at start of @end
|
||
|
Adding NOP phi() at start of main
|
||
|
CALL GRAPH
|
||
|
Calls in [] to main:2
|
||
|
|
||
|
Created 1 initial phi equivalence classes
|
||
|
Coalesced [55] main::i#3 ← main::i#1
|
||
|
Coalesced down to 1 phi equivalence classes
|
||
|
Culled Empty Block (label) @2
|
||
|
Culled Empty Block (label) main::@3
|
||
|
Adding NOP phi() at start of @begin
|
||
|
Adding NOP phi() at start of @1
|
||
|
Adding NOP phi() at start of @end
|
||
|
Adding NOP phi() at start of main
|
||
|
|
||
|
FINAL CONTROL FLOW GRAPH
|
||
|
@begin: scope:[] from
|
||
|
[0] phi()
|
||
|
to:@1
|
||
|
@1: scope:[] from @begin
|
||
|
[1] phi()
|
||
|
[2] call main
|
||
|
to:@end
|
||
|
@end: scope:[] from @1
|
||
|
[3] phi()
|
||
|
main: scope:[main] from @1
|
||
|
[4] phi()
|
||
|
to:main::@1
|
||
|
main::@1: scope:[main] from main main::@1
|
||
|
[5] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 )
|
||
|
[6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2
|
||
|
[7] (byte) main::$61 ← (byte) main::i#2 << (byte) 1
|
||
|
[8] *((const byte*) main::SCREEN#0+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte) main::$61
|
||
|
[9] (byte~) main::$8 ← (byte) main::$61 + (byte) main::i#2
|
||
|
[10] *((const byte*) main::SCREEN#0+(byte)(number) 2*(number) $28 + (byte) main::i#2) ← (byte~) main::$8
|
||
|
[11] (byte) main::$63 ← (byte) main::i#2 << (byte) 2
|
||
|
[12] *((const byte*) main::SCREEN#0+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte) main::$63
|
||
|
[13] (byte~) main::$14 ← (byte) main::$63 + (byte) main::i#2
|
||
|
[14] *((const byte*) main::SCREEN#0+(byte)(number) 4*(number) $28 + (byte) main::i#2) ← (byte~) main::$14
|
||
|
[15] (byte) main::$66 ← (byte) main::$61 + (byte) main::i#2
|
||
|
[16] (byte~) main::$17 ← (byte) main::$66 << (byte) 1
|
||
|
[17] *((const byte*) main::SCREEN#0+(byte)(number) 5*(number) $28 + (byte) main::i#2) ← (byte~) main::$17
|
||
|
[18] (byte) main::$69 ← (byte) main::$61 + (byte) main::i#2
|
||
|
[19] (byte) main::$70 ← (byte) main::$69 << (byte) 1
|
||
|
[20] (byte~) main::$20 ← (byte) main::$70 + (byte) main::i#2
|
||
|
[21] *((const byte*) main::SCREEN#0+(byte)(number) 6*(number) $28 + (byte) main::i#2) ← (byte~) main::$20
|
||
|
[22] (byte) main::$72 ← (byte) main::i#2 << (byte) 3
|
||
|
[23] *((const byte*) main::SCREEN#0+(word)(number) 7*(number) $28 + (byte) main::i#2) ← (byte) main::$72
|
||
|
[24] (byte~) main::$26 ← (byte) main::$72 + (byte) main::i#2
|
||
|
[25] *((const byte*) main::SCREEN#0+(word)(number) 8*(number) $28 + (byte) main::i#2) ← (byte~) main::$26
|
||
|
[26] (byte) main::$75 ← (byte) main::$63 + (byte) main::i#2
|
||
|
[27] (byte~) main::$29 ← (byte) main::$75 << (byte) 1
|
||
|
[28] *((const byte*) main::SCREEN#0+(word)(number) 9*(number) $28 + (byte) main::i#2) ← (byte~) main::$29
|
||
|
[29] (byte) main::$78 ← (byte) main::$63 + (byte) main::i#2
|
||
|
[30] (byte) main::$79 ← (byte) main::$78 << (byte) 1
|
||
|
[31] (byte~) main::$32 ← (byte) main::$79 + (byte) main::i#2
|
||
|
[32] *((const byte*) main::SCREEN#0+(word)(number) $a*(number) $28 + (byte) main::i#2) ← (byte~) main::$32
|
||
|
[33] (byte) main::$82 ← (byte) main::$61 + (byte) main::i#2
|
||
|
[34] (byte~) main::$35 ← (byte) main::$82 << (byte) 2
|
||
|
[35] *((const byte*) main::SCREEN#0+(word)(number) $b*(number) $28 + (byte) main::i#2) ← (byte~) main::$35
|
||
|
[36] (byte) main::$85 ← (byte) main::$61 + (byte) main::i#2
|
||
|
[37] (byte) main::$86 ← (byte) main::$85 << (byte) 2
|
||
|
[38] (byte~) main::$38 ← (byte) main::$86 + (byte) main::i#2
|
||
|
[39] *((const byte*) main::SCREEN#0+(word)(number) $c*(number) $28 + (byte) main::i#2) ← (byte~) main::$38
|
||
|
[40] (byte) main::$89 ← (byte) main::$61 + (byte) main::i#2
|
||
|
[41] (byte) main::$90 ← (byte) main::$89 << (byte) 1
|
||
|
[42] (byte) main::$91 ← (byte) main::$90 + (byte) main::i#2
|
||
|
[43] (byte~) main::$41 ← (byte) main::$91 << (byte) 1
|
||
|
[44] *((const byte*) main::SCREEN#0+(word)(number) $d*(number) $28 + (byte) main::i#2) ← (byte~) main::$41
|
||
|
[45] (byte) main::$94 ← (byte) main::$61 + (byte) main::i#2
|
||
|
[46] (byte) main::$95 ← (byte) main::$94 << (byte) 1
|
||
|
[47] (byte) main::$96 ← (byte) main::$95 + (byte) main::i#2
|
||
|
[48] (byte) main::$97 ← (byte) main::$96 << (byte) 1
|
||
|
[49] (byte~) main::$44 ← (byte) main::$97 + (byte) main::i#2
|
||
|
[50] *((const byte*) main::SCREEN#0+(word)(number) $e*(number) $28 + (byte) main::i#2) ← (byte~) main::$44
|
||
|
[51] (byte) main::i#1 ← ++ (byte) main::i#2
|
||
|
[52] if((byte) main::i#1!=(byte) $12) goto main::@1
|
||
|
to:main::@return
|
||
|
main::@return: scope:[main] from main::@1
|
||
|
[53] return
|
||
|
to:@return
|
||
|
|
||
|
|
||
|
VARIABLE REGISTER WEIGHTS
|
||
|
(void()) main()
|
||
|
(byte~) main::$14 22.0
|
||
|
(byte~) main::$17 22.0
|
||
|
(byte~) main::$20 22.0
|
||
|
(byte~) main::$26 22.0
|
||
|
(byte~) main::$29 22.0
|
||
|
(byte~) main::$32 22.0
|
||
|
(byte~) main::$35 22.0
|
||
|
(byte~) main::$38 22.0
|
||
|
(byte~) main::$41 22.0
|
||
|
(byte~) main::$44 22.0
|
||
|
(byte) main::$61 2.605263157894737
|
||
|
(byte) main::$63 3.055555555555556
|
||
|
(byte) main::$66 22.0
|
||
|
(byte) main::$69 22.0
|
||
|
(byte) main::$70 22.0
|
||
|
(byte) main::$72 16.5
|
||
|
(byte) main::$75 22.0
|
||
|
(byte) main::$78 22.0
|
||
|
(byte) main::$79 22.0
|
||
|
(byte~) main::$8 22.0
|
||
|
(byte) main::$82 22.0
|
||
|
(byte) main::$85 22.0
|
||
|
(byte) main::$86 22.0
|
||
|
(byte) main::$89 22.0
|
||
|
(byte) main::$90 22.0
|
||
|
(byte) main::$91 22.0
|
||
|
(byte) main::$94 22.0
|
||
|
(byte) main::$95 22.0
|
||
|
(byte) main::$96 22.0
|
||
|
(byte) main::$97 22.0
|
||
|
(byte*) main::SCREEN
|
||
|
(byte) main::i
|
||
|
(byte) main::i#1 16.5
|
||
|
(byte) main::i#2 9.086956521739129
|
||
|
|
||
|
Initial phi equivalence classes
|
||
|
[ main::i#2 main::i#1 ]
|
||
|
Added variable main::$61 to zero page equivalence class [ main::$61 ]
|
||
|
Added variable main::$8 to zero page equivalence class [ main::$8 ]
|
||
|
Added variable main::$63 to zero page equivalence class [ main::$63 ]
|
||
|
Added variable main::$14 to zero page equivalence class [ main::$14 ]
|
||
|
Added variable main::$66 to zero page equivalence class [ main::$66 ]
|
||
|
Added variable main::$17 to zero page equivalence class [ main::$17 ]
|
||
|
Added variable main::$69 to zero page equivalence class [ main::$69 ]
|
||
|
Added variable main::$70 to zero page equivalence class [ main::$70 ]
|
||
|
Added variable main::$20 to zero page equivalence class [ main::$20 ]
|
||
|
Added variable main::$72 to zero page equivalence class [ main::$72 ]
|
||
|
Added variable main::$26 to zero page equivalence class [ main::$26 ]
|
||
|
Added variable main::$75 to zero page equivalence class [ main::$75 ]
|
||
|
Added variable main::$29 to zero page equivalence class [ main::$29 ]
|
||
|
Added variable main::$78 to zero page equivalence class [ main::$78 ]
|
||
|
Added variable main::$79 to zero page equivalence class [ main::$79 ]
|
||
|
Added variable main::$32 to zero page equivalence class [ main::$32 ]
|
||
|
Added variable main::$82 to zero page equivalence class [ main::$82 ]
|
||
|
Added variable main::$35 to zero page equivalence class [ main::$35 ]
|
||
|
Added variable main::$85 to zero page equivalence class [ main::$85 ]
|
||
|
Added variable main::$86 to zero page equivalence class [ main::$86 ]
|
||
|
Added variable main::$38 to zero page equivalence class [ main::$38 ]
|
||
|
Added variable main::$89 to zero page equivalence class [ main::$89 ]
|
||
|
Added variable main::$90 to zero page equivalence class [ main::$90 ]
|
||
|
Added variable main::$91 to zero page equivalence class [ main::$91 ]
|
||
|
Added variable main::$41 to zero page equivalence class [ main::$41 ]
|
||
|
Added variable main::$94 to zero page equivalence class [ main::$94 ]
|
||
|
Added variable main::$95 to zero page equivalence class [ main::$95 ]
|
||
|
Added variable main::$96 to zero page equivalence class [ main::$96 ]
|
||
|
Added variable main::$97 to zero page equivalence class [ main::$97 ]
|
||
|
Added variable main::$44 to zero page equivalence class [ main::$44 ]
|
||
|
Complete equivalence classes
|
||
|
[ main::i#2 main::i#1 ]
|
||
|
[ main::$61 ]
|
||
|
[ main::$8 ]
|
||
|
[ main::$63 ]
|
||
|
[ main::$14 ]
|
||
|
[ main::$66 ]
|
||
|
[ main::$17 ]
|
||
|
[ main::$69 ]
|
||
|
[ main::$70 ]
|
||
|
[ main::$20 ]
|
||
|
[ main::$72 ]
|
||
|
[ main::$26 ]
|
||
|
[ main::$75 ]
|
||
|
[ main::$29 ]
|
||
|
[ main::$78 ]
|
||
|
[ main::$79 ]
|
||
|
[ main::$32 ]
|
||
|
[ main::$82 ]
|
||
|
[ main::$35 ]
|
||
|
[ main::$85 ]
|
||
|
[ main::$86 ]
|
||
|
[ main::$38 ]
|
||
|
[ main::$89 ]
|
||
|
[ main::$90 ]
|
||
|
[ main::$91 ]
|
||
|
[ main::$41 ]
|
||
|
[ main::$94 ]
|
||
|
[ main::$95 ]
|
||
|
[ main::$96 ]
|
||
|
[ main::$97 ]
|
||
|
[ main::$44 ]
|
||
|
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
||
|
Allocated zp ZP_BYTE:3 [ main::$61 ]
|
||
|
Allocated zp ZP_BYTE:4 [ main::$8 ]
|
||
|
Allocated zp ZP_BYTE:5 [ main::$63 ]
|
||
|
Allocated zp ZP_BYTE:6 [ main::$14 ]
|
||
|
Allocated zp ZP_BYTE:7 [ main::$66 ]
|
||
|
Allocated zp ZP_BYTE:8 [ main::$17 ]
|
||
|
Allocated zp ZP_BYTE:9 [ main::$69 ]
|
||
|
Allocated zp ZP_BYTE:10 [ main::$70 ]
|
||
|
Allocated zp ZP_BYTE:11 [ main::$20 ]
|
||
|
Allocated zp ZP_BYTE:12 [ main::$72 ]
|
||
|
Allocated zp ZP_BYTE:13 [ main::$26 ]
|
||
|
Allocated zp ZP_BYTE:14 [ main::$75 ]
|
||
|
Allocated zp ZP_BYTE:15 [ main::$29 ]
|
||
|
Allocated zp ZP_BYTE:16 [ main::$78 ]
|
||
|
Allocated zp ZP_BYTE:17 [ main::$79 ]
|
||
|
Allocated zp ZP_BYTE:18 [ main::$32 ]
|
||
|
Allocated zp ZP_BYTE:19 [ main::$82 ]
|
||
|
Allocated zp ZP_BYTE:20 [ main::$35 ]
|
||
|
Allocated zp ZP_BYTE:21 [ main::$85 ]
|
||
|
Allocated zp ZP_BYTE:22 [ main::$86 ]
|
||
|
Allocated zp ZP_BYTE:23 [ main::$38 ]
|
||
|
Allocated zp ZP_BYTE:24 [ main::$89 ]
|
||
|
Allocated zp ZP_BYTE:25 [ main::$90 ]
|
||
|
Allocated zp ZP_BYTE:26 [ main::$91 ]
|
||
|
Allocated zp ZP_BYTE:27 [ main::$41 ]
|
||
|
Allocated zp ZP_BYTE:28 [ main::$94 ]
|
||
|
Allocated zp ZP_BYTE:29 [ main::$95 ]
|
||
|
Allocated zp ZP_BYTE:30 [ main::$96 ]
|
||
|
Allocated zp ZP_BYTE:31 [ main::$97 ]
|
||
|
Allocated zp ZP_BYTE:32 [ main::$44 ]
|
||
|
|
||
|
INITIAL ASM
|
||
|
//SEG0 File Comments
|
||
|
// Check that multiplication by constants is converted to shift/add
|
||
|
//SEG1 Basic Upstart
|
||
|
.pc = $801 "Basic"
|
||
|
:BasicUpstart(bbegin)
|
||
|
.pc = $80d "Program"
|
||
|
//SEG2 Global Constants & labels
|
||
|
//SEG3 @begin
|
||
|
bbegin:
|
||
|
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||
|
b1_from_bbegin:
|
||
|
jmp b1
|
||
|
//SEG5 @1
|
||
|
b1:
|
||
|
//SEG6 [2] call main
|
||
|
//SEG7 [4] phi from @1 to main [phi:@1->main]
|
||
|
main_from_b1:
|
||
|
jsr main
|
||
|
//SEG8 [3] phi from @1 to @end [phi:@1->@end]
|
||
|
bend_from_b1:
|
||
|
jmp bend
|
||
|
//SEG9 @end
|
||
|
bend:
|
||
|
//SEG10 main
|
||
|
main: {
|
||
|
.label SCREEN = $400
|
||
|
.label _8 = 4
|
||
|
.label _14 = 6
|
||
|
.label _17 = 8
|
||
|
.label _20 = $b
|
||
|
.label _26 = $d
|
||
|
.label _29 = $f
|
||
|
.label _32 = $12
|
||
|
.label _35 = $14
|
||
|
.label _38 = $17
|
||
|
.label _41 = $1b
|
||
|
.label _44 = $20
|
||
|
.label i = 2
|
||
|
.label _61 = 3
|
||
|
.label _63 = 5
|
||
|
.label _66 = 7
|
||
|
.label _69 = 9
|
||
|
.label _70 = $a
|
||
|
.label _72 = $c
|
||
|
.label _75 = $e
|
||
|
.label _78 = $10
|
||
|
.label _79 = $11
|
||
|
.label _82 = $13
|
||
|
.label _85 = $15
|
||
|
.label _86 = $16
|
||
|
.label _89 = $18
|
||
|
.label _90 = $19
|
||
|
.label _91 = $1a
|
||
|
.label _94 = $1c
|
||
|
.label _95 = $1d
|
||
|
.label _96 = $1e
|
||
|
.label _97 = $1f
|
||
|
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||
|
b1_from_main:
|
||
|
//SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||
|
lda #0
|
||
|
sta i
|
||
|
jmp b1
|
||
|
//SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||
|
b1_from_b1:
|
||
|
//SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy
|
||
|
jmp b1
|
||
|
//SEG15 main::@1
|
||
|
b1:
|
||
|
//SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz1
|
||
|
ldy i
|
||
|
tya
|
||
|
sta SCREEN,y
|
||
|
//SEG17 [7] (byte) main::$61 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda i
|
||
|
asl
|
||
|
sta _61
|
||
|
//SEG18 [8] *((const byte*) main::SCREEN#0+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte) main::$61 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _61
|
||
|
ldy i
|
||
|
sta SCREEN+1*$28,y
|
||
|
//SEG19 [9] (byte~) main::$8 ← (byte) main::$61 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _61
|
||
|
clc
|
||
|
adc i
|
||
|
sta _8
|
||
|
//SEG20 [10] *((const byte*) main::SCREEN#0+(byte)(number) 2*(number) $28 + (byte) main::i#2) ← (byte~) main::$8 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _8
|
||
|
ldy i
|
||
|
sta SCREEN+2*$28,y
|
||
|
//SEG21 [11] (byte) main::$63 ← (byte) main::i#2 << (byte) 2 -- vbuz1=vbuz2_rol_2
|
||
|
lda i
|
||
|
asl
|
||
|
asl
|
||
|
sta _63
|
||
|
//SEG22 [12] *((const byte*) main::SCREEN#0+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte) main::$63 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _63
|
||
|
ldy i
|
||
|
sta SCREEN+3*$28,y
|
||
|
//SEG23 [13] (byte~) main::$14 ← (byte) main::$63 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _63
|
||
|
clc
|
||
|
adc i
|
||
|
sta _14
|
||
|
//SEG24 [14] *((const byte*) main::SCREEN#0+(byte)(number) 4*(number) $28 + (byte) main::i#2) ← (byte~) main::$14 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _14
|
||
|
ldy i
|
||
|
sta SCREEN+4*$28,y
|
||
|
//SEG25 [15] (byte) main::$66 ← (byte) main::$61 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _61
|
||
|
clc
|
||
|
adc i
|
||
|
sta _66
|
||
|
//SEG26 [16] (byte~) main::$17 ← (byte) main::$66 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _66
|
||
|
asl
|
||
|
sta _17
|
||
|
//SEG27 [17] *((const byte*) main::SCREEN#0+(byte)(number) 5*(number) $28 + (byte) main::i#2) ← (byte~) main::$17 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _17
|
||
|
ldy i
|
||
|
sta SCREEN+5*$28,y
|
||
|
//SEG28 [18] (byte) main::$69 ← (byte) main::$61 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _61
|
||
|
clc
|
||
|
adc i
|
||
|
sta _69
|
||
|
//SEG29 [19] (byte) main::$70 ← (byte) main::$69 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _69
|
||
|
asl
|
||
|
sta _70
|
||
|
//SEG30 [20] (byte~) main::$20 ← (byte) main::$70 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _70
|
||
|
clc
|
||
|
adc i
|
||
|
sta _20
|
||
|
//SEG31 [21] *((const byte*) main::SCREEN#0+(byte)(number) 6*(number) $28 + (byte) main::i#2) ← (byte~) main::$20 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _20
|
||
|
ldy i
|
||
|
sta SCREEN+6*$28,y
|
||
|
//SEG32 [22] (byte) main::$72 ← (byte) main::i#2 << (byte) 3 -- vbuz1=vbuz2_rol_3
|
||
|
lda i
|
||
|
asl
|
||
|
asl
|
||
|
asl
|
||
|
sta _72
|
||
|
//SEG33 [23] *((const byte*) main::SCREEN#0+(word)(number) 7*(number) $28 + (byte) main::i#2) ← (byte) main::$72 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _72
|
||
|
ldy i
|
||
|
sta SCREEN+7*$28,y
|
||
|
//SEG34 [24] (byte~) main::$26 ← (byte) main::$72 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _72
|
||
|
clc
|
||
|
adc i
|
||
|
sta _26
|
||
|
//SEG35 [25] *((const byte*) main::SCREEN#0+(word)(number) 8*(number) $28 + (byte) main::i#2) ← (byte~) main::$26 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _26
|
||
|
ldy i
|
||
|
sta SCREEN+8*$28,y
|
||
|
//SEG36 [26] (byte) main::$75 ← (byte) main::$63 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _63
|
||
|
clc
|
||
|
adc i
|
||
|
sta _75
|
||
|
//SEG37 [27] (byte~) main::$29 ← (byte) main::$75 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _75
|
||
|
asl
|
||
|
sta _29
|
||
|
//SEG38 [28] *((const byte*) main::SCREEN#0+(word)(number) 9*(number) $28 + (byte) main::i#2) ← (byte~) main::$29 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _29
|
||
|
ldy i
|
||
|
sta SCREEN+9*$28,y
|
||
|
//SEG39 [29] (byte) main::$78 ← (byte) main::$63 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _63
|
||
|
clc
|
||
|
adc i
|
||
|
sta _78
|
||
|
//SEG40 [30] (byte) main::$79 ← (byte) main::$78 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _78
|
||
|
asl
|
||
|
sta _79
|
||
|
//SEG41 [31] (byte~) main::$32 ← (byte) main::$79 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _79
|
||
|
clc
|
||
|
adc i
|
||
|
sta _32
|
||
|
//SEG42 [32] *((const byte*) main::SCREEN#0+(word)(number) $a*(number) $28 + (byte) main::i#2) ← (byte~) main::$32 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _32
|
||
|
ldy i
|
||
|
sta SCREEN+$a*$28,y
|
||
|
//SEG43 [33] (byte) main::$82 ← (byte) main::$61 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _61
|
||
|
clc
|
||
|
adc i
|
||
|
sta _82
|
||
|
//SEG44 [34] (byte~) main::$35 ← (byte) main::$82 << (byte) 2 -- vbuz1=vbuz2_rol_2
|
||
|
lda _82
|
||
|
asl
|
||
|
asl
|
||
|
sta _35
|
||
|
//SEG45 [35] *((const byte*) main::SCREEN#0+(word)(number) $b*(number) $28 + (byte) main::i#2) ← (byte~) main::$35 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _35
|
||
|
ldy i
|
||
|
sta SCREEN+$b*$28,y
|
||
|
//SEG46 [36] (byte) main::$85 ← (byte) main::$61 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _61
|
||
|
clc
|
||
|
adc i
|
||
|
sta _85
|
||
|
//SEG47 [37] (byte) main::$86 ← (byte) main::$85 << (byte) 2 -- vbuz1=vbuz2_rol_2
|
||
|
lda _85
|
||
|
asl
|
||
|
asl
|
||
|
sta _86
|
||
|
//SEG48 [38] (byte~) main::$38 ← (byte) main::$86 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _86
|
||
|
clc
|
||
|
adc i
|
||
|
sta _38
|
||
|
//SEG49 [39] *((const byte*) main::SCREEN#0+(word)(number) $c*(number) $28 + (byte) main::i#2) ← (byte~) main::$38 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _38
|
||
|
ldy i
|
||
|
sta SCREEN+$c*$28,y
|
||
|
//SEG50 [40] (byte) main::$89 ← (byte) main::$61 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _61
|
||
|
clc
|
||
|
adc i
|
||
|
sta _89
|
||
|
//SEG51 [41] (byte) main::$90 ← (byte) main::$89 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _89
|
||
|
asl
|
||
|
sta _90
|
||
|
//SEG52 [42] (byte) main::$91 ← (byte) main::$90 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _90
|
||
|
clc
|
||
|
adc i
|
||
|
sta _91
|
||
|
//SEG53 [43] (byte~) main::$41 ← (byte) main::$91 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _91
|
||
|
asl
|
||
|
sta _41
|
||
|
//SEG54 [44] *((const byte*) main::SCREEN#0+(word)(number) $d*(number) $28 + (byte) main::i#2) ← (byte~) main::$41 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _41
|
||
|
ldy i
|
||
|
sta SCREEN+$d*$28,y
|
||
|
//SEG55 [45] (byte) main::$94 ← (byte) main::$61 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _61
|
||
|
clc
|
||
|
adc i
|
||
|
sta _94
|
||
|
//SEG56 [46] (byte) main::$95 ← (byte) main::$94 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _94
|
||
|
asl
|
||
|
sta _95
|
||
|
//SEG57 [47] (byte) main::$96 ← (byte) main::$95 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _95
|
||
|
clc
|
||
|
adc i
|
||
|
sta _96
|
||
|
//SEG58 [48] (byte) main::$97 ← (byte) main::$96 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||
|
lda _96
|
||
|
asl
|
||
|
sta _97
|
||
|
//SEG59 [49] (byte~) main::$44 ← (byte) main::$97 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||
|
lda _97
|
||
|
clc
|
||
|
adc i
|
||
|
sta _44
|
||
|
//SEG60 [50] *((const byte*) main::SCREEN#0+(word)(number) $e*(number) $28 + (byte) main::i#2) ← (byte~) main::$44 -- pbuc1_derefidx_vbuz1=vbuz2
|
||
|
lda _44
|
||
|
ldy i
|
||
|
sta SCREEN+$e*$28,y
|
||
|
//SEG61 [51] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||
|
inc i
|
||
|
//SEG62 [52] if((byte) main::i#1!=(byte) $12) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||
|
lda #$12
|
||
|
cmp i
|
||
|
bne b1_from_b1
|
||
|
jmp breturn
|
||
|
//SEG63 main::@return
|
||
|
breturn:
|
||
|
//SEG64 [53] return
|
||
|
rts
|
||
|
}
|
||
|
|
||
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
||
|
Statement [7] (byte) main::$61 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$61 ] ( main:2 [ main::i#2 main::$61 ] ) always clobbers reg byte a
|
||
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
||
|
Statement [9] (byte~) main::$8 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$8 ] ( main:2 [ main::i#2 main::$61 main::$8 ] ) always clobbers reg byte a
|
||
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::$61 ]
|
||
|
Statement [11] (byte) main::$63 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$61 main::$63 ] ( main:2 [ main::i#2 main::$61 main::$63 ] ) always clobbers reg byte a
|
||
|
Statement [13] (byte~) main::$14 ← (byte) main::$63 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$14 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$14 ] ) always clobbers reg byte a
|
||
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::$63 ]
|
||
|
Statement [15] (byte) main::$66 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$66 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$66 ] ) always clobbers reg byte a
|
||
|
Statement [16] (byte~) main::$17 ← (byte) main::$66 << (byte) 1 [ main::i#2 main::$61 main::$63 main::$17 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$17 ] ) always clobbers reg byte a
|
||
|
Statement [18] (byte) main::$69 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$69 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$69 ] ) always clobbers reg byte a
|
||
|
Statement [19] (byte) main::$70 ← (byte) main::$69 << (byte) 1 [ main::i#2 main::$61 main::$63 main::$70 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$70 ] ) always clobbers reg byte a
|
||
|
Statement [20] (byte~) main::$20 ← (byte) main::$70 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$20 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$20 ] ) always clobbers reg byte a
|
||
|
Statement [22] (byte) main::$72 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$61 main::$63 main::$72 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$72 ] ) always clobbers reg byte a
|
||
|
Statement [24] (byte~) main::$26 ← (byte) main::$72 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$26 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$26 ] ) always clobbers reg byte a
|
||
|
Statement [26] (byte) main::$75 ← (byte) main::$63 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$75 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$75 ] ) always clobbers reg byte a
|
||
|
Statement [27] (byte~) main::$29 ← (byte) main::$75 << (byte) 1 [ main::i#2 main::$61 main::$63 main::$29 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$29 ] ) always clobbers reg byte a
|
||
|
Statement [29] (byte) main::$78 ← (byte) main::$63 + (byte) main::i#2 [ main::i#2 main::$61 main::$78 ] ( main:2 [ main::i#2 main::$61 main::$78 ] ) always clobbers reg byte a
|
||
|
Statement [30] (byte) main::$79 ← (byte) main::$78 << (byte) 1 [ main::i#2 main::$61 main::$79 ] ( main:2 [ main::i#2 main::$61 main::$79 ] ) always clobbers reg byte a
|
||
|
Statement [31] (byte~) main::$32 ← (byte) main::$79 + (byte) main::i#2 [ main::i#2 main::$61 main::$32 ] ( main:2 [ main::i#2 main::$61 main::$32 ] ) always clobbers reg byte a
|
||
|
Statement [33] (byte) main::$82 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$82 ] ( main:2 [ main::i#2 main::$61 main::$82 ] ) always clobbers reg byte a
|
||
|
Statement [34] (byte~) main::$35 ← (byte) main::$82 << (byte) 2 [ main::i#2 main::$61 main::$35 ] ( main:2 [ main::i#2 main::$61 main::$35 ] ) always clobbers reg byte a
|
||
|
Statement [36] (byte) main::$85 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$85 ] ( main:2 [ main::i#2 main::$61 main::$85 ] ) always clobbers reg byte a
|
||
|
Statement [37] (byte) main::$86 ← (byte) main::$85 << (byte) 2 [ main::i#2 main::$61 main::$86 ] ( main:2 [ main::i#2 main::$61 main::$86 ] ) always clobbers reg byte a
|
||
|
Statement [38] (byte~) main::$38 ← (byte) main::$86 + (byte) main::i#2 [ main::i#2 main::$61 main::$38 ] ( main:2 [ main::i#2 main::$61 main::$38 ] ) always clobbers reg byte a
|
||
|
Statement [40] (byte) main::$89 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$89 ] ( main:2 [ main::i#2 main::$61 main::$89 ] ) always clobbers reg byte a
|
||
|
Statement [41] (byte) main::$90 ← (byte) main::$89 << (byte) 1 [ main::i#2 main::$61 main::$90 ] ( main:2 [ main::i#2 main::$61 main::$90 ] ) always clobbers reg byte a
|
||
|
Statement [42] (byte) main::$91 ← (byte) main::$90 + (byte) main::i#2 [ main::i#2 main::$61 main::$91 ] ( main:2 [ main::i#2 main::$61 main::$91 ] ) always clobbers reg byte a
|
||
|
Statement [43] (byte~) main::$41 ← (byte) main::$91 << (byte) 1 [ main::i#2 main::$61 main::$41 ] ( main:2 [ main::i#2 main::$61 main::$41 ] ) always clobbers reg byte a
|
||
|
Statement [45] (byte) main::$94 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$94 ] ( main:2 [ main::i#2 main::$94 ] ) always clobbers reg byte a
|
||
|
Statement [46] (byte) main::$95 ← (byte) main::$94 << (byte) 1 [ main::i#2 main::$95 ] ( main:2 [ main::i#2 main::$95 ] ) always clobbers reg byte a
|
||
|
Statement [47] (byte) main::$96 ← (byte) main::$95 + (byte) main::i#2 [ main::i#2 main::$96 ] ( main:2 [ main::i#2 main::$96 ] ) always clobbers reg byte a
|
||
|
Statement [48] (byte) main::$97 ← (byte) main::$96 << (byte) 1 [ main::i#2 main::$97 ] ( main:2 [ main::i#2 main::$97 ] ) always clobbers reg byte a
|
||
|
Statement [49] (byte~) main::$44 ← (byte) main::$97 + (byte) main::i#2 [ main::i#2 main::$44 ] ( main:2 [ main::i#2 main::$44 ] ) always clobbers reg byte a
|
||
|
Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||
|
Statement [7] (byte) main::$61 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$61 ] ( main:2 [ main::i#2 main::$61 ] ) always clobbers reg byte a
|
||
|
Statement [8] *((const byte*) main::SCREEN#0+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte) main::$61 [ main::i#2 main::$61 ] ( main:2 [ main::i#2 main::$61 ] ) always clobbers reg byte a
|
||
|
Statement [9] (byte~) main::$8 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$8 ] ( main:2 [ main::i#2 main::$61 main::$8 ] ) always clobbers reg byte a
|
||
|
Statement [11] (byte) main::$63 ← (byte) main::i#2 << (byte) 2 [ main::i#2 main::$61 main::$63 ] ( main:2 [ main::i#2 main::$61 main::$63 ] ) always clobbers reg byte a
|
||
|
Statement [12] *((const byte*) main::SCREEN#0+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte) main::$63 [ main::i#2 main::$61 main::$63 ] ( main:2 [ main::i#2 main::$61 main::$63 ] ) always clobbers reg byte a
|
||
|
Statement [13] (byte~) main::$14 ← (byte) main::$63 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$14 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$14 ] ) always clobbers reg byte a
|
||
|
Statement [15] (byte) main::$66 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$66 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$66 ] ) always clobbers reg byte a
|
||
|
Statement [16] (byte~) main::$17 ← (byte) main::$66 << (byte) 1 [ main::i#2 main::$61 main::$63 main::$17 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$17 ] ) always clobbers reg byte a
|
||
|
Statement [18] (byte) main::$69 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$69 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$69 ] ) always clobbers reg byte a
|
||
|
Statement [19] (byte) main::$70 ← (byte) main::$69 << (byte) 1 [ main::i#2 main::$61 main::$63 main::$70 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$70 ] ) always clobbers reg byte a
|
||
|
Statement [20] (byte~) main::$20 ← (byte) main::$70 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$20 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$20 ] ) always clobbers reg byte a
|
||
|
Statement [22] (byte) main::$72 ← (byte) main::i#2 << (byte) 3 [ main::i#2 main::$61 main::$63 main::$72 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$72 ] ) always clobbers reg byte a
|
||
|
Statement [24] (byte~) main::$26 ← (byte) main::$72 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$26 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$26 ] ) always clobbers reg byte a
|
||
|
Statement [26] (byte) main::$75 ← (byte) main::$63 + (byte) main::i#2 [ main::i#2 main::$61 main::$63 main::$75 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$75 ] ) always clobbers reg byte a
|
||
|
Statement [27] (byte~) main::$29 ← (byte) main::$75 << (byte) 1 [ main::i#2 main::$61 main::$63 main::$29 ] ( main:2 [ main::i#2 main::$61 main::$63 main::$29 ] ) always clobbers reg byte a
|
||
|
Statement [29] (byte) main::$78 ← (byte) main::$63 + (byte) main::i#2 [ main::i#2 main::$61 main::$78 ] ( main:2 [ main::i#2 main::$61 main::$78 ] ) always clobbers reg byte a
|
||
|
Statement [30] (byte) main::$79 ← (byte) main::$78 << (byte) 1 [ main::i#2 main::$61 main::$79 ] ( main:2 [ main::i#2 main::$61 main::$79 ] ) always clobbers reg byte a
|
||
|
Statement [31] (byte~) main::$32 ← (byte) main::$79 + (byte) main::i#2 [ main::i#2 main::$61 main::$32 ] ( main:2 [ main::i#2 main::$61 main::$32 ] ) always clobbers reg byte a
|
||
|
Statement [33] (byte) main::$82 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$82 ] ( main:2 [ main::i#2 main::$61 main::$82 ] ) always clobbers reg byte a
|
||
|
Statement [34] (byte~) main::$35 ← (byte) main::$82 << (byte) 2 [ main::i#2 main::$61 main::$35 ] ( main:2 [ main::i#2 main::$61 main::$35 ] ) always clobbers reg byte a
|
||
|
Statement [36] (byte) main::$85 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$85 ] ( main:2 [ main::i#2 main::$61 main::$85 ] ) always clobbers reg byte a
|
||
|
Statement [37] (byte) main::$86 ← (byte) main::$85 << (byte) 2 [ main::i#2 main::$61 main::$86 ] ( main:2 [ main::i#2 main::$61 main::$86 ] ) always clobbers reg byte a
|
||
|
Statement [38] (byte~) main::$38 ← (byte) main::$86 + (byte) main::i#2 [ main::i#2 main::$61 main::$38 ] ( main:2 [ main::i#2 main::$61 main::$38 ] ) always clobbers reg byte a
|
||
|
Statement [40] (byte) main::$89 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$61 main::$89 ] ( main:2 [ main::i#2 main::$61 main::$89 ] ) always clobbers reg byte a
|
||
|
Statement [41] (byte) main::$90 ← (byte) main::$89 << (byte) 1 [ main::i#2 main::$61 main::$90 ] ( main:2 [ main::i#2 main::$61 main::$90 ] ) always clobbers reg byte a
|
||
|
Statement [42] (byte) main::$91 ← (byte) main::$90 + (byte) main::i#2 [ main::i#2 main::$61 main::$91 ] ( main:2 [ main::i#2 main::$61 main::$91 ] ) always clobbers reg byte a
|
||
|
Statement [43] (byte~) main::$41 ← (byte) main::$91 << (byte) 1 [ main::i#2 main::$61 main::$41 ] ( main:2 [ main::i#2 main::$61 main::$41 ] ) always clobbers reg byte a
|
||
|
Statement [45] (byte) main::$94 ← (byte) main::$61 + (byte) main::i#2 [ main::i#2 main::$94 ] ( main:2 [ main::i#2 main::$94 ] ) always clobbers reg byte a
|
||
|
Statement [46] (byte) main::$95 ← (byte) main::$94 << (byte) 1 [ main::i#2 main::$95 ] ( main:2 [ main::i#2 main::$95 ] ) always clobbers reg byte a
|
||
|
Statement [47] (byte) main::$96 ← (byte) main::$95 + (byte) main::i#2 [ main::i#2 main::$96 ] ( main:2 [ main::i#2 main::$96 ] ) always clobbers reg byte a
|
||
|
Statement [48] (byte) main::$97 ← (byte) main::$96 << (byte) 1 [ main::i#2 main::$97 ] ( main:2 [ main::i#2 main::$97 ] ) always clobbers reg byte a
|
||
|
Statement [49] (byte~) main::$44 ← (byte) main::$97 + (byte) main::i#2 [ main::i#2 main::$44 ] ( main:2 [ main::i#2 main::$44 ] ) always clobbers reg byte a
|
||
|
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:3 [ main::$61 ] : zp ZP_BYTE:3 , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:4 [ main::$8 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:5 [ main::$63 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:6 [ main::$14 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:7 [ main::$66 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:8 [ main::$17 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:9 [ main::$69 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:10 [ main::$70 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:11 [ main::$20 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:12 [ main::$72 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:13 [ main::$26 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:14 [ main::$75 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:15 [ main::$29 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:16 [ main::$78 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:17 [ main::$79 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:18 [ main::$32 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:19 [ main::$82 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:20 [ main::$35 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:21 [ main::$85 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:22 [ main::$86 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:23 [ main::$38 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:24 [ main::$89 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:25 [ main::$90 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:26 [ main::$91 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:27 [ main::$41 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:28 [ main::$94 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:29 [ main::$95 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:30 [ main::$96 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:31 [ main::$97 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y ,
|
||
|
Potential registers zp ZP_BYTE:32 [ main::$44 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y ,
|
||
|
|
||
|
REGISTER UPLIFT SCOPES
|
||
|
Uplift Scope [main] 25.59: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:4 [ main::$8 ] 22: zp ZP_BYTE:6 [ main::$14 ] 22: zp ZP_BYTE:7 [ main::$66 ] 22: zp ZP_BYTE:8 [ main::$17 ] 22: zp ZP_BYTE:9 [ main::$69 ] 22: zp ZP_BYTE:10 [ main::$70 ] 22: zp ZP_BYTE:11 [ main::$20 ] 22: zp ZP_BYTE:13 [ main::$26 ] 22: zp ZP_BYTE:14 [ main::$75 ] 22: zp ZP_BYTE:15 [ main::$29 ] 22: zp ZP_BYTE:16 [ main::$78 ] 22: zp ZP_BYTE:17 [ main::$79 ] 22: zp ZP_BYTE:18 [ main::$32 ] 22: zp ZP_BYTE:19 [ main::$82 ] 22: zp ZP_BYTE:20 [ main::$35 ] 22: zp ZP_BYTE:21 [ main::$85 ] 22: zp ZP_BYTE:22 [ main::$86 ] 22: zp ZP_BYTE:23 [ main::$38 ] 22: zp ZP_BYTE:24 [ main::$89 ] 22: zp ZP_BYTE:25 [ main::$90 ] 22: zp ZP_BYTE:26 [ main::$91 ] 22: zp ZP_BYTE:27 [ main::$41 ] 22: zp ZP_BYTE:28 [ main::$94 ] 22: zp ZP_BYTE:29 [ main::$95 ] 22: zp ZP_BYTE:30 [ main::$96 ] 22: zp ZP_BYTE:31 [ main::$97 ] 22: zp ZP_BYTE:32 [ main::$44 ] 16.5: zp ZP_BYTE:12 [ main::$72 ] 3.06: zp ZP_BYTE:5 [ main::$63 ] 2.61: zp ZP_BYTE:3 [ main::$61 ]
|
||
|
Uplift Scope []
|
||
|
|
||
|
Uplifting [] best 4933 combination
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
||
|
Uplifting [main] best 4193 combination reg byte x [ main::i#2 main::i#1 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::$8 ]
|
||
|
Uplifting [main] best 4133 combination reg byte a [ main::$8 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::$14 ]
|
||
|
Uplifting [main] best 4073 combination reg byte a [ main::$14 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ main::$66 ]
|
||
|
Uplifting [main] best 4013 combination reg byte a [ main::$66 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ main::$17 ]
|
||
|
Uplifting [main] best 3953 combination reg byte a [ main::$17 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ main::$69 ]
|
||
|
Uplifting [main] best 3893 combination reg byte a [ main::$69 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ main::$70 ]
|
||
|
Uplifting [main] best 3873 combination reg byte a [ main::$70 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:11 [ main::$20 ]
|
||
|
Uplifting [main] best 3813 combination reg byte a [ main::$20 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ main::$26 ]
|
||
|
Uplifting [main] best 3753 combination reg byte a [ main::$26 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ main::$75 ]
|
||
|
Uplifting [main] best 3693 combination reg byte a [ main::$75 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ main::$29 ]
|
||
|
Uplifting [main] best 3633 combination reg byte a [ main::$29 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ main::$78 ]
|
||
|
Uplifting [main] best 3573 combination reg byte a [ main::$78 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:17 [ main::$79 ]
|
||
|
Uplifting [main] best 3553 combination reg byte a [ main::$79 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ main::$32 ]
|
||
|
Uplifting [main] best 3493 combination reg byte a [ main::$32 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:19 [ main::$82 ]
|
||
|
Uplifting [main] best 3433 combination reg byte a [ main::$82 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ main::$35 ]
|
||
|
Uplifting [main] best 3373 combination reg byte a [ main::$35 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ main::$85 ]
|
||
|
Uplifting [main] best 3313 combination reg byte a [ main::$85 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:22 [ main::$86 ]
|
||
|
Uplifting [main] best 3293 combination reg byte a [ main::$86 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ main::$38 ]
|
||
|
Uplifting [main] best 3233 combination reg byte a [ main::$38 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ main::$89 ]
|
||
|
Uplifting [main] best 3173 combination reg byte a [ main::$89 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ main::$90 ]
|
||
|
Uplifting [main] best 3153 combination reg byte a [ main::$90 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:26 [ main::$91 ]
|
||
|
Uplifting [main] best 3093 combination reg byte a [ main::$91 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ main::$41 ]
|
||
|
Uplifting [main] best 3033 combination reg byte a [ main::$41 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:28 [ main::$94 ]
|
||
|
Uplifting [main] best 2973 combination reg byte a [ main::$94 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ main::$95 ]
|
||
|
Uplifting [main] best 2953 combination reg byte a [ main::$95 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ main::$96 ]
|
||
|
Uplifting [main] best 2893 combination reg byte a [ main::$96 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ main::$97 ]
|
||
|
Uplifting [main] best 2873 combination reg byte a [ main::$97 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ main::$44 ]
|
||
|
Uplifting [main] best 2813 combination reg byte a [ main::$44 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ main::$72 ]
|
||
|
Uplifting [main] best 2763 combination reg byte a [ main::$72 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::$63 ]
|
||
|
Uplifting [main] best 2763 combination zp ZP_BYTE:5 [ main::$63 ]
|
||
|
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::$61 ]
|
||
|
Uplifting [main] best 2763 combination zp ZP_BYTE:3 [ main::$61 ]
|
||
|
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::$61 ]
|
||
|
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:3 [ main::$63 ]
|
||
|
|
||
|
ASSEMBLER BEFORE OPTIMIZATION
|
||
|
//SEG0 File Comments
|
||
|
// Check that multiplication by constants is converted to shift/add
|
||
|
//SEG1 Basic Upstart
|
||
|
.pc = $801 "Basic"
|
||
|
:BasicUpstart(bbegin)
|
||
|
.pc = $80d "Program"
|
||
|
//SEG2 Global Constants & labels
|
||
|
//SEG3 @begin
|
||
|
bbegin:
|
||
|
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||
|
b1_from_bbegin:
|
||
|
jmp b1
|
||
|
//SEG5 @1
|
||
|
b1:
|
||
|
//SEG6 [2] call main
|
||
|
//SEG7 [4] phi from @1 to main [phi:@1->main]
|
||
|
main_from_b1:
|
||
|
jsr main
|
||
|
//SEG8 [3] phi from @1 to @end [phi:@1->@end]
|
||
|
bend_from_b1:
|
||
|
jmp bend
|
||
|
//SEG9 @end
|
||
|
bend:
|
||
|
//SEG10 main
|
||
|
main: {
|
||
|
.label SCREEN = $400
|
||
|
.label _61 = 2
|
||
|
.label _63 = 3
|
||
|
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||
|
b1_from_main:
|
||
|
//SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||
|
ldx #0
|
||
|
jmp b1
|
||
|
//SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||
|
b1_from_b1:
|
||
|
//SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy
|
||
|
jmp b1
|
||
|
//SEG15 main::@1
|
||
|
b1:
|
||
|
//SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
|
||
|
txa
|
||
|
sta SCREEN,x
|
||
|
//SEG17 [7] (byte) main::$61 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuxx_rol_1
|
||
|
txa
|
||
|
asl
|
||
|
sta _61
|
||
|
//SEG18 [8] *((const byte*) main::SCREEN#0+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte) main::$61 -- pbuc1_derefidx_vbuxx=vbuz1
|
||
|
lda _61
|
||
|
sta SCREEN+1*$28,x
|
||
|
//SEG19 [9] (byte~) main::$8 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG20 [10] *((const byte*) main::SCREEN#0+(byte)(number) 2*(number) $28 + (byte) main::i#2) ← (byte~) main::$8 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+2*$28,x
|
||
|
//SEG21 [11] (byte) main::$63 ← (byte) main::i#2 << (byte) 2 -- vbuz1=vbuxx_rol_2
|
||
|
txa
|
||
|
asl
|
||
|
asl
|
||
|
sta _63
|
||
|
//SEG22 [12] *((const byte*) main::SCREEN#0+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte) main::$63 -- pbuc1_derefidx_vbuxx=vbuz1
|
||
|
lda _63
|
||
|
sta SCREEN+3*$28,x
|
||
|
//SEG23 [13] (byte~) main::$14 ← (byte) main::$63 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _63
|
||
|
//SEG24 [14] *((const byte*) main::SCREEN#0+(byte)(number) 4*(number) $28 + (byte) main::i#2) ← (byte~) main::$14 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+4*$28,x
|
||
|
//SEG25 [15] (byte) main::$66 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG26 [16] (byte~) main::$17 ← (byte) main::$66 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG27 [17] *((const byte*) main::SCREEN#0+(byte)(number) 5*(number) $28 + (byte) main::i#2) ← (byte~) main::$17 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+5*$28,x
|
||
|
//SEG28 [18] (byte) main::$69 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG29 [19] (byte) main::$70 ← (byte) main::$69 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG30 [20] (byte~) main::$20 ← (byte) main::$70 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG31 [21] *((const byte*) main::SCREEN#0+(byte)(number) 6*(number) $28 + (byte) main::i#2) ← (byte~) main::$20 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+6*$28,x
|
||
|
//SEG32 [22] (byte) main::$72 ← (byte) main::i#2 << (byte) 3 -- vbuaa=vbuxx_rol_3
|
||
|
txa
|
||
|
asl
|
||
|
asl
|
||
|
asl
|
||
|
//SEG33 [23] *((const byte*) main::SCREEN#0+(word)(number) 7*(number) $28 + (byte) main::i#2) ← (byte) main::$72 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+7*$28,x
|
||
|
//SEG34 [24] (byte~) main::$26 ← (byte) main::$72 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG35 [25] *((const byte*) main::SCREEN#0+(word)(number) 8*(number) $28 + (byte) main::i#2) ← (byte~) main::$26 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+8*$28,x
|
||
|
//SEG36 [26] (byte) main::$75 ← (byte) main::$63 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _63
|
||
|
//SEG37 [27] (byte~) main::$29 ← (byte) main::$75 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG38 [28] *((const byte*) main::SCREEN#0+(word)(number) 9*(number) $28 + (byte) main::i#2) ← (byte~) main::$29 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+9*$28,x
|
||
|
//SEG39 [29] (byte) main::$78 ← (byte) main::$63 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _63
|
||
|
//SEG40 [30] (byte) main::$79 ← (byte) main::$78 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG41 [31] (byte~) main::$32 ← (byte) main::$79 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG42 [32] *((const byte*) main::SCREEN#0+(word)(number) $a*(number) $28 + (byte) main::i#2) ← (byte~) main::$32 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$a*$28,x
|
||
|
//SEG43 [33] (byte) main::$82 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG44 [34] (byte~) main::$35 ← (byte) main::$82 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
||
|
asl
|
||
|
asl
|
||
|
//SEG45 [35] *((const byte*) main::SCREEN#0+(word)(number) $b*(number) $28 + (byte) main::i#2) ← (byte~) main::$35 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$b*$28,x
|
||
|
//SEG46 [36] (byte) main::$85 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG47 [37] (byte) main::$86 ← (byte) main::$85 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
||
|
asl
|
||
|
asl
|
||
|
//SEG48 [38] (byte~) main::$38 ← (byte) main::$86 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG49 [39] *((const byte*) main::SCREEN#0+(word)(number) $c*(number) $28 + (byte) main::i#2) ← (byte~) main::$38 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$c*$28,x
|
||
|
//SEG50 [40] (byte) main::$89 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG51 [41] (byte) main::$90 ← (byte) main::$89 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG52 [42] (byte) main::$91 ← (byte) main::$90 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG53 [43] (byte~) main::$41 ← (byte) main::$91 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG54 [44] *((const byte*) main::SCREEN#0+(word)(number) $d*(number) $28 + (byte) main::i#2) ← (byte~) main::$41 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$d*$28,x
|
||
|
//SEG55 [45] (byte) main::$94 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG56 [46] (byte) main::$95 ← (byte) main::$94 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG57 [47] (byte) main::$96 ← (byte) main::$95 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG58 [48] (byte) main::$97 ← (byte) main::$96 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG59 [49] (byte~) main::$44 ← (byte) main::$97 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG60 [50] *((const byte*) main::SCREEN#0+(word)(number) $e*(number) $28 + (byte) main::i#2) ← (byte~) main::$44 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$e*$28,x
|
||
|
//SEG61 [51] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||
|
inx
|
||
|
//SEG62 [52] if((byte) main::i#1!=(byte) $12) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
||
|
cpx #$12
|
||
|
bne b1_from_b1
|
||
|
jmp breturn
|
||
|
//SEG63 main::@return
|
||
|
breturn:
|
||
|
//SEG64 [53] return
|
||
|
rts
|
||
|
}
|
||
|
|
||
|
ASSEMBLER OPTIMIZATIONS
|
||
|
Removing instruction jmp b1
|
||
|
Removing instruction jmp bend
|
||
|
Removing instruction jmp b1
|
||
|
Removing instruction jmp breturn
|
||
|
Succesful ASM optimization Pass5NextJumpElimination
|
||
|
Removing instruction lda _61
|
||
|
Removing instruction lda _63
|
||
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||
|
Replacing label b1_from_b1 with b1
|
||
|
Removing instruction b1_from_bbegin:
|
||
|
Removing instruction b1:
|
||
|
Removing instruction main_from_b1:
|
||
|
Removing instruction bend_from_b1:
|
||
|
Removing instruction b1_from_b1:
|
||
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
||
|
Removing instruction bend:
|
||
|
Removing instruction b1_from_main:
|
||
|
Removing instruction breturn:
|
||
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
||
|
Updating BasicUpstart to call main directly
|
||
|
Removing instruction jsr main
|
||
|
Succesful ASM optimization Pass5SkipBegin
|
||
|
Removing instruction jmp b1
|
||
|
Succesful ASM optimization Pass5NextJumpElimination
|
||
|
Removing instruction bbegin:
|
||
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
||
|
Fixing long branch [102] bne b1 to beq
|
||
|
|
||
|
FINAL SYMBOL TABLE
|
||
|
(label) @1
|
||
|
(label) @begin
|
||
|
(label) @end
|
||
|
(void()) main()
|
||
|
(byte~) main::$14 reg byte a 22.0
|
||
|
(byte~) main::$17 reg byte a 22.0
|
||
|
(byte~) main::$20 reg byte a 22.0
|
||
|
(byte~) main::$26 reg byte a 22.0
|
||
|
(byte~) main::$29 reg byte a 22.0
|
||
|
(byte~) main::$32 reg byte a 22.0
|
||
|
(byte~) main::$35 reg byte a 22.0
|
||
|
(byte~) main::$38 reg byte a 22.0
|
||
|
(byte~) main::$41 reg byte a 22.0
|
||
|
(byte~) main::$44 reg byte a 22.0
|
||
|
(byte) main::$61 $61 zp ZP_BYTE:2 2.605263157894737
|
||
|
(byte) main::$63 $63 zp ZP_BYTE:3 3.055555555555556
|
||
|
(byte) main::$66 reg byte a 22.0
|
||
|
(byte) main::$69 reg byte a 22.0
|
||
|
(byte) main::$70 reg byte a 22.0
|
||
|
(byte) main::$72 reg byte a 16.5
|
||
|
(byte) main::$75 reg byte a 22.0
|
||
|
(byte) main::$78 reg byte a 22.0
|
||
|
(byte) main::$79 reg byte a 22.0
|
||
|
(byte~) main::$8 reg byte a 22.0
|
||
|
(byte) main::$82 reg byte a 22.0
|
||
|
(byte) main::$85 reg byte a 22.0
|
||
|
(byte) main::$86 reg byte a 22.0
|
||
|
(byte) main::$89 reg byte a 22.0
|
||
|
(byte) main::$90 reg byte a 22.0
|
||
|
(byte) main::$91 reg byte a 22.0
|
||
|
(byte) main::$94 reg byte a 22.0
|
||
|
(byte) main::$95 reg byte a 22.0
|
||
|
(byte) main::$96 reg byte a 22.0
|
||
|
(byte) main::$97 reg byte a 22.0
|
||
|
(label) main::@1
|
||
|
(label) main::@return
|
||
|
(byte*) main::SCREEN
|
||
|
(const byte*) main::SCREEN#0 SCREEN = (byte*) 1024
|
||
|
(byte) main::i
|
||
|
(byte) main::i#1 reg byte x 16.5
|
||
|
(byte) main::i#2 reg byte x 9.086956521739129
|
||
|
|
||
|
reg byte x [ main::i#2 main::i#1 ]
|
||
|
zp ZP_BYTE:2 [ main::$61 ]
|
||
|
reg byte a [ main::$8 ]
|
||
|
zp ZP_BYTE:3 [ main::$63 ]
|
||
|
reg byte a [ main::$14 ]
|
||
|
reg byte a [ main::$66 ]
|
||
|
reg byte a [ main::$17 ]
|
||
|
reg byte a [ main::$69 ]
|
||
|
reg byte a [ main::$70 ]
|
||
|
reg byte a [ main::$20 ]
|
||
|
reg byte a [ main::$72 ]
|
||
|
reg byte a [ main::$26 ]
|
||
|
reg byte a [ main::$75 ]
|
||
|
reg byte a [ main::$29 ]
|
||
|
reg byte a [ main::$78 ]
|
||
|
reg byte a [ main::$79 ]
|
||
|
reg byte a [ main::$32 ]
|
||
|
reg byte a [ main::$82 ]
|
||
|
reg byte a [ main::$35 ]
|
||
|
reg byte a [ main::$85 ]
|
||
|
reg byte a [ main::$86 ]
|
||
|
reg byte a [ main::$38 ]
|
||
|
reg byte a [ main::$89 ]
|
||
|
reg byte a [ main::$90 ]
|
||
|
reg byte a [ main::$91 ]
|
||
|
reg byte a [ main::$41 ]
|
||
|
reg byte a [ main::$94 ]
|
||
|
reg byte a [ main::$95 ]
|
||
|
reg byte a [ main::$96 ]
|
||
|
reg byte a [ main::$97 ]
|
||
|
reg byte a [ main::$44 ]
|
||
|
|
||
|
|
||
|
FINAL ASSEMBLER
|
||
|
Score: 2631
|
||
|
|
||
|
//SEG0 File Comments
|
||
|
// Check that multiplication by constants is converted to shift/add
|
||
|
//SEG1 Basic Upstart
|
||
|
.pc = $801 "Basic"
|
||
|
:BasicUpstart(main)
|
||
|
.pc = $80d "Program"
|
||
|
//SEG2 Global Constants & labels
|
||
|
//SEG3 @begin
|
||
|
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||
|
//SEG5 @1
|
||
|
//SEG6 [2] call main
|
||
|
//SEG7 [4] phi from @1 to main [phi:@1->main]
|
||
|
//SEG8 [3] phi from @1 to @end [phi:@1->@end]
|
||
|
//SEG9 @end
|
||
|
//SEG10 main
|
||
|
main: {
|
||
|
.label SCREEN = $400
|
||
|
.label _61 = 2
|
||
|
.label _63 = 3
|
||
|
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||
|
//SEG12 [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||
|
ldx #0
|
||
|
//SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||
|
//SEG14 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy
|
||
|
//SEG15 main::@1
|
||
|
b1:
|
||
|
//SEG16 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 -- pbuc1_derefidx_vbuxx=vbuxx
|
||
|
txa
|
||
|
sta SCREEN,x
|
||
|
//SEG17 [7] (byte) main::$61 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuxx_rol_1
|
||
|
txa
|
||
|
asl
|
||
|
sta _61
|
||
|
//SEG18 [8] *((const byte*) main::SCREEN#0+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte) main::$61 -- pbuc1_derefidx_vbuxx=vbuz1
|
||
|
sta SCREEN+1*$28,x
|
||
|
//SEG19 [9] (byte~) main::$8 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG20 [10] *((const byte*) main::SCREEN#0+(byte)(number) 2*(number) $28 + (byte) main::i#2) ← (byte~) main::$8 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+2*$28,x
|
||
|
//SEG21 [11] (byte) main::$63 ← (byte) main::i#2 << (byte) 2 -- vbuz1=vbuxx_rol_2
|
||
|
txa
|
||
|
asl
|
||
|
asl
|
||
|
sta _63
|
||
|
//SEG22 [12] *((const byte*) main::SCREEN#0+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte) main::$63 -- pbuc1_derefidx_vbuxx=vbuz1
|
||
|
sta SCREEN+3*$28,x
|
||
|
//SEG23 [13] (byte~) main::$14 ← (byte) main::$63 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _63
|
||
|
//SEG24 [14] *((const byte*) main::SCREEN#0+(byte)(number) 4*(number) $28 + (byte) main::i#2) ← (byte~) main::$14 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+4*$28,x
|
||
|
//SEG25 [15] (byte) main::$66 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG26 [16] (byte~) main::$17 ← (byte) main::$66 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG27 [17] *((const byte*) main::SCREEN#0+(byte)(number) 5*(number) $28 + (byte) main::i#2) ← (byte~) main::$17 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+5*$28,x
|
||
|
//SEG28 [18] (byte) main::$69 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG29 [19] (byte) main::$70 ← (byte) main::$69 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG30 [20] (byte~) main::$20 ← (byte) main::$70 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG31 [21] *((const byte*) main::SCREEN#0+(byte)(number) 6*(number) $28 + (byte) main::i#2) ← (byte~) main::$20 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+6*$28,x
|
||
|
//SEG32 [22] (byte) main::$72 ← (byte) main::i#2 << (byte) 3 -- vbuaa=vbuxx_rol_3
|
||
|
txa
|
||
|
asl
|
||
|
asl
|
||
|
asl
|
||
|
//SEG33 [23] *((const byte*) main::SCREEN#0+(word)(number) 7*(number) $28 + (byte) main::i#2) ← (byte) main::$72 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+7*$28,x
|
||
|
//SEG34 [24] (byte~) main::$26 ← (byte) main::$72 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG35 [25] *((const byte*) main::SCREEN#0+(word)(number) 8*(number) $28 + (byte) main::i#2) ← (byte~) main::$26 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+8*$28,x
|
||
|
//SEG36 [26] (byte) main::$75 ← (byte) main::$63 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _63
|
||
|
//SEG37 [27] (byte~) main::$29 ← (byte) main::$75 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG38 [28] *((const byte*) main::SCREEN#0+(word)(number) 9*(number) $28 + (byte) main::i#2) ← (byte~) main::$29 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+9*$28,x
|
||
|
//SEG39 [29] (byte) main::$78 ← (byte) main::$63 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _63
|
||
|
//SEG40 [30] (byte) main::$79 ← (byte) main::$78 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG41 [31] (byte~) main::$32 ← (byte) main::$79 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG42 [32] *((const byte*) main::SCREEN#0+(word)(number) $a*(number) $28 + (byte) main::i#2) ← (byte~) main::$32 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$a*$28,x
|
||
|
//SEG43 [33] (byte) main::$82 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG44 [34] (byte~) main::$35 ← (byte) main::$82 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
||
|
asl
|
||
|
asl
|
||
|
//SEG45 [35] *((const byte*) main::SCREEN#0+(word)(number) $b*(number) $28 + (byte) main::i#2) ← (byte~) main::$35 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$b*$28,x
|
||
|
//SEG46 [36] (byte) main::$85 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG47 [37] (byte) main::$86 ← (byte) main::$85 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
||
|
asl
|
||
|
asl
|
||
|
//SEG48 [38] (byte~) main::$38 ← (byte) main::$86 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG49 [39] *((const byte*) main::SCREEN#0+(word)(number) $c*(number) $28 + (byte) main::i#2) ← (byte~) main::$38 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$c*$28,x
|
||
|
//SEG50 [40] (byte) main::$89 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG51 [41] (byte) main::$90 ← (byte) main::$89 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG52 [42] (byte) main::$91 ← (byte) main::$90 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG53 [43] (byte~) main::$41 ← (byte) main::$91 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG54 [44] *((const byte*) main::SCREEN#0+(word)(number) $d*(number) $28 + (byte) main::i#2) ← (byte~) main::$41 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$d*$28,x
|
||
|
//SEG55 [45] (byte) main::$94 ← (byte) main::$61 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
||
|
txa
|
||
|
clc
|
||
|
adc _61
|
||
|
//SEG56 [46] (byte) main::$95 ← (byte) main::$94 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG57 [47] (byte) main::$96 ← (byte) main::$95 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG58 [48] (byte) main::$97 ← (byte) main::$96 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
||
|
asl
|
||
|
//SEG59 [49] (byte~) main::$44 ← (byte) main::$97 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuxx
|
||
|
stx $ff
|
||
|
clc
|
||
|
adc $ff
|
||
|
//SEG60 [50] *((const byte*) main::SCREEN#0+(word)(number) $e*(number) $28 + (byte) main::i#2) ← (byte~) main::$44 -- pbuc1_derefidx_vbuxx=vbuaa
|
||
|
sta SCREEN+$e*$28,x
|
||
|
//SEG61 [51] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||
|
inx
|
||
|
//SEG62 [52] if((byte) main::i#1!=(byte) $12) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
||
|
cpx #$12
|
||
|
beq !b1+
|
||
|
jmp b1
|
||
|
!b1:
|
||
|
//SEG63 main::@return
|
||
|
//SEG64 [53] return
|
||
|
rts
|
||
|
}
|
||
|
|