1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-23 23:32:55 +00:00

Improved a few fragments. Moved to use the SymVar.isStorageXxx() methods.

This commit is contained in:
Jesper Gravgaard 2019-10-05 12:06:43 +02:00
parent 358f6d0047
commit 9877da213d
25 changed files with 182 additions and 160 deletions

View File

@ -1,7 +1,8 @@
ldy #0
lda ({z1}),y
tax
pha
iny
lda ({z1}),y
stx {z1}
sta {z1}+1
pla
sta {z1}

View File

@ -1,7 +1,8 @@
ldy #0
lda ({z1}),y
tax
pha
iny
lda ({z1}),y
sta {z1}+1
stx {z1}
pla
sta {z1}

View File

@ -1,5 +0,0 @@
ldy #0
lda {z1}
sta !+ +1
lda {c1},x
!: sta ($ff),y

View File

@ -0,0 +1 @@
sax {m1}

View File

@ -347,7 +347,7 @@ public abstract class Scope implements Symbol, Serializable {
if(asmName != null) {
res.append(" " + asmName);
}
if(SymbolVariable.StorageStrategy.MEMORY.equals(symVar.getStorageStrategy())) {
if(symVar.isStorageMemory()) {
res.append(" memory");
}
Registers.Register declRegister = symVar.getDeclaredRegister();

View File

@ -202,7 +202,7 @@ public abstract class SymbolVariable implements Symbol {
}
public boolean isVolatile() {
return declaredVolatile || inferedVolatile || StorageStrategy.MEMORY.equals(getStorageStrategy());
return declaredVolatile || inferedVolatile || isStorageMemory();
}
public boolean isDeclaredExport() {

View File

@ -27,7 +27,7 @@ public class Variable extends SymbolVariable {
public Variable(String name, Scope scope, SymbolType type, String dataSegment, StorageStrategy storageStrategy) {
super(name, scope, type, storageStrategy, dataSegment);
if(StorageStrategy.PHI_MASTER.equals(storageStrategy))
if(isStoragePhiMaster())
this.nextPhiVersionNumber = 0;
}

View File

@ -220,10 +220,8 @@ public class Pass1UnwindStructValues extends Pass1Base {
memberVariable.setInferedVolatile(variable.isInferedVolatile());
memberVariable.setDeclaredConstant(variable.isDeclaredConstant());
memberVariable.setDeclaredExport(variable.isDeclaredExport());
if(variable.getStorageStrategy().equals(SymbolVariable.StorageStrategy.MEMORY)) {
if(member.getStorageStrategy().equals(SymbolVariable.StorageStrategy.PHI_MASTER))
if(variable.isStorageMemory() && member.isStoragePhiMaster())
memberVariable.setStorageStrategy(SymbolVariable.StorageStrategy.MEMORY);
}
variableUnwinding.setMemberUnwinding(member.getLocalName(), memberVariable.getRef());
getLog().append("Created struct value member variable " + memberVariable.toString(getProgram()));
}

View File

@ -31,7 +31,7 @@ public class Pass2AssertRValues extends Pass2SsaAssertion {
if(rValue instanceof VariableRef) {
VariableRef variableRef = (VariableRef) rValue;
Variable variable = getScope().getVariable(variableRef);
if(variable.getStorageStrategy().equals(SymbolVariable.StorageStrategy.PHI_MASTER)) {
if(variable.isStoragePhiMaster()) {
throw new CompileError("No unversioned variable references allowed "+currentStmt.toString(getProgram(), false), currentStmt.getSource());
}
}

View File

@ -465,7 +465,7 @@ public class Pass4CodeGeneration {
// Add all memory variables
Collection<Variable> scopeVariables = scope.getAllVariables(false);
for(Variable variable : scopeVariables) {
if(variable.getStorageStrategy().equals(SymbolVariable.StorageStrategy.MEMORY)) {
if(variable.isStorageMemory()) {
// Skip if already added
String asmName = variable.getAsmName() == null ? variable.getLocalName() : variable.getAsmName();
if(added.contains(asmName)) {

View File

@ -98,11 +98,12 @@ main: {
sta.z __27+1
ldy #0
lda (cos_x),y
tax
pha
iny
lda (cos_x),y
stx.z cos_x
sta.z cos_x+1
pla
sta.z cos_x
lda #<$a0
sta.z mul16s.a
lda #>$a0
@ -146,11 +147,12 @@ main: {
sta.z __28+1
ldy #0
lda (sin_y),y
tax
pha
iny
lda (sin_y),y
stx.z sin_y
sta.z sin_y+1
pla
sta.z sin_y
lda #<$64
sta.z mul16s.a
lda #>$64

View File

@ -6574,11 +6574,12 @@ main: {
// [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$27) -- vwsz1=_deref_pwsz1
ldy #0
lda (cos_x),y
tax
pha
iny
lda (cos_x),y
stx.z cos_x
sta.z cos_x+1
pla
sta.z cos_x
// [19] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0
// [20] call mul16s
// [54] phi from main::@2 to mul16s [phi:main::@2->mul16s]
@ -6639,11 +6640,12 @@ main: {
// [28] (signed word) main::sin_y#0 ← *((signed word*~) main::$28) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin_y),y
tax
pha
iny
lda (sin_y),y
stx.z sin_y
sta.z sin_y+1
pla
sta.z sin_y
// [29] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0
// [30] call mul16s
// [54] phi from main::@9 to mul16s [phi:main::@9->mul16s]
@ -8621,7 +8623,7 @@ reg byte a [ divr16u::$2 ]
FINAL ASSEMBLER
Score: 20291
Score: 20391
// File Comments
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
@ -8769,11 +8771,12 @@ main: {
// [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$27) -- vwsz1=_deref_pwsz1
ldy #0
lda (cos_x),y
tax
pha
iny
lda (cos_x),y
stx.z cos_x
sta.z cos_x+1
pla
sta.z cos_x
// mul16s(160, cos_x)
// [19] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0
// [20] call mul16s
@ -8838,11 +8841,12 @@ main: {
// [28] (signed word) main::sin_y#0 ← *((signed word*~) main::$28) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin_y),y
tax
pha
iny
lda (sin_y),y
stx.z sin_y
sta.z sin_y+1
pla
sta.z sin_y
// mul16s(100, sin_y)
// [29] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0
// [30] call mul16s

View File

@ -107,11 +107,12 @@ main: {
sta.z __36+1
ldy #0
lda (cos_x),y
tax
pha
iny
lda (cos_x),y
stx.z cos_x
sta.z cos_x+1
pla
sta.z cos_x
jsr mul16s
lda.z xpos+2
sta.z __10
@ -147,11 +148,12 @@ main: {
sta.z __37+1
ldy #0
lda (sin_y),y
tax
pha
iny
lda (sin_y),y
stx.z sin_y
sta.z sin_y+1
pla
sta.z sin_y
jsr mul16s
lda.z ypos+2
sta.z __16

View File

@ -6897,11 +6897,12 @@ main: {
// [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$36) -- vwsz1=_deref_pwsz1
ldy #0
lda (cos_x),y
tax
pha
iny
lda (cos_x),y
stx.z cos_x
sta.z cos_x+1
pla
sta.z cos_x
// [19] (signed word) mul16s::a#1 ← (signed word) main::r#10
// [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0
// [21] call mul16s
@ -6955,11 +6956,12 @@ main: {
// [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$37) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin_y),y
tax
pha
iny
lda (sin_y),y
stx.z sin_y
sta.z sin_y+1
pla
sta.z sin_y
// [30] (signed word) mul16s::a#2 ← (signed word) main::r#10
// [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0
// [32] call mul16s
@ -9024,7 +9026,7 @@ reg byte a [ divr16u::$2 ]
FINAL ASSEMBLER
Score: 20476
Score: 20576
// File Comments
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
@ -9183,11 +9185,12 @@ main: {
// [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$36) -- vwsz1=_deref_pwsz1
ldy #0
lda (cos_x),y
tax
pha
iny
lda (cos_x),y
stx.z cos_x
sta.z cos_x+1
pla
sta.z cos_x
// mul16s(r, cos_x)
// [19] (signed word) mul16s::a#1 ← (signed word) main::r#10
// [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0
@ -9245,11 +9248,12 @@ main: {
// [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$37) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin_y),y
tax
pha
iny
lda (sin_y),y
stx.z sin_y
sta.z sin_y+1
pla
sta.z sin_y
// mul16s(r, sin_y)
// [30] (signed word) mul16s::a#2 ← (signed word) main::r#10
// [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0

View File

@ -93,11 +93,12 @@ loop: {
sta.z __2+1
ldy #0
lda (xpos),y
tax
pha
iny
lda (xpos),y
stx.z xpos
sta.z xpos+1
pla
sta.z xpos
jsr render_logo
inc.z xsin_idx
bne !+

View File

@ -6629,11 +6629,12 @@ loop: {
// [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$2) -- vwsz1=_deref_pwsz1
ldy #0
lda (xpos),y
tax
pha
iny
lda (xpos),y
stx.z xpos
sta.z xpos+1
pla
sta.z xpos
// [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0
// [33] call render_logo
jsr render_logo
@ -8508,7 +8509,7 @@ zp ZP_WORD:35 [ memset::end#0 sin16s_gen2::i#2 sin16s_gen2::i#1 xsin_idx#11 xsin
FINAL ASSEMBLER
Score: 46394
Score: 46444
// File Comments
// Upstart
@ -8685,11 +8686,12 @@ loop: {
// [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$2) -- vwsz1=_deref_pwsz1
ldy #0
lda (xpos),y
tax
pha
iny
lda (xpos),y
stx.z xpos
sta.z xpos+1
pla
sta.z xpos
// render_logo(xpos)
// [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0
// [33] call render_logo

View File

@ -102,11 +102,12 @@ render_sine: {
sta.z __1+1
ldy #0
lda (sin_val),y
tax
pha
iny
lda (sin_val),y
stx.z sin_val
sta.z sin_val+1
pla
sta.z sin_val
jsr wrap_y
tax
jsr bitmap_plot
@ -125,11 +126,12 @@ render_sine: {
sta.z __4+1
ldy #0
lda (sin2_val),y
tax
pha
iny
lda (sin2_val),y
stx.z sin2_val
sta.z sin2_val+1
pla
sta.z sin2_val
lda.z wrap_y.y
clc
adc #<$a

View File

@ -6334,11 +6334,12 @@ render_sine: {
// [28] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin_val),y
tax
pha
iny
lda (sin_val),y
stx.z sin_val
sta.z sin_val+1
pla
sta.z sin_val
// [29] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0
// [30] call wrap_y
// [58] phi from render_sine::@2 to wrap_y [phi:render_sine::@2->wrap_y]
@ -6380,11 +6381,12 @@ render_sine: {
// [38] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin2_val),y
tax
pha
iny
lda (sin2_val),y
stx.z sin2_val
sta.z sin2_val+1
pla
sta.z sin2_val
// [39] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1
lda.z wrap_y.y
clc
@ -8256,7 +8258,7 @@ reg byte a [ bitmap_init::$6 ]
FINAL ASSEMBLER
Score: 24649
Score: 24749
// File Comments
// Generate a big sinus and plot it on a bitmap
@ -8433,11 +8435,12 @@ render_sine: {
// [28] (signed word) render_sine::sin_val#0 ← *((signed word*~) render_sine::$1) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin_val),y
tax
pha
iny
lda (sin_val),y
stx.z sin_val
sta.z sin_val+1
pla
sta.z sin_val
// wrap_y(sin_val)
// [29] (signed word) wrap_y::y#0 ← (signed word) render_sine::sin_val#0
// [30] call wrap_y
@ -8479,11 +8482,12 @@ render_sine: {
// [38] (signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$4) -- vwsz1=_deref_pwsz1
ldy #0
lda (sin2_val),y
tax
pha
iny
lda (sin2_val),y
stx.z sin2_val
sta.z sin2_val+1
pla
sta.z sin2_val
// wrap_y(sin2_val+10)
// [39] (signed word) wrap_y::y#1 ← (signed word) render_sine::sin2_val#0 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1
lda.z wrap_y.y

View File

@ -23,7 +23,7 @@ main: {
.label __4 = $18
.label __11 = $18
.label sb = $17
.label sw = $20
.label sw = $18
jsr sin8s_gen
jsr sin16s_gen
jsr print_cls
@ -49,11 +49,14 @@ main: {
adc #>sintabw
sta.z __4+1
ldy #0
lda (__4),y
sta.z sw
lda (sw),y
pha
iny
lda (__4),y
lda (sw),y
sta.z sw+1
pla
sta.z sw
lda.z sw+1
eor #$ff
sec
adc.z sb
@ -265,14 +268,14 @@ sin16s: {
.label __4 = 6
.label x = 6
.label return = $18
.label x1 = $20
.label x1 = $1e
.label x2 = $10
.label x3 = $10
.label x3_6 = $1e
.label x3_6 = $20
.label usinx = $18
.label x4 = $10
.label x5 = $1e
.label x5_128 = $1e
.label x5 = $20
.label x5_128 = $20
.label sinx = $18
.label isUpper = $14
lda.z x+3
@ -442,7 +445,7 @@ mulu16_sel: {
.label __1 = 6
.label v1 = $10
.label v2 = $12
.label return = $1e
.label return = $20
.label return_1 = $10
.label return_10 = $10
lda.z v1
@ -467,9 +470,9 @@ mulu16_sel: {
rts
}
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zeropage($1e) a, word zeropage($12) b)
// mul16u(word zeropage($20) a, word zeropage($12) b)
mul16u: {
.label a = $1e
.label a = $20
.label mb = $a
.label res = 6
.label b = $12
@ -612,7 +615,7 @@ divr16u: {
sin8s_gen: {
.label step = $10
.label sintab = $18
.label x = $1e
.label x = $20
.label i = $12
jsr div16u
lda #<main.sintabb
@ -795,7 +798,7 @@ mulu8_sel: {
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte register(X) a, byte register(A) b)
mul8u: {
.label mb = $20
.label mb = $1e
.label res = $15
.label return = $15
sta.z mb

View File

@ -6257,6 +6257,7 @@ Coalescing zero page register [ zp ZP_WORD:47 [ divr16u::quotient#3 divr16u::ret
Coalescing zero page register [ zp ZP_WORD:57 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] ] with [ zp ZP_WORD:165 [ sin8s::$4 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:65 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:180 [ mul8u::return#2 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:71 [ main::$3 ] ] with [ zp ZP_WORD:73 [ main::$11 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:75 [ main::$4 ] ] with [ zp ZP_WORD:77 [ main::sw#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_DWORD:84 [ div32u16u::return#2 ] ] with [ zp ZP_DWORD:88 [ sin16s_gen::step#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_DWORD:84 [ div32u16u::return#2 sin16s_gen::step#0 ] ] with [ zp ZP_DWORD:151 [ div32u16u::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:102 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:140 [ mulu16_sel::return#12 ] ] - score: 1
@ -6274,7 +6275,7 @@ Coalescing zero page register [ zp ZP_DWORD:33 [ mul16u::res#2 mul16u::res#6 mul
Coalescing zero page register [ zp ZP_WORD:47 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 ] ] with [ zp ZP_WORD:149 [ div32u16u::quotient_lo#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:47 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 ] ] with [ zp ZP_WORD:159 [ div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:65 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:182 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:71 [ main::$3 main::$11 ] ] with [ zp ZP_WORD:75 [ main::$4 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:71 [ main::$3 main::$11 ] ] with [ zp ZP_WORD:75 [ main::$4 main::sw#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:102 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:110 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:102 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:120 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1
Coalescing zero page register [ zp ZP_WORD:102 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:124 [ sin16s::x5_128#0 ] ] - score: 1
@ -6289,15 +6290,14 @@ Coalescing zero page register [ zp ZP_WORD:50 [ sin8s_gen::i#2 sin8s_gen::i#1 ]
Coalescing zero page register [ zp ZP_WORD:52 [ sin8s_gen::x#2 sin8s_gen::x#1 ] ] with [ zp ZP_WORD:31 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] ]
Coalescing zero page register [ zp ZP_WORD:65 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] ] with [ zp ZP_WORD:57 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 ] ]
Coalescing zero page register [ zp ZP_BYTE:70 [ main::sb#0 ] ] with [ zp ZP_BYTE:56 [ sin8s::isUpper#10 ] ]
Coalescing zero page register [ zp ZP_WORD:71 [ main::$3 main::$11 main::$4 ] ] with [ zp ZP_WORD:54 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ]
Coalescing zero page register [ zp ZP_WORD:77 [ main::sw#0 ] ] with [ zp ZP_WORD:67 [ mul8u::mb#2 mul8u::mb#1 ] ]
Coalescing zero page register [ zp ZP_WORD:145 [ div32u16u::quotient_hi#0 ] ] with [ zp ZP_WORD:100 [ sin16s::x1#0 ] ]
Coalescing zero page register [ zp ZP_WORD:71 [ main::$3 main::$11 main::$4 main::sw#0 ] ] with [ zp ZP_WORD:54 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ]
Coalescing zero page register [ zp ZP_WORD:100 [ sin16s::x1#0 ] ] with [ zp ZP_WORD:67 [ mul8u::mb#2 mul8u::mb#1 ] ]
Coalescing zero page register [ zp ZP_WORD:145 [ div32u16u::quotient_hi#0 ] ] with [ zp ZP_WORD:102 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ]
Coalescing zero page register [ zp ZP_WORD:43 [ divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] ] with [ zp ZP_WORD:9 [ memset::dst#2 memset::dst#1 print_str::str#2 print_str::str#0 ] ]
Coalescing zero page register [ zp ZP_BYTE:63 [ mulu8_sel::select#5 ] ] with [ zp ZP_BYTE:19 [ sin16s::isUpper#2 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ] ]
Coalescing zero page register [ zp ZP_WORD:65 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 ] ] with [ zp ZP_WORD:11 [ sin16s_gen::i#2 sin16s_gen::i#1 print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ] ]
Coalescing zero page register [ zp ZP_WORD:71 [ main::$3 main::$11 main::$4 sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ] with [ zp ZP_WORD:45 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] ]
Coalescing zero page register [ zp ZP_WORD:102 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] with [ zp ZP_WORD:52 [ sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] ]
Coalescing zero page register [ zp ZP_WORD:145 [ div32u16u::quotient_hi#0 sin16s::x1#0 ] ] with [ zp ZP_WORD:77 [ main::sw#0 mul8u::mb#2 mul8u::mb#1 ] ]
Coalescing zero page register [ zp ZP_WORD:71 [ main::$3 main::$11 main::$4 main::sw#0 sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ] with [ zp ZP_WORD:45 [ divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ] ]
Coalescing zero page register [ zp ZP_WORD:145 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] with [ zp ZP_WORD:52 [ sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ] ]
Allocated (was zp ZP_DWORD:13) zp ZP_DWORD:2 [ sin16s_gen::x#2 sin16s_gen::x#1 ]
Allocated (was zp ZP_DWORD:33) zp ZP_DWORD:6 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ]
Allocated (was zp ZP_DWORD:37) zp ZP_DWORD:10 [ mul16u::mb#2 mul16u::mb#1 ]
@ -6307,10 +6307,10 @@ Allocated (was zp ZP_WORD:50) zp ZP_WORD:18 [ sin8s_gen::i#2 sin8s_gen::i#1 mulu
Allocated (was zp ZP_BYTE:63) zp ZP_BYTE:20 [ mulu8_sel::select#5 sin16s::isUpper#2 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 print_byte::b#0 ]
Allocated (was zp ZP_WORD:65) zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 sin16s_gen::i#2 sin16s_gen::i#1 print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ]
Allocated (was zp ZP_BYTE:70) zp ZP_BYTE:23 [ main::sb#0 sin8s::isUpper#10 ]
Allocated (was zp ZP_WORD:71) zp ZP_WORD:24 [ main::$3 main::$11 main::$4 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ]
Allocated (was zp ZP_WORD:71) zp ZP_WORD:24 [ main::$3 main::$11 main::$4 main::sw#0 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ]
Allocated (was zp ZP_DWORD:84) zp ZP_DWORD:26 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ]
Allocated (was zp ZP_WORD:102) zp ZP_WORD:30 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
Allocated (was zp ZP_WORD:145) zp ZP_WORD:32 [ div32u16u::quotient_hi#0 sin16s::x1#0 main::sw#0 mul8u::mb#2 mul8u::mb#1 ]
Allocated (was zp ZP_WORD:100) zp ZP_WORD:30 [ sin16s::x1#0 mul8u::mb#2 mul8u::mb#1 ]
Allocated (was zp ZP_WORD:145) zp ZP_WORD:32 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
Allocated (was zp ZP_BYTE:167) zp ZP_BYTE:34 [ sin8s::x1#0 ]
Allocated (was zp ZP_BYTE:171) zp ZP_BYTE:35 [ sin8s::x3#0 ]
Allocated (was zp ZP_BYTE:174) zp ZP_BYTE:36 [ sin8s::usinx#0 ]
@ -6361,7 +6361,7 @@ main: {
.label __4 = $18
.label __11 = $18
.label sb = $17
.label sw = $20
.label sw = $18
// [5] call sin8s_gen
// [164] phi from main to sin8s_gen [phi:main->sin8s_gen]
sin8s_gen_from_main:
@ -6420,13 +6420,15 @@ main: {
lda.z __4+1
adc #>sintabw
sta.z __4+1
// [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) -- vwsz1=_deref_pwsz2
// [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) -- vwsz1=_deref_pwsz1
ldy #0
lda (__4),y
sta.z sw
lda (sw),y
pha
iny
lda (__4),y
lda (sw),y
sta.z sw+1
pla
sta.z sw
// [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuaa=_hi_vwsz1
lda.z sw+1
// [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsaa=vbsz1_minus_vbsaa
@ -6814,14 +6816,14 @@ sin16s: {
.label __4 = 6
.label x = 6
.label return = $18
.label x1 = $20
.label x1 = $1e
.label x2 = $10
.label x3 = $10
.label x3_6 = $1e
.label x3_6 = $20
.label usinx = $18
.label x4 = $10
.label x5 = $1e
.label x5_128 = $1e
.label x5 = $20
.label x5_128 = $20
.label sinx = $18
.label isUpper = $14
// [77] if((dword) sin16s::x#0<(const dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1
@ -7105,7 +7107,7 @@ mulu16_sel: {
.label __1 = 6
.label v1 = $10
.label v2 = $12
.label return = $1e
.label return = $20
.label return_1 = $10
.label return_10 = $10
// [118] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2
@ -7147,9 +7149,9 @@ mulu16_sel: {
}
// mul16u
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zeropage($1e) a, word zeropage($12) b)
// mul16u(word zeropage($20) a, word zeropage($12) b)
mul16u: {
.label a = $1e
.label a = $20
.label mb = $a
.label res = 6
.label b = $12
@ -7411,7 +7413,7 @@ divr16u: {
sin8s_gen: {
.label step = $10
.label sintab = $18
.label x = $1e
.label x = $20
.label i = $12
// [165] call div16u
// [241] phi from sin8s_gen to div16u [phi:sin8s_gen->div16u]
@ -7776,7 +7778,7 @@ mulu8_sel: {
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte register(X) a, byte register(A) b)
mul8u: {
.label mb = $20
.label mb = $1e
.label res = $15
.label return = $15
// [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
@ -7958,7 +7960,6 @@ Removing instruction jmp __b3
Removing instruction jmp __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda.z sw+1
Removing instruction ldy #0
Removing instruction lda #0
Removing instruction lda #<0
@ -8244,7 +8245,7 @@ FINAL SYMBOL TABLE
(const signed word[$c0]) main::sintabw sintabw = { fill( $c0, 0) }
(const string) main::str str = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp ZP_WORD:32 22.0
(signed word) main::sw#0 sw zp ZP_WORD:24 22.0
(const word) main::wavelength wavelength = (byte) $c0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
@ -8270,9 +8271,9 @@ FINAL SYMBOL TABLE
(label) mul16u::@4
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp ZP_WORD:30 101.0
(word) mul16u::a#1 a zp ZP_WORD:30 1.3333333333333333
(word) mul16u::a#2 a zp ZP_WORD:30 67.66666666666666
(word) mul16u::a#0 a zp ZP_WORD:32 101.0
(word) mul16u::a#1 a zp ZP_WORD:32 1.3333333333333333
(word) mul16u::a#2 a zp ZP_WORD:32 67.66666666666666
(word) mul16u::b
(word) mul16u::b#0 b zp ZP_WORD:18 2.0
(dword) mul16u::mb
@ -8298,8 +8299,8 @@ FINAL SYMBOL TABLE
(byte) mul8u::b
(byte) mul8u::b#0 reg byte a 2.0
(word) mul8u::mb
(word) mul8u::mb#1 mb zp ZP_WORD:32 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:32 43.57142857142858
(word) mul8u::mb#1 mb zp ZP_WORD:30 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:30 43.57142857142858
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:21 202.0
(word) mul8u::res#2 res zp ZP_WORD:21 50.83333333333333
@ -8312,12 +8313,12 @@ FINAL SYMBOL TABLE
(label) mulu16_sel::@1
(label) mulu16_sel::@return
(word) mulu16_sel::return
(word) mulu16_sel::return#0 return zp ZP_WORD:30 4.0
(word) mulu16_sel::return#0 return zp ZP_WORD:32 4.0
(word) mulu16_sel::return#1 return#1 zp ZP_WORD:16 4.0
(word) mulu16_sel::return#10 return#10 zp ZP_WORD:16 4.0
(word) mulu16_sel::return#11 return zp ZP_WORD:30 4.0
(word) mulu16_sel::return#12 return zp ZP_WORD:30 1.714285714285714
(word) mulu16_sel::return#2 return zp ZP_WORD:30 4.0
(word) mulu16_sel::return#11 return zp ZP_WORD:32 4.0
(word) mulu16_sel::return#12 return zp ZP_WORD:32 1.714285714285714
(word) mulu16_sel::return#2 return zp ZP_WORD:32 4.0
(byte) mulu16_sel::select
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
(word) mulu16_sel::v1
@ -8437,19 +8438,19 @@ FINAL SYMBOL TABLE
(dword) sin16s::x#4 x zp ZP_DWORD:6 5.0
(dword) sin16s::x#6 x zp ZP_DWORD:6 6.0
(word) sin16s::x1
(word) sin16s::x1#0 x1 zp ZP_WORD:32 0.6363636363636365
(word) sin16s::x1#0 x1 zp ZP_WORD:30 0.6363636363636365
(word) sin16s::x2
(word) sin16s::x2#0 x2 zp ZP_WORD:16 4.0
(word) sin16s::x3
(word) sin16s::x3#0 x3 zp ZP_WORD:16 1.0
(word) sin16s::x3_6
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:30 4.0
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:32 4.0
(word) sin16s::x4
(word) sin16s::x4#0 x4 zp ZP_WORD:16 4.0
(word) sin16s::x5
(word) sin16s::x5#0 x5 zp ZP_WORD:30 4.0
(word) sin16s::x5#0 x5 zp ZP_WORD:32 4.0
(word) sin16s::x5_128
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:30 4.0
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:32 4.0
(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength)
(signed word~) sin16s_gen::$2 $2 zp ZP_WORD:24 22.0
(label) sin16s_gen::@1
@ -8537,8 +8538,8 @@ FINAL SYMBOL TABLE
(word) sin8s_gen::step#0 step zp ZP_WORD:16 1.1818181818181819
(word) sin8s_gen::wavelength
(word) sin8s_gen::x
(word) sin8s_gen::x#1 x zp ZP_WORD:30 11.0
(word) sin8s_gen::x#2 x zp ZP_WORD:30 4.125
(word) sin8s_gen::x#1 x zp ZP_WORD:32 11.0
(word) sin8s_gen::x#2 x zp ZP_WORD:32 4.125
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
@ -8559,15 +8560,15 @@ reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 sin16s_gen::i#2 sin16s_gen::i#1 print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ]
reg byte a [ mul8u::b#0 ]
zp ZP_BYTE:23 [ main::sb#0 sin8s::isUpper#10 ]
zp ZP_WORD:24 [ main::$3 main::$11 main::$4 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ]
zp ZP_WORD:24 [ main::$3 main::$11 main::$4 main::sw#0 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ]
reg byte a [ main::$6 ]
reg byte a [ main::sd#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
zp ZP_DWORD:26 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ]
zp ZP_WORD:30 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
zp ZP_WORD:30 [ sin16s::x1#0 mul8u::mb#2 mul8u::mb#1 ]
reg byte a [ mul16u::$1 ]
zp ZP_WORD:32 [ div32u16u::quotient_hi#0 sin16s::x1#0 main::sw#0 mul8u::mb#2 mul8u::mb#1 ]
zp ZP_WORD:32 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
reg byte a [ sin8s::return#0 ]
@ -8590,7 +8591,7 @@ reg byte a [ mul8u::$1 ]
FINAL ASSEMBLER
Score: 31936
Score: 32036
// File Comments
// Upstart
@ -8628,7 +8629,7 @@ main: {
.label __4 = $18
.label __11 = $18
.label sb = $17
.label sw = $20
.label sw = $18
// sin8s_gen(sintabb, wavelength)
// [5] call sin8s_gen
// [164] phi from main to sin8s_gen [phi:main->sin8s_gen]
@ -8681,15 +8682,18 @@ main: {
adc #>sintabw
sta.z __4+1
// sw = *(sintabw+(word)i)
// [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) -- vwsz1=_deref_pwsz2
// [15] (signed word) main::sw#0 ← *((signed word*~) main::$4) -- vwsz1=_deref_pwsz1
ldy #0
lda (__4),y
sta.z sw
lda (sw),y
pha
iny
lda (__4),y
lda (sw),y
sta.z sw+1
pla
sta.z sw
// >sw
// [16] (byte~) main::$6 ← > (signed word) main::sw#0 -- vbuaa=_hi_vwsz1
lda.z sw+1
// sd = sb-(signed byte)>sw
// [17] (signed byte) main::sd#0 ← (signed byte) main::sb#0 - (signed byte)(byte~) main::$6 -- vbsaa=vbsz1_minus_vbsaa
eor #$ff
@ -9057,14 +9061,14 @@ sin16s: {
.label __4 = 6
.label x = 6
.label return = $18
.label x1 = $20
.label x1 = $1e
.label x2 = $10
.label x3 = $10
.label x3_6 = $1e
.label x3_6 = $20
.label usinx = $18
.label x4 = $10
.label x5 = $1e
.label x5_128 = $1e
.label x5 = $20
.label x5_128 = $20
.label sinx = $18
.label isUpper = $14
// if(x >= PI_u4f28 )
@ -9342,7 +9346,7 @@ mulu16_sel: {
.label __1 = 6
.label v1 = $10
.label v2 = $12
.label return = $1e
.label return = $20
.label return_1 = $10
.label return_10 = $10
// mul16u(v1, v2)
@ -9384,9 +9388,9 @@ mulu16_sel: {
}
// mul16u
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
// mul16u(word zeropage($1e) a, word zeropage($12) b)
// mul16u(word zeropage($20) a, word zeropage($12) b)
mul16u: {
.label a = $1e
.label a = $20
.label mb = $a
.label res = 6
.label b = $12
@ -9636,7 +9640,7 @@ divr16u: {
sin8s_gen: {
.label step = $10
.label sintab = $18
.label x = $1e
.label x = $20
.label i = $12
// div16u(PI2_u4f12, wavelength)
// [165] call div16u
@ -9990,7 +9994,7 @@ mulu8_sel: {
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte register(X) a, byte register(A) b)
mul8u: {
.label mb = $20
.label mb = $1e
.label res = $15
.label return = $15
// [232] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]

View File

@ -92,7 +92,7 @@
(const signed word[$c0]) main::sintabw sintabw = { fill( $c0, 0) }
(const string) main::str str = (string) " "
(signed word) main::sw
(signed word) main::sw#0 sw zp ZP_WORD:32 22.0
(signed word) main::sw#0 sw zp ZP_WORD:24 22.0
(const word) main::wavelength wavelength = (byte) $c0
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
@ -118,9 +118,9 @@
(label) mul16u::@4
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp ZP_WORD:30 101.0
(word) mul16u::a#1 a zp ZP_WORD:30 1.3333333333333333
(word) mul16u::a#2 a zp ZP_WORD:30 67.66666666666666
(word) mul16u::a#0 a zp ZP_WORD:32 101.0
(word) mul16u::a#1 a zp ZP_WORD:32 1.3333333333333333
(word) mul16u::a#2 a zp ZP_WORD:32 67.66666666666666
(word) mul16u::b
(word) mul16u::b#0 b zp ZP_WORD:18 2.0
(dword) mul16u::mb
@ -146,8 +146,8 @@
(byte) mul8u::b
(byte) mul8u::b#0 reg byte a 2.0
(word) mul8u::mb
(word) mul8u::mb#1 mb zp ZP_WORD:32 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:32 43.57142857142858
(word) mul8u::mb#1 mb zp ZP_WORD:30 202.0
(word) mul8u::mb#2 mb zp ZP_WORD:30 43.57142857142858
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:21 202.0
(word) mul8u::res#2 res zp ZP_WORD:21 50.83333333333333
@ -160,12 +160,12 @@
(label) mulu16_sel::@1
(label) mulu16_sel::@return
(word) mulu16_sel::return
(word) mulu16_sel::return#0 return zp ZP_WORD:30 4.0
(word) mulu16_sel::return#0 return zp ZP_WORD:32 4.0
(word) mulu16_sel::return#1 return#1 zp ZP_WORD:16 4.0
(word) mulu16_sel::return#10 return#10 zp ZP_WORD:16 4.0
(word) mulu16_sel::return#11 return zp ZP_WORD:30 4.0
(word) mulu16_sel::return#12 return zp ZP_WORD:30 1.714285714285714
(word) mulu16_sel::return#2 return zp ZP_WORD:30 4.0
(word) mulu16_sel::return#11 return zp ZP_WORD:32 4.0
(word) mulu16_sel::return#12 return zp ZP_WORD:32 1.714285714285714
(word) mulu16_sel::return#2 return zp ZP_WORD:32 4.0
(byte) mulu16_sel::select
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
(word) mulu16_sel::v1
@ -285,19 +285,19 @@
(dword) sin16s::x#4 x zp ZP_DWORD:6 5.0
(dword) sin16s::x#6 x zp ZP_DWORD:6 6.0
(word) sin16s::x1
(word) sin16s::x1#0 x1 zp ZP_WORD:32 0.6363636363636365
(word) sin16s::x1#0 x1 zp ZP_WORD:30 0.6363636363636365
(word) sin16s::x2
(word) sin16s::x2#0 x2 zp ZP_WORD:16 4.0
(word) sin16s::x3
(word) sin16s::x3#0 x3 zp ZP_WORD:16 1.0
(word) sin16s::x3_6
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:30 4.0
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:32 4.0
(word) sin16s::x4
(word) sin16s::x4#0 x4 zp ZP_WORD:16 4.0
(word) sin16s::x5
(word) sin16s::x5#0 x5 zp ZP_WORD:30 4.0
(word) sin16s::x5#0 x5 zp ZP_WORD:32 4.0
(word) sin16s::x5_128
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:30 4.0
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:32 4.0
(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength)
(signed word~) sin16s_gen::$2 $2 zp ZP_WORD:24 22.0
(label) sin16s_gen::@1
@ -385,8 +385,8 @@
(word) sin8s_gen::step#0 step zp ZP_WORD:16 1.1818181818181819
(word) sin8s_gen::wavelength
(word) sin8s_gen::x
(word) sin8s_gen::x#1 x zp ZP_WORD:30 11.0
(word) sin8s_gen::x#2 x zp ZP_WORD:30 4.125
(word) sin8s_gen::x#1 x zp ZP_WORD:32 11.0
(word) sin8s_gen::x#2 x zp ZP_WORD:32 4.125
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
@ -407,15 +407,15 @@ reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
zp ZP_WORD:21 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$4 sin16s_gen::i#2 sin16s_gen::i#1 print_char_cursor#28 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 ]
reg byte a [ mul8u::b#0 ]
zp ZP_BYTE:23 [ main::sb#0 sin8s::isUpper#10 ]
zp ZP_WORD:24 [ main::$3 main::$11 main::$4 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ]
zp ZP_WORD:24 [ main::$3 main::$11 main::$4 main::sw#0 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$2 sin16s::usinx#0 ]
reg byte a [ main::$6 ]
reg byte a [ main::sd#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
zp ZP_DWORD:26 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ]
zp ZP_WORD:30 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
zp ZP_WORD:30 [ sin16s::x1#0 mul8u::mb#2 mul8u::mb#1 ]
reg byte a [ mul16u::$1 ]
zp ZP_WORD:32 [ div32u16u::quotient_hi#0 sin16s::x1#0 main::sw#0 mul8u::mb#2 mul8u::mb#1 ]
zp ZP_WORD:32 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 sin8s_gen::x#2 sin8s_gen::x#1 mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
reg byte a [ sin8s::return#0 ]