mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-12-28 01:29:44 +00:00
Updated sinusgen8 test code.
This commit is contained in:
parent
e0749c4ac2
commit
d29a935507
@ -129,17 +129,26 @@ public class DirectiveParserContext {
|
||||
public DirectiveParserContext() {
|
||||
this.statementDirectives = null;
|
||||
// Setup default directives
|
||||
this.defaultDirectives = new ArrayList<>();
|
||||
this.defaultDirectives.add(new Directive.MemoryArea(SymbolVariable.MemoryArea.ZEROPAGE_MEMORY, null));
|
||||
this.defaultDirectives.add(new Directive.FormSsa(true));
|
||||
this.defaultDirectives.add(new Directive.Const(SymbolVariable.ConstantDeclaration.MAYBE_CONST));
|
||||
this.defaultDirectives = Arrays.asList(
|
||||
new Directive.MemoryArea(SymbolVariable.MemoryArea.ZEROPAGE_MEMORY, null),
|
||||
new Directive.FormSsa(true),
|
||||
new Directive.Const(SymbolVariable.ConstantDeclaration.MAYBE_CONST)
|
||||
);
|
||||
this.registerImpliesDirectives = new ArrayList<>();
|
||||
this.typeDirectives = new HashMap<>();
|
||||
this.typeDirectives.put(DirectiveType.ARRAY, Arrays.asList(new Directive.Const(SymbolVariable.ConstantDeclaration.CONST), new Directive.MemoryArea(SymbolVariable.MemoryArea.MAIN_MEMORY, null)));
|
||||
//this.typeDirectives.put(DirectiveType.POINTER, Arrays.asList(new Directive.MemoryArea(SymbolVariable.MemoryArea.ZEROPAGE_MEMORY, null)));
|
||||
this.typeDirectives.put(DirectiveType.ARRAY, Arrays.asList(
|
||||
new Directive.Const(SymbolVariable.ConstantDeclaration.CONST),
|
||||
new Directive.MemoryArea(SymbolVariable.MemoryArea.MAIN_MEMORY, null)
|
||||
));
|
||||
this.typeDirectives.put(DirectiveType.POINTER, Arrays.asList(
|
||||
new Directive.MemoryArea(SymbolVariable.MemoryArea.ZEROPAGE_MEMORY, null)
|
||||
));
|
||||
this.scopeDirectives = new HashMap<>();
|
||||
//this.scopeDirectives.put(DirectiveScope.GLOBAL, Arrays.asList(
|
||||
// new Directive.MemoryArea(SymbolVariable.MemoryArea.MAIN_MEMORY, null),
|
||||
// new Directive.FormSsa(false)
|
||||
//));
|
||||
this.scopeTypeDirectives = new HashMap<>();
|
||||
//this.scopeDirectives.put(DirectiveScope.GLOBAL, Arrays.asList(new Directive.MemoryArea(SymbolVariable.MemoryArea.MAIN_MEMORY, null), new Directive.FormSsa(false)));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -158,7 +167,7 @@ public class DirectiveParserContext {
|
||||
if(ssaDirective != null) {
|
||||
if(ssaDirective.ssa) {
|
||||
lValue.setStorageStrategy(SymbolVariable.StorageStrategy.PHI_MASTER);
|
||||
} else {
|
||||
} else {
|
||||
lValue.setStorageStrategy(SymbolVariable.StorageStrategy.LOAD_STORE);
|
||||
}
|
||||
}
|
||||
@ -201,7 +210,7 @@ public class DirectiveParserContext {
|
||||
Registers.Register register = new Registers.RegisterZpMem(memoryAreaDirective.address.intValue(), -1, true);
|
||||
lValue.setDeclaredRegister(register);
|
||||
} else {
|
||||
Registers.Register register = new Registers.RegisterMainMem((VariableRef)lValue.getRef(), -1, memoryAreaDirective.address);
|
||||
Registers.Register register = new Registers.RegisterMainMem((VariableRef) lValue.getRef(), -1, memoryAreaDirective.address);
|
||||
lValue.setDeclaredRegister(register);
|
||||
}
|
||||
}
|
||||
|
@ -1,24 +1,25 @@
|
||||
import "sinus.kc"
|
||||
import "print.kc"
|
||||
|
||||
word wavelength = 192;
|
||||
signed byte[192] sintab2;
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
byte[] sintabref = {
|
||||
$00, $04, $08, $0c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c,
|
||||
$40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c,
|
||||
$6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f,
|
||||
$80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70,
|
||||
$6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43,
|
||||
$40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $0c, $08, $04,
|
||||
$00, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4,
|
||||
$c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94,
|
||||
$92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81,
|
||||
$81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90,
|
||||
$92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd,
|
||||
$c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
};
|
||||
|
||||
void main() {
|
||||
word wavelength = 192;
|
||||
signed byte[192] sintab2;
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
byte[] sintabref = {
|
||||
$00, $04, $08, $0c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c,
|
||||
$40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c,
|
||||
$6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f,
|
||||
$80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70,
|
||||
$6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43,
|
||||
$40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $0c, $08, $04,
|
||||
$00, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4,
|
||||
$c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94,
|
||||
$92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81,
|
||||
$81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90,
|
||||
$92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd,
|
||||
$c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
};
|
||||
sin8s_gen(sintab2, wavelength);
|
||||
print_cls();
|
||||
for(byte i: 0..191) {
|
||||
|
@ -8,9 +8,9 @@
|
||||
// PI/2 in u[4.12] format
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label print_line_cursor = $400
|
||||
.const wavelength = $c0
|
||||
.label print_char_cursor = 2
|
||||
main: {
|
||||
.label wavelength = $c0
|
||||
jsr sin8s_gen
|
||||
jsr print_cls
|
||||
lda #<print_line_cursor
|
||||
@ -31,9 +31,6 @@ main: {
|
||||
rts
|
||||
str: .text " "
|
||||
.byte 0
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
}
|
||||
// Print a zero-terminated string
|
||||
// print_str(byte* zeropage(6) str)
|
||||
@ -158,9 +155,9 @@ sin8s_gen: {
|
||||
.label x = $a
|
||||
.label i = 2
|
||||
jsr div16u
|
||||
lda #<main.sintab2
|
||||
lda #<sintab2
|
||||
sta.z sintab
|
||||
lda #>main.sintab2
|
||||
lda #>sintab2
|
||||
sta.z sintab+1
|
||||
lda #<0
|
||||
sta.z x
|
||||
@ -170,11 +167,11 @@ sin8s_gen: {
|
||||
// u[4.12]
|
||||
__b1:
|
||||
lda.z i+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b2
|
||||
bne !+
|
||||
lda.z i
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b2
|
||||
!:
|
||||
rts
|
||||
@ -416,11 +413,11 @@ divr16u: {
|
||||
asl.z quotient
|
||||
rol.z quotient+1
|
||||
lda.z rem+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b3
|
||||
bne !+
|
||||
lda.z rem
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b3
|
||||
!:
|
||||
inc.z quotient
|
||||
@ -429,10 +426,10 @@ divr16u: {
|
||||
!:
|
||||
lda.z rem
|
||||
sec
|
||||
sbc #<main.wavelength
|
||||
sbc #<wavelength
|
||||
sta.z rem
|
||||
lda.z rem+1
|
||||
sbc #>main.wavelength
|
||||
sbc #>wavelength
|
||||
sta.z rem+1
|
||||
__b3:
|
||||
inx
|
||||
@ -441,3 +438,6 @@ divr16u: {
|
||||
rts
|
||||
}
|
||||
print_hextab: .text "0123456789abcdef"
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
|
@ -20,7 +20,7 @@ main::@2: scope:[main] from main
|
||||
main::@1: scope:[main] from main::@2 main::@4
|
||||
[8] (byte*) print_char_cursor#42 ← phi( main::@2/(const byte*) print_line_cursor#0 main::@4/(byte*) print_char_cursor#19 )
|
||||
[8] (byte) main::i#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::i#1 )
|
||||
[9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2)
|
||||
[9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2)
|
||||
[10] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0
|
||||
[11] call print_sbyte
|
||||
to:main::@3
|
||||
@ -139,10 +139,10 @@ sin8s_gen::@3: scope:[sin8s_gen] from sin8s_gen
|
||||
[57] (word) sin8s_gen::step#0 ← (word) div16u::return#2
|
||||
to:sin8s_gen::@1
|
||||
sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen::@3 sin8s_gen::@4
|
||||
[58] (signed byte*) sin8s_gen::sintab#2 ← phi( sin8s_gen::@3/(const signed byte[$c0]) main::sintab2 sin8s_gen::@4/(signed byte*) sin8s_gen::sintab#0 )
|
||||
[58] (signed byte*) sin8s_gen::sintab#2 ← phi( sin8s_gen::@3/(const signed byte[$c0]) sintab2 sin8s_gen::@4/(signed byte*) sin8s_gen::sintab#0 )
|
||||
[58] (word) sin8s_gen::x#2 ← phi( sin8s_gen::@3/(byte) 0 sin8s_gen::@4/(word) sin8s_gen::x#1 )
|
||||
[58] (word) sin8s_gen::i#2 ← phi( sin8s_gen::@3/(byte) 0 sin8s_gen::@4/(word) sin8s_gen::i#1 )
|
||||
[59] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2
|
||||
[59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2
|
||||
to:sin8s_gen::@return
|
||||
sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@1
|
||||
[60] return
|
||||
@ -317,11 +317,11 @@ divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[143] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[144] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
|
||||
[145] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
||||
[146] if((word) divr16u::rem#5<(const word) main::wavelength) goto divr16u::@3
|
||||
[146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[147] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength
|
||||
[148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[149] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
|
@ -12,7 +12,7 @@ Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
|
||||
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
|
||||
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
|
||||
Identified constant variable (byte*) HEAP_TOP
|
||||
Identified constant variable (word) main::wavelength
|
||||
Identified constant variable (word) wavelength
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) divr16u::@7
|
||||
@ -87,7 +87,6 @@ Culled Empty Block (label) @52
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) @54
|
||||
Culled Empty Block (label) @55
|
||||
Culled Empty Block (label) @56
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -580,11 +579,11 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7
|
||||
return
|
||||
to:@return
|
||||
@49: scope:[] from @32
|
||||
(byte*) print_screen#6 ← phi( @32/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#47 ← phi( @32/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#15 ← phi( @32/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_screen#7 ← phi( @32/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#48 ← phi( @32/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#16 ← phi( @32/(byte*) print_line_cursor#0 )
|
||||
(byte[]) print_hextab ← (const string) $0
|
||||
to:@57
|
||||
to:@56
|
||||
|
||||
(void()) print_byte((byte) print_byte::b)
|
||||
print_byte: scope:[print_byte] from print_sbyte::@2
|
||||
@ -646,17 +645,22 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
(byte*) print_char_cursor#13 ← (byte*) print_char_cursor#30
|
||||
return
|
||||
to:@return
|
||||
@56: scope:[] from @49
|
||||
(byte*) print_screen#6 ← phi( @49/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#47 ← phi( @49/(byte*) print_char_cursor#48 )
|
||||
(byte*) print_line_cursor#15 ← phi( @49/(byte*) print_line_cursor#16 )
|
||||
(word) wavelength ← (number) $c0
|
||||
(signed byte[$c0]) sintab2 ← { fill( $c0, 0) }
|
||||
(byte[]) sintabref ← { (number) 0, (number) 4, (number) 8, (number) $c, (number) $11, (number) $15, (number) $19, (number) $1d, (number) $21, (number) $25, (number) $29, (number) $2d, (number) $31, (number) $35, (number) $38, (number) $3c, (number) $40, (number) $43, (number) $47, (number) $4a, (number) $4e, (number) $51, (number) $54, (number) $57, (number) $5a, (number) $5d, (number) $60, (number) $63, (number) $65, (number) $68, (number) $6a, (number) $6c, (number) $6e, (number) $70, (number) $72, (number) $74, (number) $76, (number) $77, (number) $79, (number) $7a, (number) $7b, (number) $7c, (number) $7d, (number) $7e, (number) $7e, (number) $7f, (number) $7f, (number) $7f, (number) $80, (number) $7f, (number) $7f, (number) $7f, (number) $7e, (number) $7e, (number) $7d, (number) $7c, (number) $7b, (number) $7a, (number) $79, (number) $77, (number) $76, (number) $74, (number) $72, (number) $70, (number) $6e, (number) $6c, (number) $6a, (number) $68, (number) $65, (number) $63, (number) $60, (number) $5d, (number) $5a, (number) $57, (number) $54, (number) $51, (number) $4e, (number) $4a, (number) $47, (number) $43, (number) $40, (number) $3c, (number) $38, (number) $35, (number) $31, (number) $2d, (number) $29, (number) $25, (number) $21, (number) $1d, (number) $19, (number) $15, (number) $11, (number) $c, (number) 8, (number) 4, (number) 0, (number) $fc, (number) $f8, (number) $f4, (number) $ef, (number) $eb, (number) $e7, (number) $e3, (number) $df, (number) $db, (number) $d7, (number) $d3, (number) $cf, (number) $cb, (number) $c8, (number) $c4, (number) $c0, (number) $bd, (number) $b9, (number) $b6, (number) $b2, (number) $af, (number) $ac, (number) $a9, (number) $a6, (number) $a3, (number) $a0, (number) $9d, (number) $9b, (number) $98, (number) $96, (number) $94, (number) $92, (number) $90, (number) $8e, (number) $8c, (number) $8a, (number) $89, (number) $87, (number) $86, (number) $85, (number) $84, (number) $83, (number) $82, (number) $82, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $82, (number) $82, (number) $83, (number) $84, (number) $85, (number) $86, (number) $87, (number) $89, (number) $8a, (number) $8c, (number) $8e, (number) $90, (number) $92, (number) $94, (number) $96, (number) $98, (number) $9b, (number) $9d, (number) $a0, (number) $a3, (number) $a6, (number) $a9, (number) $ac, (number) $af, (number) $b2, (number) $b6, (number) $b9, (number) $bd, (number) $c0, (number) $c4, (number) $c8, (number) $cb, (number) $cf, (number) $d3, (number) $d7, (number) $db, (number) $df, (number) $e3, (number) $e7, (number) $eb, (number) $ef, (number) $f4, (number) $f8, (number) $fc }
|
||||
to:@57
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @57
|
||||
(byte*) print_char_cursor#46 ← phi( @57/(byte*) print_char_cursor#43 )
|
||||
(byte*) print_line_cursor#13 ← phi( @57/(byte*) print_line_cursor#12 )
|
||||
(byte*) print_screen#4 ← phi( @57/(byte*) print_screen#5 )
|
||||
(word) main::wavelength ← (number) $c0
|
||||
(signed byte[$c0]) main::sintab2 ← { fill( $c0, 0) }
|
||||
(byte[]) main::sintabref ← { (number) 0, (number) 4, (number) 8, (number) $c, (number) $11, (number) $15, (number) $19, (number) $1d, (number) $21, (number) $25, (number) $29, (number) $2d, (number) $31, (number) $35, (number) $38, (number) $3c, (number) $40, (number) $43, (number) $47, (number) $4a, (number) $4e, (number) $51, (number) $54, (number) $57, (number) $5a, (number) $5d, (number) $60, (number) $63, (number) $65, (number) $68, (number) $6a, (number) $6c, (number) $6e, (number) $70, (number) $72, (number) $74, (number) $76, (number) $77, (number) $79, (number) $7a, (number) $7b, (number) $7c, (number) $7d, (number) $7e, (number) $7e, (number) $7f, (number) $7f, (number) $7f, (number) $80, (number) $7f, (number) $7f, (number) $7f, (number) $7e, (number) $7e, (number) $7d, (number) $7c, (number) $7b, (number) $7a, (number) $79, (number) $77, (number) $76, (number) $74, (number) $72, (number) $70, (number) $6e, (number) $6c, (number) $6a, (number) $68, (number) $65, (number) $63, (number) $60, (number) $5d, (number) $5a, (number) $57, (number) $54, (number) $51, (number) $4e, (number) $4a, (number) $47, (number) $43, (number) $40, (number) $3c, (number) $38, (number) $35, (number) $31, (number) $2d, (number) $29, (number) $25, (number) $21, (number) $1d, (number) $19, (number) $15, (number) $11, (number) $c, (number) 8, (number) 4, (number) 0, (number) $fc, (number) $f8, (number) $f4, (number) $ef, (number) $eb, (number) $e7, (number) $e3, (number) $df, (number) $db, (number) $d7, (number) $d3, (number) $cf, (number) $cb, (number) $c8, (number) $c4, (number) $c0, (number) $bd, (number) $b9, (number) $b6, (number) $b2, (number) $af, (number) $ac, (number) $a9, (number) $a6, (number) $a3, (number) $a0, (number) $9d, (number) $9b, (number) $98, (number) $96, (number) $94, (number) $92, (number) $90, (number) $8e, (number) $8c, (number) $8a, (number) $89, (number) $87, (number) $86, (number) $85, (number) $84, (number) $83, (number) $82, (number) $82, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $81, (number) $82, (number) $82, (number) $83, (number) $84, (number) $85, (number) $86, (number) $87, (number) $89, (number) $8a, (number) $8c, (number) $8e, (number) $90, (number) $92, (number) $94, (number) $96, (number) $98, (number) $9b, (number) $9d, (number) $a0, (number) $a3, (number) $a6, (number) $a9, (number) $ac, (number) $af, (number) $b2, (number) $b6, (number) $b9, (number) $bd, (number) $c0, (number) $c4, (number) $c8, (number) $cb, (number) $cf, (number) $d3, (number) $d7, (number) $db, (number) $df, (number) $e3, (number) $e7, (number) $eb, (number) $ef, (number) $f4, (number) $f8, (number) $fc }
|
||||
(signed byte*) sin8s_gen::sintab#1 ← (signed byte[$c0]) main::sintab2
|
||||
(word) sin8s_gen::wavelength#0 ← (word) main::wavelength
|
||||
(signed byte*) sin8s_gen::sintab#1 ← (signed byte[$c0]) sintab2
|
||||
(word) sin8s_gen::wavelength#0 ← (word) wavelength
|
||||
call sin8s_gen
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
@ -673,17 +677,17 @@ main::@4: scope:[main] from main::@3
|
||||
(byte) main::i#0 ← (byte) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@4 main::@6
|
||||
(byte*) print_line_cursor#16 ← phi( main::@4/(byte*) print_line_cursor#3 main::@6/(byte*) print_line_cursor#11 )
|
||||
(byte*) print_line_cursor#17 ← phi( main::@4/(byte*) print_line_cursor#3 main::@6/(byte*) print_line_cursor#11 )
|
||||
(byte*) print_char_cursor#42 ← phi( main::@4/(byte*) print_char_cursor#14 main::@6/(byte*) print_char_cursor#16 )
|
||||
(byte) main::i#2 ← phi( main::@4/(byte) main::i#0 main::@6/(byte) main::i#1 )
|
||||
(signed byte~) main::$2 ← ((signed byte)) *((byte[]) main::sintabref + (byte) main::i#2)
|
||||
(signed byte~) main::$3 ← *((signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte~) main::$2
|
||||
(signed byte~) main::$2 ← ((signed byte)) *((byte[]) sintabref + (byte) main::i#2)
|
||||
(signed byte~) main::$3 ← *((signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte~) main::$2
|
||||
(signed byte) main::sb#0 ← (signed byte~) main::$3
|
||||
(signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0
|
||||
call print_sbyte
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@1
|
||||
(byte*) print_line_cursor#14 ← phi( main::@1/(byte*) print_line_cursor#16 )
|
||||
(byte*) print_line_cursor#14 ← phi( main::@1/(byte*) print_line_cursor#17 )
|
||||
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
|
||||
(byte*) print_char_cursor#32 ← phi( main::@1/(byte*) print_char_cursor#6 )
|
||||
(byte*) print_char_cursor#15 ← (byte*) print_char_cursor#32
|
||||
@ -706,10 +710,10 @@ main::@return: scope:[main] from main::@6
|
||||
(byte*) print_char_cursor#17 ← (byte*) print_char_cursor#34
|
||||
return
|
||||
to:@return
|
||||
@57: scope:[] from @49
|
||||
(byte*) print_screen#5 ← phi( @49/(byte*) print_screen#6 )
|
||||
(byte*) print_char_cursor#43 ← phi( @49/(byte*) print_char_cursor#47 )
|
||||
(byte*) print_line_cursor#12 ← phi( @49/(byte*) print_line_cursor#15 )
|
||||
@57: scope:[] from @56
|
||||
(byte*) print_screen#5 ← phi( @56/(byte*) print_screen#6 )
|
||||
(byte*) print_char_cursor#43 ← phi( @56/(byte*) print_char_cursor#47 )
|
||||
(byte*) print_line_cursor#12 ← phi( @56/(byte*) print_line_cursor#15 )
|
||||
call main
|
||||
to:@58
|
||||
@58: scope:[] from @57
|
||||
@ -725,6 +729,7 @@ SYMBOL TABLE SSA
|
||||
(label) @13
|
||||
(label) @32
|
||||
(label) @49
|
||||
(label) @56
|
||||
(label) @57
|
||||
(label) @58
|
||||
(label) @begin
|
||||
@ -842,10 +847,7 @@ SYMBOL TABLE SSA
|
||||
(byte) main::i#4
|
||||
(signed byte) main::sb
|
||||
(signed byte) main::sb#0
|
||||
(signed byte[$c0]) main::sintab2
|
||||
(byte[]) main::sintabref
|
||||
(const string) main::str = (string) " "
|
||||
(word) main::wavelength
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(bool~) memset::$0
|
||||
(bool~) memset::$1
|
||||
@ -1038,6 +1040,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_char_cursor#45
|
||||
(byte*) print_char_cursor#46
|
||||
(byte*) print_char_cursor#47
|
||||
(byte*) print_char_cursor#48
|
||||
(byte*) print_char_cursor#5
|
||||
(byte*) print_char_cursor#6
|
||||
(byte*) print_char_cursor#7
|
||||
@ -1057,6 +1060,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_line_cursor#14
|
||||
(byte*) print_line_cursor#15
|
||||
(byte*) print_line_cursor#16
|
||||
(byte*) print_line_cursor#17
|
||||
(byte*) print_line_cursor#2
|
||||
(byte*) print_line_cursor#3
|
||||
(byte*) print_line_cursor#4
|
||||
@ -1093,6 +1097,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_screen#4
|
||||
(byte*) print_screen#5
|
||||
(byte*) print_screen#6
|
||||
(byte*) print_screen#7
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(bool~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -1245,6 +1250,9 @@ SYMBOL TABLE SSA
|
||||
(word) sin8s_gen::x#2
|
||||
(word) sin8s_gen::x#3
|
||||
(word) sin8s_gen::x#4
|
||||
(signed byte[$c0]) sintab2
|
||||
(byte[]) sintabref
|
||||
(word) wavelength
|
||||
|
||||
Adding number conversion cast (unumber) 0 in (word) divr16u::quotient#0 ← (number) 0
|
||||
Adding number conversion cast (unumber) 1 in (word~) divr16u::$0 ← (word) divr16u::rem#4 << (number) 1
|
||||
@ -1287,9 +1295,9 @@ Adding number conversion cast (unumber) 4 in (byte~) print_byte::$0 ← (byte) p
|
||||
Adding number conversion cast (unumber) $f in (number~) print_byte::$2 ← (byte) print_byte::b#2 & (number) $f
|
||||
Adding number conversion cast (unumber) print_byte::$2 in (number~) print_byte::$2 ← (byte) print_byte::b#2 & (unumber)(number) $f
|
||||
Adding number conversion cast (unumber) $3e8 in (word) memset::num#0 ← (number) $3e8
|
||||
Adding number conversion cast (unumber) $c0 in (word) main::wavelength ← (number) $c0
|
||||
Adding number conversion cast (unumber) $c0 in (word) wavelength ← (number) $c0
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Added casts to value list in (byte[]) main::sintabref ← (byte[]){ (byte)(number) 0, (byte)(number) 4, (byte)(number) 8, (byte)(number) $c, (byte)(number) $11, (byte)(number) $15, (byte)(number) $19, (byte)(number) $1d, (byte)(number) $21, (byte)(number) $25, (byte)(number) $29, (byte)(number) $2d, (byte)(number) $31, (byte)(number) $35, (byte)(number) $38, (byte)(number) $3c, (byte)(number) $40, (byte)(number) $43, (byte)(number) $47, (byte)(number) $4a, (byte)(number) $4e, (byte)(number) $51, (byte)(number) $54, (byte)(number) $57, (byte)(number) $5a, (byte)(number) $5d, (byte)(number) $60, (byte)(number) $63, (byte)(number) $65, (byte)(number) $68, (byte)(number) $6a, (byte)(number) $6c, (byte)(number) $6e, (byte)(number) $70, (byte)(number) $72, (byte)(number) $74, (byte)(number) $76, (byte)(number) $77, (byte)(number) $79, (byte)(number) $7a, (byte)(number) $7b, (byte)(number) $7c, (byte)(number) $7d, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $80, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7d, (byte)(number) $7c, (byte)(number) $7b, (byte)(number) $7a, (byte)(number) $79, (byte)(number) $77, (byte)(number) $76, (byte)(number) $74, (byte)(number) $72, (byte)(number) $70, (byte)(number) $6e, (byte)(number) $6c, (byte)(number) $6a, (byte)(number) $68, (byte)(number) $65, (byte)(number) $63, (byte)(number) $60, (byte)(number) $5d, (byte)(number) $5a, (byte)(number) $57, (byte)(number) $54, (byte)(number) $51, (byte)(number) $4e, (byte)(number) $4a, (byte)(number) $47, (byte)(number) $43, (byte)(number) $40, (byte)(number) $3c, (byte)(number) $38, (byte)(number) $35, (byte)(number) $31, (byte)(number) $2d, (byte)(number) $29, (byte)(number) $25, (byte)(number) $21, (byte)(number) $1d, (byte)(number) $19, (byte)(number) $15, (byte)(number) $11, (byte)(number) $c, (byte)(number) 8, (byte)(number) 4, (byte)(number) 0, (byte)(number) $fc, (byte)(number) $f8, (byte)(number) $f4, (byte)(number) $ef, (byte)(number) $eb, (byte)(number) $e7, (byte)(number) $e3, (byte)(number) $df, (byte)(number) $db, (byte)(number) $d7, (byte)(number) $d3, (byte)(number) $cf, (byte)(number) $cb, (byte)(number) $c8, (byte)(number) $c4, (byte)(number) $c0, (byte)(number) $bd, (byte)(number) $b9, (byte)(number) $b6, (byte)(number) $b2, (byte)(number) $af, (byte)(number) $ac, (byte)(number) $a9, (byte)(number) $a6, (byte)(number) $a3, (byte)(number) $a0, (byte)(number) $9d, (byte)(number) $9b, (byte)(number) $98, (byte)(number) $96, (byte)(number) $94, (byte)(number) $92, (byte)(number) $90, (byte)(number) $8e, (byte)(number) $8c, (byte)(number) $8a, (byte)(number) $89, (byte)(number) $87, (byte)(number) $86, (byte)(number) $85, (byte)(number) $84, (byte)(number) $83, (byte)(number) $82, (byte)(number) $82, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $82, (byte)(number) $82, (byte)(number) $83, (byte)(number) $84, (byte)(number) $85, (byte)(number) $86, (byte)(number) $87, (byte)(number) $89, (byte)(number) $8a, (byte)(number) $8c, (byte)(number) $8e, (byte)(number) $90, (byte)(number) $92, (byte)(number) $94, (byte)(number) $96, (byte)(number) $98, (byte)(number) $9b, (byte)(number) $9d, (byte)(number) $a0, (byte)(number) $a3, (byte)(number) $a6, (byte)(number) $a9, (byte)(number) $ac, (byte)(number) $af, (byte)(number) $b2, (byte)(number) $b6, (byte)(number) $b9, (byte)(number) $bd, (byte)(number) $c0, (byte)(number) $c4, (byte)(number) $c8, (byte)(number) $cb, (byte)(number) $cf, (byte)(number) $d3, (byte)(number) $d7, (byte)(number) $db, (byte)(number) $df, (byte)(number) $e3, (byte)(number) $e7, (byte)(number) $eb, (byte)(number) $ef, (byte)(number) $f4, (byte)(number) $f8, (byte)(number) $fc }
|
||||
Added casts to value list in (byte[]) sintabref ← (byte[]){ (byte)(number) 0, (byte)(number) 4, (byte)(number) 8, (byte)(number) $c, (byte)(number) $11, (byte)(number) $15, (byte)(number) $19, (byte)(number) $1d, (byte)(number) $21, (byte)(number) $25, (byte)(number) $29, (byte)(number) $2d, (byte)(number) $31, (byte)(number) $35, (byte)(number) $38, (byte)(number) $3c, (byte)(number) $40, (byte)(number) $43, (byte)(number) $47, (byte)(number) $4a, (byte)(number) $4e, (byte)(number) $51, (byte)(number) $54, (byte)(number) $57, (byte)(number) $5a, (byte)(number) $5d, (byte)(number) $60, (byte)(number) $63, (byte)(number) $65, (byte)(number) $68, (byte)(number) $6a, (byte)(number) $6c, (byte)(number) $6e, (byte)(number) $70, (byte)(number) $72, (byte)(number) $74, (byte)(number) $76, (byte)(number) $77, (byte)(number) $79, (byte)(number) $7a, (byte)(number) $7b, (byte)(number) $7c, (byte)(number) $7d, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $80, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7f, (byte)(number) $7e, (byte)(number) $7e, (byte)(number) $7d, (byte)(number) $7c, (byte)(number) $7b, (byte)(number) $7a, (byte)(number) $79, (byte)(number) $77, (byte)(number) $76, (byte)(number) $74, (byte)(number) $72, (byte)(number) $70, (byte)(number) $6e, (byte)(number) $6c, (byte)(number) $6a, (byte)(number) $68, (byte)(number) $65, (byte)(number) $63, (byte)(number) $60, (byte)(number) $5d, (byte)(number) $5a, (byte)(number) $57, (byte)(number) $54, (byte)(number) $51, (byte)(number) $4e, (byte)(number) $4a, (byte)(number) $47, (byte)(number) $43, (byte)(number) $40, (byte)(number) $3c, (byte)(number) $38, (byte)(number) $35, (byte)(number) $31, (byte)(number) $2d, (byte)(number) $29, (byte)(number) $25, (byte)(number) $21, (byte)(number) $1d, (byte)(number) $19, (byte)(number) $15, (byte)(number) $11, (byte)(number) $c, (byte)(number) 8, (byte)(number) 4, (byte)(number) 0, (byte)(number) $fc, (byte)(number) $f8, (byte)(number) $f4, (byte)(number) $ef, (byte)(number) $eb, (byte)(number) $e7, (byte)(number) $e3, (byte)(number) $df, (byte)(number) $db, (byte)(number) $d7, (byte)(number) $d3, (byte)(number) $cf, (byte)(number) $cb, (byte)(number) $c8, (byte)(number) $c4, (byte)(number) $c0, (byte)(number) $bd, (byte)(number) $b9, (byte)(number) $b6, (byte)(number) $b2, (byte)(number) $af, (byte)(number) $ac, (byte)(number) $a9, (byte)(number) $a6, (byte)(number) $a3, (byte)(number) $a0, (byte)(number) $9d, (byte)(number) $9b, (byte)(number) $98, (byte)(number) $96, (byte)(number) $94, (byte)(number) $92, (byte)(number) $90, (byte)(number) $8e, (byte)(number) $8c, (byte)(number) $8a, (byte)(number) $89, (byte)(number) $87, (byte)(number) $86, (byte)(number) $85, (byte)(number) $84, (byte)(number) $83, (byte)(number) $82, (byte)(number) $82, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $81, (byte)(number) $82, (byte)(number) $82, (byte)(number) $83, (byte)(number) $84, (byte)(number) $85, (byte)(number) $86, (byte)(number) $87, (byte)(number) $89, (byte)(number) $8a, (byte)(number) $8c, (byte)(number) $8e, (byte)(number) $90, (byte)(number) $92, (byte)(number) $94, (byte)(number) $96, (byte)(number) $98, (byte)(number) $9b, (byte)(number) $9d, (byte)(number) $a0, (byte)(number) $a3, (byte)(number) $a6, (byte)(number) $a9, (byte)(number) $ac, (byte)(number) $af, (byte)(number) $b2, (byte)(number) $b6, (byte)(number) $b9, (byte)(number) $bd, (byte)(number) $c0, (byte)(number) $c4, (byte)(number) $c8, (byte)(number) $cb, (byte)(number) $cf, (byte)(number) $d3, (byte)(number) $d7, (byte)(number) $db, (byte)(number) $df, (byte)(number) $e3, (byte)(number) $e7, (byte)(number) $eb, (byte)(number) $ef, (byte)(number) $f4, (byte)(number) $f8, (byte)(number) $fc }
|
||||
Successful SSA optimization PassNAddInitializerValueListTypeCasts
|
||||
Inlining cast (word) divr16u::quotient#0 ← (unumber)(number) 0
|
||||
Inlining cast (word) divr16u::rem#3 ← (unumber)(number) 0
|
||||
@ -1314,8 +1322,8 @@ Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#2
|
||||
Inlining cast (byte*) print_screen#0 ← (byte*)(number) $400
|
||||
Inlining cast (byte~) print_sbyte::$1 ← (byte)(signed byte) print_sbyte::b#4
|
||||
Inlining cast (word) memset::num#0 ← (unumber)(number) $3e8
|
||||
Inlining cast (word) main::wavelength ← (unumber)(number) $c0
|
||||
Inlining cast (signed byte~) main::$2 ← (signed byte)*((byte[]) main::sintabref + (byte) main::i#2)
|
||||
Inlining cast (word) wavelength ← (unumber)(number) $c0
|
||||
Inlining cast (signed byte~) main::$2 ← (signed byte)*((byte[]) sintabref + (byte) main::i#2)
|
||||
Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 1
|
||||
@ -1670,7 +1678,7 @@ Alias (byte) memset::c#1 = (byte) memset::c#2
|
||||
Alias (byte*) memset::dst#2 = (byte*) memset::dst#3
|
||||
Alias (byte*) memset::end#1 = (byte*) memset::end#2
|
||||
Alias (void*) memset::str#4 = (void*) memset::str#5
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#15 (byte*) print_char_cursor#47 (byte*) print_screen#6 (byte*) print_line_cursor#12 (byte*) print_char_cursor#43 (byte*) print_screen#5
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#16 (byte*) print_char_cursor#48 (byte*) print_screen#7 (byte*) print_line_cursor#15 (byte*) print_char_cursor#47 (byte*) print_screen#6 (byte*) print_line_cursor#12 (byte*) print_char_cursor#43 (byte*) print_screen#5
|
||||
Alias (byte*) print_str::str#2 = (byte*) print_str::str#3
|
||||
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#36 (byte*) print_char_cursor#20 (byte*) print_char_cursor#2
|
||||
Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#38
|
||||
@ -1692,7 +1700,7 @@ Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7
|
||||
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#31
|
||||
Alias (signed byte) main::sb#0 = (signed byte~) main::$3
|
||||
Alias (byte) main::i#2 = (byte) main::i#4 (byte) main::i#3
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#16 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#17 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4
|
||||
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#32
|
||||
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#33 (byte*) print_char_cursor#34 (byte*) print_char_cursor#17
|
||||
Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9
|
||||
@ -1766,9 +1774,9 @@ Simple Condition (bool~) memset::$1 [202] if((word) memset::num#0<=(byte) 0) got
|
||||
Simple Condition (bool~) memset::$4 [212] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
|
||||
Simple Condition (bool~) print_str::$0 [225] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2
|
||||
Simple Condition (bool~) print_sbyte::$0 [235] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
|
||||
Simple Condition (bool~) main::$6 [319] if((byte) main::i#1!=rangelast(0,$bf)) goto main::@1
|
||||
Simple Condition (bool~) main::$6 [320] if((byte) main::i#1!=rangelast(0,$bf)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant right-side identified [294] (signed byte[$c0]) main::sintab2 ← { fill( $c0, 0) }
|
||||
Constant right-side identified [294] (signed byte[$c0]) sintab2 ← { fill( $c0, 0) }
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Identified constant from value list (byte[]) { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
|
||||
Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
@ -1795,17 +1803,17 @@ Constant (const byte) print_char::ch#1 = ' '
|
||||
Constant (const byte[]) print_hextab = $0
|
||||
Constant (const byte) memset::c#0 = ' '
|
||||
Constant (const word) memset::num#0 = $3e8
|
||||
Constant (const word) main::wavelength = $c0
|
||||
Constant (const signed byte[$c0]) main::sintab2 = { fill( $c0, 0) }
|
||||
Constant (const byte[]) main::sintabref = { 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc }
|
||||
Constant (const word) wavelength = $c0
|
||||
Constant (const signed byte[$c0]) sintab2 = { fill( $c0, 0) }
|
||||
Constant (const byte[]) sintabref = { 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc }
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte*) print_str::str#1 = main::str
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const word) div16u::dividend#0 = PI2_u4f12
|
||||
Constant (const byte) mulu8_sel::v2#2 = sin8s::DIV_6
|
||||
Constant (const void*) memset::str#0 = (void*)print_line_cursor#0
|
||||
Constant (const signed byte*) sin8s_gen::sintab#1 = main::sintab2
|
||||
Constant (const word) sin8s_gen::wavelength#0 = main::wavelength
|
||||
Constant (const signed byte*) sin8s_gen::sintab#1 = sintab2
|
||||
Constant (const word) sin8s_gen::wavelength#0 = wavelength
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const word) divr16u::dividend#1 = div16u::dividend#0
|
||||
Constant (const word) div16u::divisor#0 = sin8s_gen::wavelength#0
|
||||
@ -1819,8 +1827,8 @@ if() condition always false - eliminating [202] if((const word) memset::num#0<=(
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Resolved ranged next value [23] divr16u::i#1 ← ++ divr16u::i#2 to ++
|
||||
Resolved ranged comparison value [25] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10
|
||||
Resolved ranged next value [317] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [319] if(main::i#1!=rangelast(0,$bf)) goto main::@1 to (number) $c0
|
||||
Resolved ranged next value [318] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [320] if(main::i#1!=rangelast(0,$bf)) goto main::@1 to (number) $c0
|
||||
Eliminating unused constant (const void*) memset::return#2
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Adding number conversion cast (unumber) $10 in if((byte) divr16u::i#1!=(number) $10) goto divr16u::@1
|
||||
@ -1838,7 +1846,7 @@ Constant (const byte*) memset::end#0 = memset::$2+memset::num#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Inlining Noop Cast [80] (signed byte) sin8s::sinx#0 ← (signed byte)(byte) sin8s::usinx#4 keeping sin8s::usinx#4
|
||||
Inlining Noop Cast [84] (signed byte~) sin8s::$21 ← (signed byte)(byte) sin8s::usinx#4 keeping sin8s::usinx#4
|
||||
Inlining Noop Cast [131] (signed byte~) main::$2 ← (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2) keeping *(main::sintabref + main::i#2)
|
||||
Inlining Noop Cast [131] (signed byte~) main::$2 ← (signed byte)*((const byte[]) sintabref + (byte) main::i#2) keeping *(sintabref + main::i#2)
|
||||
Successful SSA optimization Pass2NopCastInlining
|
||||
Inlining constant with var siblings (const word) divr16u::quotient#0
|
||||
Inlining constant with var siblings (const byte) divr16u::i#0
|
||||
@ -1869,12 +1877,12 @@ Constant inlined sin8s::isUpper#0 = (byte) 0
|
||||
Constant inlined sin8s_gen::x#0 = (byte) 0
|
||||
Constant inlined memset::$2 = (byte*)(const void*) memset::str#0
|
||||
Constant inlined divr16u::quotient#0 = (byte) 0
|
||||
Constant inlined div16u::divisor#0 = (const word) main::wavelength
|
||||
Constant inlined div16u::divisor#0 = (const word) wavelength
|
||||
Constant inlined main::i#0 = (byte) 0
|
||||
Constant inlined mulu8_sel::select#0 = (byte) 0
|
||||
Constant inlined div16u::dividend#0 = (const word) PI2_u4f12
|
||||
Constant inlined mulu8_sel::select#2 = (byte) 1
|
||||
Constant inlined divr16u::divisor#0 = (const word) main::wavelength
|
||||
Constant inlined divr16u::divisor#0 = (const word) wavelength
|
||||
Constant inlined mulu8_sel::select#1 = (byte) 1
|
||||
Constant inlined mulu8_sel::select#4 = (byte) 0
|
||||
Constant inlined mulu8_sel::select#3 = (byte) 0
|
||||
@ -1883,8 +1891,8 @@ Constant inlined mulu8_sel::v2#2 = (const byte) sin8s::DIV_6
|
||||
Constant inlined mul8u::res#0 = (byte) 0
|
||||
Constant inlined print_char::ch#1 = (byte) ' '
|
||||
Constant inlined print_char::ch#0 = (byte) '-'
|
||||
Constant inlined sin8s_gen::sintab#1 = (const signed byte[$c0]) main::sintab2
|
||||
Constant inlined sin8s_gen::wavelength#0 = (const word) main::wavelength
|
||||
Constant inlined sin8s_gen::sintab#1 = (const signed byte[$c0]) sintab2
|
||||
Constant inlined sin8s_gen::wavelength#0 = (const word) wavelength
|
||||
Constant inlined memset::dst#0 = (byte*)(const void*) memset::str#0
|
||||
Constant inlined print_str::str#1 = (const string) main::str
|
||||
Constant inlined sin8s_gen::i#0 = (byte) 0
|
||||
@ -1903,6 +1911,7 @@ Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @13
|
||||
Adding NOP phi() at start of @32
|
||||
Adding NOP phi() at start of @49
|
||||
Adding NOP phi() at start of @56
|
||||
Adding NOP phi() at start of @57
|
||||
Adding NOP phi() at start of @58
|
||||
Adding NOP phi() at start of @end
|
||||
@ -1923,71 +1932,72 @@ Adding NOP phi() at start of div16u
|
||||
Adding NOP phi() at start of divr16u
|
||||
Adding NOP phi() at start of divr16u::@6
|
||||
CALL GRAPH
|
||||
Calls in [] to main:5
|
||||
Calls in [main] to sin8s_gen:9 print_cls:11 print_sbyte:16 print_str:18
|
||||
Calls in [print_sbyte] to print_char:35 print_byte:39 print_char:43
|
||||
Calls in [print_byte] to print_char:54 print_char:59
|
||||
Calls in [print_cls] to memset:63
|
||||
Calls in [sin8s_gen] to div16u:76 sin8s:83
|
||||
Calls in [sin8s] to mulu8_sel:107 mulu8_sel:114 mulu8_sel:119 mulu8_sel:127 mulu8_sel:134
|
||||
Calls in [mulu8_sel] to mul8u:155
|
||||
Calls in [div16u] to divr16u:179
|
||||
Calls in [] to main:6
|
||||
Calls in [main] to sin8s_gen:10 print_cls:12 print_sbyte:17 print_str:19
|
||||
Calls in [print_sbyte] to print_char:36 print_byte:40 print_char:44
|
||||
Calls in [print_byte] to print_char:55 print_char:60
|
||||
Calls in [print_cls] to memset:64
|
||||
Calls in [sin8s_gen] to div16u:77 sin8s:84
|
||||
Calls in [sin8s] to mulu8_sel:108 mulu8_sel:115 mulu8_sel:120 mulu8_sel:128 mulu8_sel:135
|
||||
Calls in [mulu8_sel] to mul8u:156
|
||||
Calls in [div16u] to divr16u:180
|
||||
|
||||
Created 30 initial phi equivalence classes
|
||||
Coalesced [22] main::i#5 ← main::i#1
|
||||
Coalesced [23] print_char_cursor#54 ← print_char_cursor#19
|
||||
Coalesced [24] print_char_cursor#48 ← print_char_cursor#10
|
||||
Coalesced [31] print_str::str#5 ← print_str::str#0
|
||||
Coalesced [32] print_char_cursor#49 ← print_char_cursor#1
|
||||
Coalesced [34] print_char_cursor#53 ← print_char_cursor#42
|
||||
Coalesced [36] print_sbyte::b#9 ← print_sbyte::b#1
|
||||
Coalesced (already) [42] print_char_cursor#52 ← print_char_cursor#42
|
||||
Coalesced [45] print_sbyte::b#8 ← print_sbyte::b#0
|
||||
Coalesced [52] print_char::ch#5 ← print_char::ch#2
|
||||
Coalesced (already) [53] print_char_cursor#50 ← print_char_cursor#10
|
||||
Coalesced [57] print_char::ch#6 ← print_char::ch#3
|
||||
Coalesced (already) [58] print_char_cursor#51 ← print_char_cursor#10
|
||||
Coalesced [74] memset::dst#4 ← memset::dst#1
|
||||
Coalesced [90] sin8s_gen::i#5 ← sin8s_gen::i#1
|
||||
Coalesced [91] sin8s_gen::x#5 ← sin8s_gen::x#1
|
||||
Coalesced [92] sin8s_gen::sintab#7 ← sin8s_gen::sintab#0
|
||||
Coalesced [95] sin8s::x#9 ← sin8s::x#1
|
||||
Coalesced [99] sin8s::x#11 ← sin8s::x#2
|
||||
Coalesced [105] mulu8_sel::v1#10 ← mulu8_sel::v1#0
|
||||
Coalesced [106] mulu8_sel::v2#9 ← mulu8_sel::v2#0
|
||||
Coalesced [112] mulu8_sel::v1#6 ← mulu8_sel::v1#1
|
||||
Coalesced [113] mulu8_sel::v2#6 ← mulu8_sel::v2#1
|
||||
Coalesced [118] mulu8_sel::v1#7 ← mulu8_sel::v1#2
|
||||
Coalesced [125] mulu8_sel::v1#8 ← mulu8_sel::v1#3
|
||||
Coalesced [126] mulu8_sel::v2#7 ← mulu8_sel::v2#3
|
||||
Coalesced [132] mulu8_sel::v1#9 ← mulu8_sel::v1#4
|
||||
Coalesced [133] mulu8_sel::v2#8 ← mulu8_sel::v2#4
|
||||
Coalesced [141] sin8s::usinx#9 ← sin8s::usinx#2
|
||||
Coalesced [145] sin8s::return#6 ← sin8s::sinx#1
|
||||
Coalesced [149] sin8s::usinx#8 ← sin8s::usinx#1
|
||||
Coalesced [150] sin8s::x#10 ← sin8s::x#4
|
||||
Coalesced [151] sin8s::x#8 ← sin8s::x#0
|
||||
Coalesced [161] mul8u::a#7 ← mul8u::a#1
|
||||
Coalesced [162] mul8u::mb#6 ← mul8u::b#0
|
||||
Coalesced [170] mul8u::res#9 ← mul8u::res#1
|
||||
Coalesced [174] mul8u::a#8 ← mul8u::a#0
|
||||
Coalesced [175] mul8u::res#7 ← mul8u::res#6
|
||||
Coalesced [176] mul8u::mb#7 ← mul8u::mb#1
|
||||
Coalesced (already) [177] mul8u::res#8 ← mul8u::res#2
|
||||
Coalesced [190] divr16u::rem#12 ← divr16u::rem#1
|
||||
Coalesced [197] divr16u::rem#14 ← divr16u::rem#2
|
||||
Coalesced [198] divr16u::return#6 ← divr16u::quotient#2
|
||||
Coalesced [204] divr16u::rem#10 ← divr16u::rem#9
|
||||
Coalesced [205] divr16u::dividend#8 ← divr16u::dividend#0
|
||||
Coalesced [206] divr16u::quotient#9 ← divr16u::return#0
|
||||
Coalesced [207] divr16u::i#7 ← divr16u::i#1
|
||||
Coalesced [208] divr16u::rem#13 ← divr16u::rem#5
|
||||
Coalesced [209] divr16u::return#5 ← divr16u::quotient#1
|
||||
Coalesced [210] divr16u::rem#11 ← divr16u::rem#0
|
||||
Coalesced [23] main::i#5 ← main::i#1
|
||||
Coalesced [24] print_char_cursor#55 ← print_char_cursor#19
|
||||
Coalesced [25] print_char_cursor#49 ← print_char_cursor#10
|
||||
Coalesced [32] print_str::str#5 ← print_str::str#0
|
||||
Coalesced [33] print_char_cursor#50 ← print_char_cursor#1
|
||||
Coalesced [35] print_char_cursor#54 ← print_char_cursor#42
|
||||
Coalesced [37] print_sbyte::b#9 ← print_sbyte::b#1
|
||||
Coalesced (already) [43] print_char_cursor#53 ← print_char_cursor#42
|
||||
Coalesced [46] print_sbyte::b#8 ← print_sbyte::b#0
|
||||
Coalesced [53] print_char::ch#5 ← print_char::ch#2
|
||||
Coalesced (already) [54] print_char_cursor#51 ← print_char_cursor#10
|
||||
Coalesced [58] print_char::ch#6 ← print_char::ch#3
|
||||
Coalesced (already) [59] print_char_cursor#52 ← print_char_cursor#10
|
||||
Coalesced [75] memset::dst#4 ← memset::dst#1
|
||||
Coalesced [91] sin8s_gen::i#5 ← sin8s_gen::i#1
|
||||
Coalesced [92] sin8s_gen::x#5 ← sin8s_gen::x#1
|
||||
Coalesced [93] sin8s_gen::sintab#7 ← sin8s_gen::sintab#0
|
||||
Coalesced [96] sin8s::x#9 ← sin8s::x#1
|
||||
Coalesced [100] sin8s::x#11 ← sin8s::x#2
|
||||
Coalesced [106] mulu8_sel::v1#10 ← mulu8_sel::v1#0
|
||||
Coalesced [107] mulu8_sel::v2#9 ← mulu8_sel::v2#0
|
||||
Coalesced [113] mulu8_sel::v1#6 ← mulu8_sel::v1#1
|
||||
Coalesced [114] mulu8_sel::v2#6 ← mulu8_sel::v2#1
|
||||
Coalesced [119] mulu8_sel::v1#7 ← mulu8_sel::v1#2
|
||||
Coalesced [126] mulu8_sel::v1#8 ← mulu8_sel::v1#3
|
||||
Coalesced [127] mulu8_sel::v2#7 ← mulu8_sel::v2#3
|
||||
Coalesced [133] mulu8_sel::v1#9 ← mulu8_sel::v1#4
|
||||
Coalesced [134] mulu8_sel::v2#8 ← mulu8_sel::v2#4
|
||||
Coalesced [142] sin8s::usinx#9 ← sin8s::usinx#2
|
||||
Coalesced [146] sin8s::return#6 ← sin8s::sinx#1
|
||||
Coalesced [150] sin8s::usinx#8 ← sin8s::usinx#1
|
||||
Coalesced [151] sin8s::x#10 ← sin8s::x#4
|
||||
Coalesced [152] sin8s::x#8 ← sin8s::x#0
|
||||
Coalesced [162] mul8u::a#7 ← mul8u::a#1
|
||||
Coalesced [163] mul8u::mb#6 ← mul8u::b#0
|
||||
Coalesced [171] mul8u::res#9 ← mul8u::res#1
|
||||
Coalesced [175] mul8u::a#8 ← mul8u::a#0
|
||||
Coalesced [176] mul8u::res#7 ← mul8u::res#6
|
||||
Coalesced [177] mul8u::mb#7 ← mul8u::mb#1
|
||||
Coalesced (already) [178] mul8u::res#8 ← mul8u::res#2
|
||||
Coalesced [191] divr16u::rem#12 ← divr16u::rem#1
|
||||
Coalesced [198] divr16u::rem#14 ← divr16u::rem#2
|
||||
Coalesced [199] divr16u::return#6 ← divr16u::quotient#2
|
||||
Coalesced [205] divr16u::rem#10 ← divr16u::rem#9
|
||||
Coalesced [206] divr16u::dividend#8 ← divr16u::dividend#0
|
||||
Coalesced [207] divr16u::quotient#9 ← divr16u::return#0
|
||||
Coalesced [208] divr16u::i#7 ← divr16u::i#1
|
||||
Coalesced [209] divr16u::rem#13 ← divr16u::rem#5
|
||||
Coalesced [210] divr16u::return#5 ← divr16u::quotient#1
|
||||
Coalesced [211] divr16u::rem#11 ← divr16u::rem#0
|
||||
Coalesced down to 23 phi equivalence classes
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @32
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) @56
|
||||
Culled Empty Block (label) @58
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@7
|
||||
@ -2064,7 +2074,7 @@ main::@2: scope:[main] from main
|
||||
main::@1: scope:[main] from main::@2 main::@4
|
||||
[8] (byte*) print_char_cursor#42 ← phi( main::@2/(const byte*) print_line_cursor#0 main::@4/(byte*) print_char_cursor#19 )
|
||||
[8] (byte) main::i#2 ← phi( main::@2/(byte) 0 main::@4/(byte) main::i#1 )
|
||||
[9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2)
|
||||
[9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2)
|
||||
[10] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0
|
||||
[11] call print_sbyte
|
||||
to:main::@3
|
||||
@ -2183,10 +2193,10 @@ sin8s_gen::@3: scope:[sin8s_gen] from sin8s_gen
|
||||
[57] (word) sin8s_gen::step#0 ← (word) div16u::return#2
|
||||
to:sin8s_gen::@1
|
||||
sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen::@3 sin8s_gen::@4
|
||||
[58] (signed byte*) sin8s_gen::sintab#2 ← phi( sin8s_gen::@3/(const signed byte[$c0]) main::sintab2 sin8s_gen::@4/(signed byte*) sin8s_gen::sintab#0 )
|
||||
[58] (signed byte*) sin8s_gen::sintab#2 ← phi( sin8s_gen::@3/(const signed byte[$c0]) sintab2 sin8s_gen::@4/(signed byte*) sin8s_gen::sintab#0 )
|
||||
[58] (word) sin8s_gen::x#2 ← phi( sin8s_gen::@3/(byte) 0 sin8s_gen::@4/(word) sin8s_gen::x#1 )
|
||||
[58] (word) sin8s_gen::i#2 ← phi( sin8s_gen::@3/(byte) 0 sin8s_gen::@4/(word) sin8s_gen::i#1 )
|
||||
[59] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2
|
||||
[59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2
|
||||
to:sin8s_gen::@return
|
||||
sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@1
|
||||
[60] return
|
||||
@ -2361,11 +2371,11 @@ divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[143] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[144] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
|
||||
[145] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
||||
[146] if((word) divr16u::rem#5<(const word) main::wavelength) goto divr16u::@3
|
||||
[146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[147] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength
|
||||
[148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[149] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
@ -2728,6 +2738,7 @@ Target platform is c64basic / MOS6502X
|
||||
// PI/2 in u[4.12] format
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label print_line_cursor = $400
|
||||
.const wavelength = $c0
|
||||
.label print_char_cursor = 7
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -2747,7 +2758,6 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label wavelength = $c0
|
||||
.label sb = $26
|
||||
.label i = 2
|
||||
// [5] call sin8s_gen
|
||||
@ -2781,7 +2791,7 @@ main: {
|
||||
jmp __b1
|
||||
// main::@1
|
||||
__b1:
|
||||
// [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2_minus_pbsc2_derefidx_vbuz2
|
||||
// [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2) -- vbsz1=pbsc1_derefidx_vbuz2_minus_pbsc2_derefidx_vbuz2
|
||||
ldy.z i
|
||||
lda sintab2,y
|
||||
sec
|
||||
@ -2817,9 +2827,6 @@ main: {
|
||||
rts
|
||||
str: .text " "
|
||||
.byte 0
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
}
|
||||
// print_str
|
||||
// Print a zero-terminated string
|
||||
@ -3088,10 +3095,10 @@ sin8s_gen: {
|
||||
sta.z step+1
|
||||
// [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1]
|
||||
__b1_from___b3:
|
||||
// [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[$c0]) main::sintab2 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- pbsz1=pbsc1
|
||||
lda #<main.sintab2
|
||||
// [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[$c0]) sintab2 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- pbsz1=pbsc1
|
||||
lda #<sintab2
|
||||
sta.z sintab
|
||||
lda #>main.sintab2
|
||||
lda #>sintab2
|
||||
sta.z sintab+1
|
||||
// [58] phi (word) sin8s_gen::x#2 = (byte) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- vwuz1=vbuc1
|
||||
lda #<0
|
||||
@ -3107,13 +3114,13 @@ sin8s_gen: {
|
||||
// u[4.12]
|
||||
// sin8s_gen::@1
|
||||
__b1:
|
||||
// [59] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 -- vwuz1_lt_vwuc1_then_la1
|
||||
// [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 -- vwuz1_lt_vwuc1_then_la1
|
||||
lda.z i+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b2
|
||||
bne !+
|
||||
lda.z i
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b2
|
||||
!:
|
||||
jmp __breturn
|
||||
@ -3698,13 +3705,13 @@ divr16u: {
|
||||
// [145] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
||||
asl.z quotient
|
||||
rol.z quotient+1
|
||||
// [146] if((word) divr16u::rem#5<(const word) main::wavelength) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
||||
// [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
||||
lda.z rem+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b3_from___b2
|
||||
bne !+
|
||||
lda.z rem
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b3_from___b2
|
||||
!:
|
||||
jmp __b5
|
||||
@ -3715,13 +3722,13 @@ divr16u: {
|
||||
bne !+
|
||||
inc.z quotient+1
|
||||
!:
|
||||
// [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength -- vwuz1=vwuz1_minus_vwuc1
|
||||
// [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength -- vwuz1=vwuz1_minus_vwuc1
|
||||
lda.z rem
|
||||
sec
|
||||
sbc #<main.wavelength
|
||||
sbc #<wavelength
|
||||
sta.z rem
|
||||
lda.z rem+1
|
||||
sbc #>main.wavelength
|
||||
sbc #>wavelength
|
||||
sta.z rem+1
|
||||
// [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
||||
__b3_from___b2:
|
||||
@ -3745,9 +3752,12 @@ divr16u: {
|
||||
}
|
||||
// File Data
|
||||
print_hextab: .text "0123456789abcdef"
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] ) always clobbers reg byte a
|
||||
Statement [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Statement [19] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
@ -3763,7 +3773,7 @@ Statement [50] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memse
|
||||
Statement [52] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [56] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a
|
||||
Statement [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a
|
||||
Statement [59] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a
|
||||
Statement [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a
|
||||
Statement [61] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a
|
||||
Statement [65] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte y
|
||||
Statement [67] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a
|
||||
@ -3793,9 +3803,9 @@ Statement [134] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::r
|
||||
Statement [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:37 [ divr16u::i#2 divr16u::i#1 ]
|
||||
Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a
|
||||
Statement [146] if((word) divr16u::rem#5<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
|
||||
Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
|
||||
Statement [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] ) always clobbers reg byte a
|
||||
Statement [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
|
||||
Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
|
||||
Statement [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2) [ main::i#2 print_char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#42 main::sb#0 ] ) always clobbers reg byte a
|
||||
Statement [19] if((byte) 0!=*((byte*) print_str::str#2)) goto print_str::@2 [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [21] *((byte*) print_char_cursor#19) ← *((byte*) print_str::str#2) [ print_char_cursor#19 print_str::str#2 ] ( main:2::print_str:13 [ main::i#2 print_char_cursor#19 print_str::str#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [33] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:11 [ main::i#2 print_char_cursor#10 print_sbyte::b#0 ] ) always clobbers reg byte a
|
||||
@ -3806,7 +3816,7 @@ Statement [50] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memse
|
||||
Statement [52] *((byte*) memset::dst#2) ← (const byte) memset::c#0 [ memset::dst#2 ] ( main:2::print_cls:7::memset:46 [ memset::dst#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [56] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a
|
||||
Statement [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a
|
||||
Statement [59] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a
|
||||
Statement [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte a
|
||||
Statement [61] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s::x#0 ] ) always clobbers reg byte a
|
||||
Statement [65] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$2 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#2 sin8s_gen::sintab#2 ] ) always clobbers reg byte y
|
||||
Statement [67] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a
|
||||
@ -3830,8 +3840,8 @@ Statement [133] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u:
|
||||
Statement [134] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:55 [ div16u::return#0 ] ) always clobbers reg byte a
|
||||
Statement [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a
|
||||
Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a
|
||||
Statement [146] if((word) divr16u::rem#5<(const word) main::wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
|
||||
Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
|
||||
Statement [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
|
||||
Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[2]:3 [ print_str::str#2 print_str::str#0 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] : zp[1]:5 , reg byte a , reg byte x ,
|
||||
@ -3996,6 +4006,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
// PI/2 in u[4.12] format
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label print_line_cursor = $400
|
||||
.const wavelength = $c0
|
||||
.label print_char_cursor = 2
|
||||
// @begin
|
||||
__bbegin:
|
||||
@ -4015,7 +4026,6 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.label wavelength = $c0
|
||||
// [5] call sin8s_gen
|
||||
// [54] phi from main to sin8s_gen [phi:main->sin8s_gen]
|
||||
sin8s_gen_from_main:
|
||||
@ -4046,7 +4056,7 @@ main: {
|
||||
jmp __b1
|
||||
// main::@1
|
||||
__b1:
|
||||
// [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
|
||||
// [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
|
||||
lda sintab2,x
|
||||
sec
|
||||
sbc sintabref,x
|
||||
@ -4078,9 +4088,6 @@ main: {
|
||||
rts
|
||||
str: .text " "
|
||||
.byte 0
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
}
|
||||
// print_str
|
||||
// Print a zero-terminated string
|
||||
@ -4328,10 +4335,10 @@ sin8s_gen: {
|
||||
// [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2
|
||||
// [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1]
|
||||
__b1_from___b3:
|
||||
// [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[$c0]) main::sintab2 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- pbsz1=pbsc1
|
||||
lda #<main.sintab2
|
||||
// [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[$c0]) sintab2 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- pbsz1=pbsc1
|
||||
lda #<sintab2
|
||||
sta.z sintab
|
||||
lda #>main.sintab2
|
||||
lda #>sintab2
|
||||
sta.z sintab+1
|
||||
// [58] phi (word) sin8s_gen::x#2 = (byte) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- vwuz1=vbuc1
|
||||
lda #<0
|
||||
@ -4347,13 +4354,13 @@ sin8s_gen: {
|
||||
// u[4.12]
|
||||
// sin8s_gen::@1
|
||||
__b1:
|
||||
// [59] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 -- vwuz1_lt_vwuc1_then_la1
|
||||
// [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 -- vwuz1_lt_vwuc1_then_la1
|
||||
lda.z i+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b2
|
||||
bne !+
|
||||
lda.z i
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b2
|
||||
!:
|
||||
jmp __breturn
|
||||
@ -4838,13 +4845,13 @@ divr16u: {
|
||||
// [145] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
||||
asl.z quotient
|
||||
rol.z quotient+1
|
||||
// [146] if((word) divr16u::rem#5<(const word) main::wavelength) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
||||
// [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
||||
lda.z rem+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b3_from___b2
|
||||
bne !+
|
||||
lda.z rem
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b3_from___b2
|
||||
!:
|
||||
jmp __b5
|
||||
@ -4855,13 +4862,13 @@ divr16u: {
|
||||
bne !+
|
||||
inc.z quotient+1
|
||||
!:
|
||||
// [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength -- vwuz1=vwuz1_minus_vwuc1
|
||||
// [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength -- vwuz1=vwuz1_minus_vwuc1
|
||||
lda.z rem
|
||||
sec
|
||||
sbc #<main.wavelength
|
||||
sbc #<wavelength
|
||||
sta.z rem
|
||||
lda.z rem+1
|
||||
sbc #>main.wavelength
|
||||
sbc #>wavelength
|
||||
sta.z rem+1
|
||||
// [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
||||
__b3_from___b2:
|
||||
@ -4884,6 +4891,9 @@ divr16u: {
|
||||
}
|
||||
// File Data
|
||||
print_hextab: .text "0123456789abcdef"
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp __b1
|
||||
@ -5129,10 +5139,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::i#2 reg byte x 5.5
|
||||
(signed byte) main::sb
|
||||
(signed byte) main::sb#0 reg byte a 22.0
|
||||
(const signed byte[$c0]) main::sintab2 = { fill( $c0, 0) }
|
||||
(const byte[]) main::sintabref = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
|
||||
(const string) main::str = (string) " "
|
||||
(const word) main::wavelength = (byte) $c0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
@ -5310,6 +5317,9 @@ FINAL SYMBOL TABLE
|
||||
(word) sin8s_gen::x
|
||||
(word) sin8s_gen::x#1 x zp[2]:10 11.0
|
||||
(word) sin8s_gen::x#2 x zp[2]:10 4.125
|
||||
(const signed byte[$c0]) sintab2 = { fill( $c0, 0) }
|
||||
(const byte[]) sintabref = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
|
||||
(const word) wavelength = (byte) $c0
|
||||
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
@ -5368,6 +5378,7 @@ Score: 16797
|
||||
// PI/2 in u[4.12] format
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label print_line_cursor = $400
|
||||
.const wavelength = $c0
|
||||
.label print_char_cursor = 2
|
||||
// @begin
|
||||
// [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -5378,7 +5389,6 @@ Score: 16797
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.label wavelength = $c0
|
||||
// sin8s_gen(sintab2, wavelength)
|
||||
// [5] call sin8s_gen
|
||||
// [54] phi from main to sin8s_gen [phi:main->sin8s_gen]
|
||||
@ -5403,7 +5413,7 @@ main: {
|
||||
// main::@1
|
||||
__b1:
|
||||
// sb = sintab2[i]-(signed byte)sintabref[i]
|
||||
// [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) main::sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
|
||||
// [9] (signed byte) main::sb#0 ← *((const signed byte[$c0]) sintab2 + (byte) main::i#2) - (signed byte)*((const byte[]) sintabref + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuxx_minus_pbsc2_derefidx_vbuxx
|
||||
lda sintab2,x
|
||||
sec
|
||||
sbc sintabref,x
|
||||
@ -5431,9 +5441,6 @@ main: {
|
||||
rts
|
||||
str: .text " "
|
||||
.byte 0
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
}
|
||||
// print_str
|
||||
// Print a zero-terminated string
|
||||
@ -5668,10 +5675,10 @@ sin8s_gen: {
|
||||
// step = div16u(PI2_u4f12, wavelength)
|
||||
// [57] (word) sin8s_gen::step#0 ← (word) div16u::return#2
|
||||
// [58] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1]
|
||||
// [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[$c0]) main::sintab2 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- pbsz1=pbsc1
|
||||
lda #<main.sintab2
|
||||
// [58] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[$c0]) sintab2 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- pbsz1=pbsc1
|
||||
lda #<sintab2
|
||||
sta.z sintab
|
||||
lda #>main.sintab2
|
||||
lda #>sintab2
|
||||
sta.z sintab+1
|
||||
// [58] phi (word) sin8s_gen::x#2 = (byte) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- vwuz1=vbuc1
|
||||
lda #<0
|
||||
@ -5684,13 +5691,13 @@ sin8s_gen: {
|
||||
// sin8s_gen::@1
|
||||
__b1:
|
||||
// for( word i=0; i<wavelength; i++)
|
||||
// [59] if((word) sin8s_gen::i#2<(const word) main::wavelength) goto sin8s_gen::@2 -- vwuz1_lt_vwuc1_then_la1
|
||||
// [59] if((word) sin8s_gen::i#2<(const word) wavelength) goto sin8s_gen::@2 -- vwuz1_lt_vwuc1_then_la1
|
||||
lda.z i+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b2
|
||||
bne !+
|
||||
lda.z i
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b2
|
||||
!:
|
||||
// sin8s_gen::@return
|
||||
@ -6158,13 +6165,13 @@ divr16u: {
|
||||
asl.z quotient
|
||||
rol.z quotient+1
|
||||
// if(rem>=divisor)
|
||||
// [146] if((word) divr16u::rem#5<(const word) main::wavelength) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
||||
// [146] if((word) divr16u::rem#5<(const word) wavelength) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
||||
lda.z rem+1
|
||||
cmp #>main.wavelength
|
||||
cmp #>wavelength
|
||||
bcc __b3
|
||||
bne !+
|
||||
lda.z rem
|
||||
cmp #<main.wavelength
|
||||
cmp #<wavelength
|
||||
bcc __b3
|
||||
!:
|
||||
// divr16u::@5
|
||||
@ -6175,13 +6182,13 @@ divr16u: {
|
||||
inc.z quotient+1
|
||||
!:
|
||||
// rem = rem - divisor
|
||||
// [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength -- vwuz1=vwuz1_minus_vwuc1
|
||||
// [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) wavelength -- vwuz1=vwuz1_minus_vwuc1
|
||||
lda.z rem
|
||||
sec
|
||||
sbc #<main.wavelength
|
||||
sbc #<wavelength
|
||||
sta.z rem
|
||||
lda.z rem+1
|
||||
sbc #>main.wavelength
|
||||
sbc #>wavelength
|
||||
sta.z rem+1
|
||||
// [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
||||
// [149] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
||||
@ -6201,4 +6208,7 @@ divr16u: {
|
||||
}
|
||||
// File Data
|
||||
print_hextab: .text "0123456789abcdef"
|
||||
sintab2: .fill $c0, 0
|
||||
// .fill $c0, round(127.5*sin(i*2*PI/$c0))
|
||||
sintabref: .byte 0, 4, 8, $c, $11, $15, $19, $1d, $21, $25, $29, $2d, $31, $35, $38, $3c, $40, $43, $47, $4a, $4e, $51, $54, $57, $5a, $5d, $60, $63, $65, $68, $6a, $6c, $6e, $70, $72, $74, $76, $77, $79, $7a, $7b, $7c, $7d, $7e, $7e, $7f, $7f, $7f, $80, $7f, $7f, $7f, $7e, $7e, $7d, $7c, $7b, $7a, $79, $77, $76, $74, $72, $70, $6e, $6c, $6a, $68, $65, $63, $60, $5d, $5a, $57, $54, $51, $4e, $4a, $47, $43, $40, $3c, $38, $35, $31, $2d, $29, $25, $21, $1d, $19, $15, $11, $c, 8, 4, 0, $fc, $f8, $f4, $ef, $eb, $e7, $e3, $df, $db, $d7, $d3, $cf, $cb, $c8, $c4, $c0, $bd, $b9, $b6, $b2, $af, $ac, $a9, $a6, $a3, $a0, $9d, $9b, $98, $96, $94, $92, $90, $8e, $8c, $8a, $89, $87, $86, $85, $84, $83, $82, $82, $81, $81, $81, $81, $81, $81, $81, $82, $82, $83, $84, $85, $86, $87, $89, $8a, $8c, $8e, $90, $92, $94, $96, $98, $9b, $9d, $a0, $a3, $a6, $a9, $ac, $af, $b2, $b6, $b9, $bd, $c0, $c4, $c8, $cb, $cf, $d3, $d7, $db, $df, $e3, $e7, $eb, $ef, $f4, $f8, $fc
|
||||
|
||||
|
@ -57,10 +57,7 @@
|
||||
(byte) main::i#2 reg byte x 5.5
|
||||
(signed byte) main::sb
|
||||
(signed byte) main::sb#0 reg byte a 22.0
|
||||
(const signed byte[$c0]) main::sintab2 = { fill( $c0, 0) }
|
||||
(const byte[]) main::sintabref = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
|
||||
(const string) main::str = (string) " "
|
||||
(const word) main::wavelength = (byte) $c0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
@ -238,6 +235,9 @@
|
||||
(word) sin8s_gen::x
|
||||
(word) sin8s_gen::x#1 x zp[2]:10 11.0
|
||||
(word) sin8s_gen::x#2 x zp[2]:10 4.125
|
||||
(const signed byte[$c0]) sintab2 = { fill( $c0, 0) }
|
||||
(const byte[]) sintabref = { (byte) 0, (byte) 4, (byte) 8, (byte) $c, (byte) $11, (byte) $15, (byte) $19, (byte) $1d, (byte) $21, (byte) $25, (byte) $29, (byte) $2d, (byte) $31, (byte) $35, (byte) $38, (byte) $3c, (byte) $40, (byte) $43, (byte) $47, (byte) $4a, (byte) $4e, (byte) $51, (byte) $54, (byte) $57, (byte) $5a, (byte) $5d, (byte) $60, (byte) $63, (byte) $65, (byte) $68, (byte) $6a, (byte) $6c, (byte) $6e, (byte) $70, (byte) $72, (byte) $74, (byte) $76, (byte) $77, (byte) $79, (byte) $7a, (byte) $7b, (byte) $7c, (byte) $7d, (byte) $7e, (byte) $7e, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $80, (byte) $7f, (byte) $7f, (byte) $7f, (byte) $7e, (byte) $7e, (byte) $7d, (byte) $7c, (byte) $7b, (byte) $7a, (byte) $79, (byte) $77, (byte) $76, (byte) $74, (byte) $72, (byte) $70, (byte) $6e, (byte) $6c, (byte) $6a, (byte) $68, (byte) $65, (byte) $63, (byte) $60, (byte) $5d, (byte) $5a, (byte) $57, (byte) $54, (byte) $51, (byte) $4e, (byte) $4a, (byte) $47, (byte) $43, (byte) $40, (byte) $3c, (byte) $38, (byte) $35, (byte) $31, (byte) $2d, (byte) $29, (byte) $25, (byte) $21, (byte) $1d, (byte) $19, (byte) $15, (byte) $11, (byte) $c, (byte) 8, (byte) 4, (byte) 0, (byte) $fc, (byte) $f8, (byte) $f4, (byte) $ef, (byte) $eb, (byte) $e7, (byte) $e3, (byte) $df, (byte) $db, (byte) $d7, (byte) $d3, (byte) $cf, (byte) $cb, (byte) $c8, (byte) $c4, (byte) $c0, (byte) $bd, (byte) $b9, (byte) $b6, (byte) $b2, (byte) $af, (byte) $ac, (byte) $a9, (byte) $a6, (byte) $a3, (byte) $a0, (byte) $9d, (byte) $9b, (byte) $98, (byte) $96, (byte) $94, (byte) $92, (byte) $90, (byte) $8e, (byte) $8c, (byte) $8a, (byte) $89, (byte) $87, (byte) $86, (byte) $85, (byte) $84, (byte) $83, (byte) $82, (byte) $82, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $81, (byte) $82, (byte) $82, (byte) $83, (byte) $84, (byte) $85, (byte) $86, (byte) $87, (byte) $89, (byte) $8a, (byte) $8c, (byte) $8e, (byte) $90, (byte) $92, (byte) $94, (byte) $96, (byte) $98, (byte) $9b, (byte) $9d, (byte) $a0, (byte) $a3, (byte) $a6, (byte) $a9, (byte) $ac, (byte) $af, (byte) $b2, (byte) $b6, (byte) $b9, (byte) $bd, (byte) $c0, (byte) $c4, (byte) $c8, (byte) $cb, (byte) $cf, (byte) $d3, (byte) $d7, (byte) $db, (byte) $df, (byte) $e3, (byte) $e7, (byte) $eb, (byte) $ef, (byte) $f4, (byte) $f8, (byte) $fc }
|
||||
(const word) wavelength = (byte) $c0
|
||||
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
|
Loading…
Reference in New Issue
Block a user