|
|
|
@ -39,6 +39,31 @@ main: scope:[main] from @1
|
|
|
|
|
(byte) main::idx#16 ← ++ (byte) main::idx#15
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#16) ← (const byte) TYPEID_POINTER_POINTER_BYTE
|
|
|
|
|
(byte) main::idx#17 ← ++ (byte) main::idx#16
|
|
|
|
|
(byte) main::idx#18 ← (number) $28
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#18) ← (const byte) TYPEID_BYTE
|
|
|
|
|
(byte) main::idx#19 ← ++ (byte) main::idx#18
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#19) ← (const byte) TYPEID_BYTE
|
|
|
|
|
(byte) main::idx#20 ← ++ (byte) main::idx#19
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#20) ← (const byte) TYPEID_SIGNED_BYTE
|
|
|
|
|
(byte) main::idx#21 ← ++ (byte) main::idx#20
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#21) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
(byte) main::idx#22 ← ++ (byte) main::idx#21
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#22) ← (const byte) TYPEID_WORD
|
|
|
|
|
(byte) main::idx#23 ← ++ (byte) main::idx#22
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#23) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
(byte) main::idx#24 ← ++ (byte) main::idx#23
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#24) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
(byte) main::idx#25 ← ++ (byte) main::idx#24
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#25) ← (const byte) TYPEID_WORD
|
|
|
|
|
(byte) main::idx#26 ← ++ (byte) main::idx#25
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#26) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
(byte) main::idx#27 ← ++ (byte) main::idx#26
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#27) ← (const byte) TYPEID_SIGNED_DWORD
|
|
|
|
|
(byte) main::idx#28 ← ++ (byte) main::idx#27
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#28) ← (const byte) TYPEID_DWORD
|
|
|
|
|
(byte) main::idx#29 ← ++ (byte) main::idx#28
|
|
|
|
|
*((byte*) main::SCREEN#0 + (byte) main::idx#29) ← (const byte) TYPEID_SIGNED_DWORD
|
|
|
|
|
(byte) main::idx#30 ← ++ (byte) main::idx#29
|
|
|
|
|
to:main::@return
|
|
|
|
|
main::@return: scope:[main] from main
|
|
|
|
|
return
|
|
|
|
@ -87,8 +112,21 @@ SYMBOL TABLE SSA
|
|
|
|
|
(byte) main::idx#15
|
|
|
|
|
(byte) main::idx#16
|
|
|
|
|
(byte) main::idx#17
|
|
|
|
|
(byte) main::idx#18
|
|
|
|
|
(byte) main::idx#19
|
|
|
|
|
(byte) main::idx#2
|
|
|
|
|
(byte) main::idx#20
|
|
|
|
|
(byte) main::idx#21
|
|
|
|
|
(byte) main::idx#22
|
|
|
|
|
(byte) main::idx#23
|
|
|
|
|
(byte) main::idx#24
|
|
|
|
|
(byte) main::idx#25
|
|
|
|
|
(byte) main::idx#26
|
|
|
|
|
(byte) main::idx#27
|
|
|
|
|
(byte) main::idx#28
|
|
|
|
|
(byte) main::idx#29
|
|
|
|
|
(byte) main::idx#3
|
|
|
|
|
(byte) main::idx#30
|
|
|
|
|
(byte) main::idx#4
|
|
|
|
|
(byte) main::idx#5
|
|
|
|
|
(byte) main::idx#6
|
|
|
|
@ -97,65 +135,93 @@ SYMBOL TABLE SSA
|
|
|
|
|
(byte) main::idx#9
|
|
|
|
|
|
|
|
|
|
Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
|
|
|
|
|
Adding number conversion cast (unumber) $28 in (byte) main::idx#18 ← (number) $28
|
|
|
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
|
|
|
Inlining cast (byte*) main::SCREEN#0 ← (byte*)(number) $400
|
|
|
|
|
Inlining cast (byte) main::idx#0 ← (unumber)(number) 0
|
|
|
|
|
Inlining cast (byte) main::idx#18 ← (unumber)(number) $28
|
|
|
|
|
Successful SSA optimization Pass2InlineCast
|
|
|
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
|
|
|
Simplifying constant integer cast 0
|
|
|
|
|
Simplifying constant integer cast $28
|
|
|
|
|
Successful SSA optimization PassNCastSimplification
|
|
|
|
|
Finalized unsigned number type (byte) 0
|
|
|
|
|
Finalized unsigned number type (byte) $28
|
|
|
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
|
|
|
Constant (const byte*) main::SCREEN#0 = (byte*) 1024
|
|
|
|
|
Constant (const byte) main::idx#0 = 0
|
|
|
|
|
Constant (const byte) main::idx#18 = $28
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Simplifying expression containing zero main::SCREEN#0 in [2] *((const byte*) main::SCREEN#0 + (const byte) main::idx#0) ← (const byte) TYPEID_VOID
|
|
|
|
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
|
|
|
|
Eliminating unused variable (byte) main::idx#17 and assignment [33] (byte) main::idx#17 ← ++ (byte) main::idx#16
|
|
|
|
|
Eliminating unused variable (byte) main::idx#30 and assignment [57] (byte) main::idx#30 ← ++ (byte) main::idx#29
|
|
|
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
|
|
|
Constant right-side identified [1] (byte) main::idx#1 ← ++ (const byte) main::idx#0
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#19 ← ++ (const byte) main::idx#18
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#1 = ++main::idx#0
|
|
|
|
|
Constant (const byte) main::idx#19 = ++main::idx#18
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [2] (byte) main::idx#2 ← ++ (const byte) main::idx#1
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#20 ← ++ (const byte) main::idx#19
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#2 = ++main::idx#1
|
|
|
|
|
Constant (const byte) main::idx#20 = ++main::idx#19
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [3] (byte) main::idx#3 ← ++ (const byte) main::idx#2
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#21 ← ++ (const byte) main::idx#20
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#3 = ++main::idx#2
|
|
|
|
|
Constant (const byte) main::idx#21 = ++main::idx#20
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [4] (byte) main::idx#4 ← ++ (const byte) main::idx#3
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#22 ← ++ (const byte) main::idx#21
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#4 = ++main::idx#3
|
|
|
|
|
Constant (const byte) main::idx#22 = ++main::idx#21
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [5] (byte) main::idx#5 ← ++ (const byte) main::idx#4
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#23 ← ++ (const byte) main::idx#22
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#5 = ++main::idx#4
|
|
|
|
|
Constant (const byte) main::idx#23 = ++main::idx#22
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [6] (byte) main::idx#6 ← ++ (const byte) main::idx#5
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#24 ← ++ (const byte) main::idx#23
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#6 = ++main::idx#5
|
|
|
|
|
Constant (const byte) main::idx#24 = ++main::idx#23
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [7] (byte) main::idx#7 ← ++ (const byte) main::idx#6
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#25 ← ++ (const byte) main::idx#24
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#7 = ++main::idx#6
|
|
|
|
|
Constant (const byte) main::idx#25 = ++main::idx#24
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [8] (byte) main::idx#8 ← ++ (const byte) main::idx#7
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#26 ← ++ (const byte) main::idx#25
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#8 = ++main::idx#7
|
|
|
|
|
Constant (const byte) main::idx#26 = ++main::idx#25
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [9] (byte) main::idx#9 ← ++ (const byte) main::idx#8
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#27 ← ++ (const byte) main::idx#26
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#9 = ++main::idx#8
|
|
|
|
|
Constant (const byte) main::idx#27 = ++main::idx#26
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [10] (byte) main::idx#10 ← ++ (const byte) main::idx#9
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#28 ← ++ (const byte) main::idx#27
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#10 = ++main::idx#9
|
|
|
|
|
Constant (const byte) main::idx#28 = ++main::idx#27
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [11] (byte) main::idx#11 ← ++ (const byte) main::idx#10
|
|
|
|
|
Constant right-side identified [34] (byte) main::idx#29 ← ++ (const byte) main::idx#28
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#11 = ++main::idx#10
|
|
|
|
|
Constant (const byte) main::idx#29 = ++main::idx#28
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Constant right-side identified [12] (byte) main::idx#12 ← ++ (const byte) main::idx#11
|
|
|
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
@ -178,27 +244,51 @@ Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
|
|
|
Constant (const byte) main::idx#16 = ++main::idx#15
|
|
|
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#0
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#18
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#1
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#19
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#2
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#20
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#3
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#21
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#4
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#22
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#5
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#23
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#6
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#24
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#7
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#25
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#8
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#26
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#9
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#27
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#10
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#28
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#11
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#29
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#12
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#13
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#14
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#15
|
|
|
|
|
Inlining constant with different constant siblings (const byte) main::idx#16
|
|
|
|
|
Constant inlined main::idx#16 = ++++++++++++++++++++++++++++++++(byte) 0
|
|
|
|
|
Constant inlined main::idx#18 = (byte) $28
|
|
|
|
|
Constant inlined main::idx#19 = ++(byte) $28
|
|
|
|
|
Constant inlined main::idx#12 = ++++++++++++++++++++++++(byte) 0
|
|
|
|
|
Constant inlined main::idx#13 = ++++++++++++++++++++++++++(byte) 0
|
|
|
|
|
Constant inlined main::idx#14 = ++++++++++++++++++++++++++++(byte) 0
|
|
|
|
|
Constant inlined main::idx#15 = ++++++++++++++++++++++++++++++(byte) 0
|
|
|
|
|
Constant inlined main::idx#20 = ++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#21 = ++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#22 = ++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#27 = ++++++++++++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#28 = ++++++++++++++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#29 = ++++++++++++++++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#23 = ++++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#24 = ++++++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#25 = ++++++++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#26 = ++++++++++++++++(byte) $28
|
|
|
|
|
Constant inlined main::idx#0 = (byte) 0
|
|
|
|
|
Constant inlined main::idx#1 = ++(byte) 0
|
|
|
|
|
Constant inlined main::idx#2 = ++++(byte) 0
|
|
|
|
@ -228,6 +318,18 @@ Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++++++++++++
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++++++++++++++0)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++++++++++++++++0)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++++++++++++++++++0)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++++++$28)
|
|
|
|
|
Consolidated array index constant in *(main::SCREEN#0+++++++++++++++++++++++$28)
|
|
|
|
|
Successful SSA optimization Pass2ConstantAdditionElimination
|
|
|
|
|
Simplifying constant integer increment ++0
|
|
|
|
|
Simplifying constant integer increment ++0
|
|
|
|
@ -245,6 +347,17 @@ Simplifying constant integer increment ++$b
|
|
|
|
|
Simplifying constant integer increment ++$c
|
|
|
|
|
Simplifying constant integer increment ++$d
|
|
|
|
|
Simplifying constant integer increment ++$e
|
|
|
|
|
Simplifying constant integer increment ++$28
|
|
|
|
|
Simplifying constant integer increment ++$28
|
|
|
|
|
Simplifying constant integer increment ++$29
|
|
|
|
|
Simplifying constant integer increment ++$2a
|
|
|
|
|
Simplifying constant integer increment ++$2b
|
|
|
|
|
Simplifying constant integer increment ++$2c
|
|
|
|
|
Simplifying constant integer increment ++$2d
|
|
|
|
|
Simplifying constant integer increment ++$2e
|
|
|
|
|
Simplifying constant integer increment ++$2f
|
|
|
|
|
Simplifying constant integer increment ++$30
|
|
|
|
|
Simplifying constant integer increment ++$31
|
|
|
|
|
Successful SSA optimization Pass2ConstantSimplification
|
|
|
|
|
Simplifying constant integer increment ++1
|
|
|
|
|
Simplifying constant integer increment ++2
|
|
|
|
@ -261,6 +374,16 @@ Simplifying constant integer increment ++$c
|
|
|
|
|
Simplifying constant integer increment ++$d
|
|
|
|
|
Simplifying constant integer increment ++$e
|
|
|
|
|
Simplifying constant integer increment ++$f
|
|
|
|
|
Simplifying constant integer increment ++$29
|
|
|
|
|
Simplifying constant integer increment ++$2a
|
|
|
|
|
Simplifying constant integer increment ++$2b
|
|
|
|
|
Simplifying constant integer increment ++$2c
|
|
|
|
|
Simplifying constant integer increment ++$2d
|
|
|
|
|
Simplifying constant integer increment ++$2e
|
|
|
|
|
Simplifying constant integer increment ++$2f
|
|
|
|
|
Simplifying constant integer increment ++$30
|
|
|
|
|
Simplifying constant integer increment ++$31
|
|
|
|
|
Simplifying constant integer increment ++$32
|
|
|
|
|
Successful SSA optimization Pass2ConstantSimplification
|
|
|
|
|
Adding NOP phi() at start of @begin
|
|
|
|
|
Adding NOP phi() at start of @1
|
|
|
|
@ -304,9 +427,21 @@ main: scope:[main] from @1
|
|
|
|
|
[18] *((const byte*) main::SCREEN#0+(byte) $e) ← (const byte) TYPEID_POINTER_BOOL
|
|
|
|
|
[19] *((const byte*) main::SCREEN#0+(byte) $f) ← (const byte) TYPEID_POINTER_PROCEDURE
|
|
|
|
|
[20] *((const byte*) main::SCREEN#0+(byte) $10) ← (const byte) TYPEID_POINTER_POINTER_BYTE
|
|
|
|
|
[21] *((const byte*) main::SCREEN#0+(byte) $28) ← (const byte) TYPEID_BYTE
|
|
|
|
|
[22] *((const byte*) main::SCREEN#0+(byte) $29) ← (const byte) TYPEID_BYTE
|
|
|
|
|
[23] *((const byte*) main::SCREEN#0+(byte) $2a) ← (const byte) TYPEID_SIGNED_BYTE
|
|
|
|
|
[24] *((const byte*) main::SCREEN#0+(byte) $2b) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
[25] *((const byte*) main::SCREEN#0+(byte) $2c) ← (const byte) TYPEID_WORD
|
|
|
|
|
[26] *((const byte*) main::SCREEN#0+(byte) $2d) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
[27] *((const byte*) main::SCREEN#0+(byte) $2e) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
[28] *((const byte*) main::SCREEN#0+(byte) $2f) ← (const byte) TYPEID_WORD
|
|
|
|
|
[29] *((const byte*) main::SCREEN#0+(byte) $30) ← (const byte) TYPEID_SIGNED_WORD
|
|
|
|
|
[30] *((const byte*) main::SCREEN#0+(byte) $31) ← (const byte) TYPEID_SIGNED_DWORD
|
|
|
|
|
[31] *((const byte*) main::SCREEN#0+(byte) $32) ← (const byte) TYPEID_DWORD
|
|
|
|
|
[32] *((const byte*) main::SCREEN#0+(byte) $33) ← (const byte) TYPEID_SIGNED_DWORD
|
|
|
|
|
to:main::@return
|
|
|
|
|
main::@return: scope:[main] from main
|
|
|
|
|
[21] return
|
|
|
|
|
[33] return
|
|
|
|
|
to:@return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -415,13 +550,50 @@ main: {
|
|
|
|
|
// Pointer to pointer
|
|
|
|
|
lda #TYPEID_POINTER_POINTER_BYTE
|
|
|
|
|
sta SCREEN+$10
|
|
|
|
|
//SEG27 [21] *((const byte*) main::SCREEN#0+(byte) $28) ← (const byte) TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
// Test C types
|
|
|
|
|
lda #TYPEID_BYTE
|
|
|
|
|
sta SCREEN+$28
|
|
|
|
|
//SEG28 [22] *((const byte*) main::SCREEN#0+(byte) $29) ← (const byte) TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_BYTE
|
|
|
|
|
sta SCREEN+$29
|
|
|
|
|
//SEG29 [23] *((const byte*) main::SCREEN#0+(byte) $2a) ← (const byte) TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_BYTE
|
|
|
|
|
sta SCREEN+$2a
|
|
|
|
|
//SEG30 [24] *((const byte*) main::SCREEN#0+(byte) $2b) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2b
|
|
|
|
|
//SEG31 [25] *((const byte*) main::SCREEN#0+(byte) $2c) ← (const byte) TYPEID_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_WORD
|
|
|
|
|
sta SCREEN+$2c
|
|
|
|
|
//SEG32 [26] *((const byte*) main::SCREEN#0+(byte) $2d) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2d
|
|
|
|
|
//SEG33 [27] *((const byte*) main::SCREEN#0+(byte) $2e) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2e
|
|
|
|
|
//SEG34 [28] *((const byte*) main::SCREEN#0+(byte) $2f) ← (const byte) TYPEID_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_WORD
|
|
|
|
|
sta SCREEN+$2f
|
|
|
|
|
//SEG35 [29] *((const byte*) main::SCREEN#0+(byte) $30) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$30
|
|
|
|
|
//SEG36 [30] *((const byte*) main::SCREEN#0+(byte) $31) ← (const byte) TYPEID_SIGNED_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_DWORD
|
|
|
|
|
sta SCREEN+$31
|
|
|
|
|
//SEG37 [31] *((const byte*) main::SCREEN#0+(byte) $32) ← (const byte) TYPEID_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_DWORD
|
|
|
|
|
sta SCREEN+$32
|
|
|
|
|
//SEG38 [32] *((const byte*) main::SCREEN#0+(byte) $33) ← (const byte) TYPEID_SIGNED_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_DWORD
|
|
|
|
|
sta SCREEN+$33
|
|
|
|
|
jmp breturn
|
|
|
|
|
//SEG27 main::@return
|
|
|
|
|
//SEG39 main::@return
|
|
|
|
|
breturn:
|
|
|
|
|
//SEG28 [21] return
|
|
|
|
|
//SEG40 [33] return
|
|
|
|
|
rts
|
|
|
|
|
}
|
|
|
|
|
//SEG29 File Data
|
|
|
|
|
//SEG41 File Data
|
|
|
|
|
|
|
|
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
|
|
|
Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) TYPEID_VOID [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
@ -441,13 +613,25 @@ Statement [17] *((const byte*) main::SCREEN#0+(byte) $d) ← (const byte) TYPEID
|
|
|
|
|
Statement [18] *((const byte*) main::SCREEN#0+(byte) $e) ← (const byte) TYPEID_POINTER_BOOL [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [19] *((const byte*) main::SCREEN#0+(byte) $f) ← (const byte) TYPEID_POINTER_PROCEDURE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [20] *((const byte*) main::SCREEN#0+(byte) $10) ← (const byte) TYPEID_POINTER_POINTER_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [21] *((const byte*) main::SCREEN#0+(byte) $28) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [22] *((const byte*) main::SCREEN#0+(byte) $29) ← (const byte) TYPEID_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [23] *((const byte*) main::SCREEN#0+(byte) $2a) ← (const byte) TYPEID_SIGNED_BYTE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [24] *((const byte*) main::SCREEN#0+(byte) $2b) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [25] *((const byte*) main::SCREEN#0+(byte) $2c) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [26] *((const byte*) main::SCREEN#0+(byte) $2d) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [27] *((const byte*) main::SCREEN#0+(byte) $2e) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [28] *((const byte*) main::SCREEN#0+(byte) $2f) ← (const byte) TYPEID_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [29] *((const byte*) main::SCREEN#0+(byte) $30) ← (const byte) TYPEID_SIGNED_WORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [30] *((const byte*) main::SCREEN#0+(byte) $31) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [31] *((const byte*) main::SCREEN#0+(byte) $32) ← (const byte) TYPEID_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
Statement [32] *((const byte*) main::SCREEN#0+(byte) $33) ← (const byte) TYPEID_SIGNED_DWORD [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
|
|
|
|
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
|
|
|
Uplift Scope [main]
|
|
|
|
|
Uplift Scope []
|
|
|
|
|
|
|
|
|
|
Uplifting [main] best 123 combination
|
|
|
|
|
Uplifting [] best 123 combination
|
|
|
|
|
Uplifting [main] best 195 combination
|
|
|
|
|
Uplifting [] best 195 combination
|
|
|
|
|
|
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
|
|
|
//SEG0 File Comments
|
|
|
|
@ -546,19 +730,59 @@ main: {
|
|
|
|
|
// Pointer to pointer
|
|
|
|
|
lda #TYPEID_POINTER_POINTER_BYTE
|
|
|
|
|
sta SCREEN+$10
|
|
|
|
|
//SEG27 [21] *((const byte*) main::SCREEN#0+(byte) $28) ← (const byte) TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
// Test C types
|
|
|
|
|
lda #TYPEID_BYTE
|
|
|
|
|
sta SCREEN+$28
|
|
|
|
|
//SEG28 [22] *((const byte*) main::SCREEN#0+(byte) $29) ← (const byte) TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_BYTE
|
|
|
|
|
sta SCREEN+$29
|
|
|
|
|
//SEG29 [23] *((const byte*) main::SCREEN#0+(byte) $2a) ← (const byte) TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_BYTE
|
|
|
|
|
sta SCREEN+$2a
|
|
|
|
|
//SEG30 [24] *((const byte*) main::SCREEN#0+(byte) $2b) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2b
|
|
|
|
|
//SEG31 [25] *((const byte*) main::SCREEN#0+(byte) $2c) ← (const byte) TYPEID_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_WORD
|
|
|
|
|
sta SCREEN+$2c
|
|
|
|
|
//SEG32 [26] *((const byte*) main::SCREEN#0+(byte) $2d) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2d
|
|
|
|
|
//SEG33 [27] *((const byte*) main::SCREEN#0+(byte) $2e) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2e
|
|
|
|
|
//SEG34 [28] *((const byte*) main::SCREEN#0+(byte) $2f) ← (const byte) TYPEID_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_WORD
|
|
|
|
|
sta SCREEN+$2f
|
|
|
|
|
//SEG35 [29] *((const byte*) main::SCREEN#0+(byte) $30) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$30
|
|
|
|
|
//SEG36 [30] *((const byte*) main::SCREEN#0+(byte) $31) ← (const byte) TYPEID_SIGNED_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_DWORD
|
|
|
|
|
sta SCREEN+$31
|
|
|
|
|
//SEG37 [31] *((const byte*) main::SCREEN#0+(byte) $32) ← (const byte) TYPEID_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_DWORD
|
|
|
|
|
sta SCREEN+$32
|
|
|
|
|
//SEG38 [32] *((const byte*) main::SCREEN#0+(byte) $33) ← (const byte) TYPEID_SIGNED_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_DWORD
|
|
|
|
|
sta SCREEN+$33
|
|
|
|
|
jmp breturn
|
|
|
|
|
//SEG27 main::@return
|
|
|
|
|
//SEG39 main::@return
|
|
|
|
|
breturn:
|
|
|
|
|
//SEG28 [21] return
|
|
|
|
|
//SEG40 [33] return
|
|
|
|
|
rts
|
|
|
|
|
}
|
|
|
|
|
//SEG29 File Data
|
|
|
|
|
//SEG41 File Data
|
|
|
|
|
|
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
|
|
|
Removing instruction jmp b1
|
|
|
|
|
Removing instruction jmp bend
|
|
|
|
|
Removing instruction jmp breturn
|
|
|
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
|
|
|
Removing instruction lda #TYPEID_BYTE
|
|
|
|
|
Removing instruction lda #TYPEID_SIGNED_WORD
|
|
|
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
|
|
|
Removing instruction b1_from_bbegin:
|
|
|
|
|
Removing instruction b1:
|
|
|
|
|
Removing instruction bend_from_b1:
|
|
|
|
@ -602,7 +826,7 @@ FINAL SYMBOL TABLE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
|
|
|
Score: 108
|
|
|
|
|
Score: 176
|
|
|
|
|
|
|
|
|
|
//SEG0 File Comments
|
|
|
|
|
// Test typeid() of the different types
|
|
|
|
@ -692,9 +916,44 @@ main: {
|
|
|
|
|
// Pointer to pointer
|
|
|
|
|
lda #TYPEID_POINTER_POINTER_BYTE
|
|
|
|
|
sta SCREEN+$10
|
|
|
|
|
//SEG27 main::@return
|
|
|
|
|
//SEG28 [21] return
|
|
|
|
|
//SEG27 [21] *((const byte*) main::SCREEN#0+(byte) $28) ← (const byte) TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
// Test C types
|
|
|
|
|
lda #TYPEID_BYTE
|
|
|
|
|
sta SCREEN+$28
|
|
|
|
|
//SEG28 [22] *((const byte*) main::SCREEN#0+(byte) $29) ← (const byte) TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
sta SCREEN+$29
|
|
|
|
|
//SEG29 [23] *((const byte*) main::SCREEN#0+(byte) $2a) ← (const byte) TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_BYTE
|
|
|
|
|
sta SCREEN+$2a
|
|
|
|
|
//SEG30 [24] *((const byte*) main::SCREEN#0+(byte) $2b) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2b
|
|
|
|
|
//SEG31 [25] *((const byte*) main::SCREEN#0+(byte) $2c) ← (const byte) TYPEID_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_WORD
|
|
|
|
|
sta SCREEN+$2c
|
|
|
|
|
//SEG32 [26] *((const byte*) main::SCREEN#0+(byte) $2d) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$2d
|
|
|
|
|
//SEG33 [27] *((const byte*) main::SCREEN#0+(byte) $2e) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
sta SCREEN+$2e
|
|
|
|
|
//SEG34 [28] *((const byte*) main::SCREEN#0+(byte) $2f) ← (const byte) TYPEID_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_WORD
|
|
|
|
|
sta SCREEN+$2f
|
|
|
|
|
//SEG35 [29] *((const byte*) main::SCREEN#0+(byte) $30) ← (const byte) TYPEID_SIGNED_WORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_WORD
|
|
|
|
|
sta SCREEN+$30
|
|
|
|
|
//SEG36 [30] *((const byte*) main::SCREEN#0+(byte) $31) ← (const byte) TYPEID_SIGNED_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_DWORD
|
|
|
|
|
sta SCREEN+$31
|
|
|
|
|
//SEG37 [31] *((const byte*) main::SCREEN#0+(byte) $32) ← (const byte) TYPEID_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_DWORD
|
|
|
|
|
sta SCREEN+$32
|
|
|
|
|
//SEG38 [32] *((const byte*) main::SCREEN#0+(byte) $33) ← (const byte) TYPEID_SIGNED_DWORD -- _deref_pbuc1=vbuc2
|
|
|
|
|
lda #TYPEID_SIGNED_DWORD
|
|
|
|
|
sta SCREEN+$33
|
|
|
|
|
//SEG39 main::@return
|
|
|
|
|
//SEG40 [33] return
|
|
|
|
|
rts
|
|
|
|
|
}
|
|
|
|
|
//SEG29 File Data
|
|
|
|
|
//SEG41 File Data
|
|
|
|
|
|
|
|
|
|