1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-03 01:29:04 +00:00

Fixed tests

This commit is contained in:
Jesper Gravgaard 2018-06-01 00:45:18 +02:00
parent bb1048fdfa
commit 11b700d269
47 changed files with 8689 additions and 22563 deletions

View File

@ -0,0 +1,22 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JavaCodeStyleSettings>
<option name="JD_ALIGN_PARAM_COMMENTS" value="false" />
<option name="JD_DO_NOT_WRAP_ONE_LINE_COMMENTS" value="true" />
</JavaCodeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="SPACE_BEFORE_IF_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_TRY_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" />
<option name="SPACE_BEFORE_SYNCHRONIZED_PARENTHESES" value="false" />
<indentOptions>
<option name="INDENT_SIZE" value="3" />
<option name="CONTINUATION_INDENT_SIZE" value="6" />
<option name="TAB_SIZE" value="3" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>

View File

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">

View File

@ -5503,12 +5503,14 @@ Statement [57] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bi
Statement [59] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ( main:2::lines:14::bitmap_line:21 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ bitmap_line::xd#0 ]
Statement [73] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ( main:2::lines:14::bitmap_line:21 [ lines::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ) always clobbers reg byte a
Statement [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a
Statement [88] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Statement [94] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a
Statement [97] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:42 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:86 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a
Statement [103] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:42::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_xdyi:86::bitmap_plot:92 [ lines::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_ydxi:35::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_ydxi:80::bitmap_plot:114 [ lines::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_xdyd:56::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_xdyd:72::bitmap_plot:129 [ lines::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_ydxd:50::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::lines:14::bitmap_line:21::bitmap_line_ydxd:66::bitmap_plot:144 [ lines::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]

View File

@ -3452,6 +3452,7 @@ Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
Statement [81] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a
Statement [83] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ gfx_init_screen0::$1 ]
Statement [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y
@ -3492,6 +3493,7 @@ Statement [61] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_pl
Statement [71] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:7::gfx_init_plane_charset8:47 [ ] ) always clobbers reg byte a
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
Statement [81] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a
Statement [82] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a
Statement [83] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a
Statement [85] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:7::gfx_init_screen0:45 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y
Potential registers zp ZP_BYTE:2 [ main::j#2 main::j#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,

View File

@ -28760,6 +28760,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:220 [
Statement [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$66 ] ) always clobbers reg byte a
Statement [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$68 ] ) always clobbers reg byte a
Statement [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$69 ] ) always clobbers reg byte a
Statement [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$70 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$70 ] ) always clobbers reg byte a
Statement [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#11 ] ) always clobbers reg byte a
Statement [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] ) always clobbers reg byte a
Statement [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ) always clobbers reg byte a reg byte y
@ -28795,9 +28796,11 @@ Statement [201] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_eve
Statement [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:143 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ) always clobbers reg byte a
Statement [209] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#119 ] ( main:2::gfx_mode:15::keyboard_event_scan:143 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#119 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#119 ] ) always clobbers reg byte a
Statement [210] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$11 ] ( main:2::gfx_mode:15::keyboard_event_scan:143 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$11 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$11 ] ) always clobbers reg byte a
Statement [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:171 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:171 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:177 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:177 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:183 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:183 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:189 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:189 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ]
Statement [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:171 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:171 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:177 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:177 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:183 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:183 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:189 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:189 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ]
Statement [217] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:171 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:171 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:177 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:177 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:183 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:183 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:189 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:189 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a
Statement [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_matrix_read:162 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#118 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_matrix_read:162 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#118 ] ) always clobbers reg byte a
Statement [220] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_matrix_read:162 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#118 keyboard_matrix_read::return#0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_matrix_read:162 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#118 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
@ -28880,9 +28883,10 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:66 [ g
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ]
Statement [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ) always clobbers reg byte a
Statement [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ]
Statement [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ) always clobbers reg byte a
Statement [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ]
@ -28933,12 +28937,14 @@ Statement [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) b
Statement [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:319 [ bitmap_line::xd#0 ]
Statement [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ) always clobbers reg byte a
Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a
Statement [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Statement [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a
Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a
Statement [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
@ -29030,14 +29036,16 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:141 [
Statement [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ]
Statement [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a
Statement [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:342 [ gfx_init_screen3::$1 ]
Statement [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ]
Statement [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ) always clobbers reg byte a
Statement [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ]
Statement [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ) always clobbers reg byte a
Statement [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:346 [ gfx_init_screen2::col#0 ]
Statement [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ) always clobbers reg byte a
@ -29045,15 +29053,17 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:347 [
Statement [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ]
Statement [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ) always clobbers reg byte a
Statement [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ]
Statement [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ) always clobbers reg byte a
Statement [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ]
Statement [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
Statement [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a
Statement [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:353 [ gfx_init_screen0::$1 ]
Statement [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y
@ -29122,6 +29132,7 @@ Statement [103] (byte*) get_vic_charset::return#4 ← (byte*) get_vic_charset::r
Statement [104] (byte*~) gfx_mode::$66 ← (byte*) get_vic_charset::return#4 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$66 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$66 ] ) always clobbers reg byte a
Statement [105] (word~) gfx_mode::$68 ← (word)(byte*~) gfx_mode::$66 & (word/signed word/dword/signed dword) 16383 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$68 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$68 ] ) always clobbers reg byte a
Statement [106] (byte~) gfx_mode::$69 ← > (word~) gfx_mode::$68 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$69 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$69 ] ) always clobbers reg byte a
Statement [107] (byte~) gfx_mode::$70 ← (byte~) gfx_mode::$69 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ keyboard_events_size#24 gfx_mode::$65 gfx_mode::$70 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::$65 gfx_mode::$70 ] ) always clobbers reg byte a
Statement [112] (byte*) get_vic_screen::return#11 ← (byte*) get_vic_screen::return#5 [ keyboard_events_size#24 get_vic_screen::return#11 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 get_vic_screen::return#11 ] ) always clobbers reg byte a
Statement [113] (byte*) gfx_mode::vic_colors#0 ← (byte*) get_vic_screen::return#11 [ keyboard_events_size#24 gfx_mode::vic_colors#0 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::vic_colors#0 ] ) always clobbers reg byte a
Statement [116] *((byte*) gfx_mode::col#2) ← *((byte*) gfx_mode::vic_colors#2) [ keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ( main:2::gfx_mode:15 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#24 gfx_mode::cy#4 gfx_mode::vic_colors#2 gfx_mode::col#2 gfx_mode::cx#2 ] ) always clobbers reg byte a reg byte y
@ -29148,6 +29159,7 @@ Statement [201] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_eve
Statement [203] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#18) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ( main:2::gfx_mode:15::keyboard_event_scan:143 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 ] ) always clobbers reg byte a
Statement [209] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#119 ] ( main:2::gfx_mode:15::keyboard_event_scan:143 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#119 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#119 ] ) always clobbers reg byte a
Statement [210] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$11 ] ( main:2::gfx_mode:15::keyboard_event_scan:143 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$11 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#18 keyboard_event_scan::$11 ] ) always clobbers reg byte a
Statement [214] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:171 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:171 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:177 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:177 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:183 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:183 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:189 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:189 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) always clobbers reg byte a
Statement [216] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:171 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:171 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:177 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:177 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:183 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:183 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:189 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:189 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a
Statement [217] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:171 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:171 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:177 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:177 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#18 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:183 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:183 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#19 keyboard_event_pressed::return#10 ] main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_event_pressed:189 [ form_cursor_count#16 form_field_idx#18 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_event_pressed:189 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_events_size#100 keyboard_modifiers#20 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a
Statement [219] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::gfx_mode:15::keyboard_event_scan:143::keyboard_matrix_read:162 [ form_cursor_count#16 form_field_idx#18 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#118 ] main:2::form_mode:13::form_control:294::keyboard_event_scan:375::keyboard_matrix_read:162 [ form_mode::preset_current#6 form_field_idx#28 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#118 ] ) always clobbers reg byte a
@ -29268,6 +29280,7 @@ Statement [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_ch
Statement [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a
Statement [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ) always clobbers reg byte a reg byte y
Statement [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ) always clobbers reg byte a
Statement [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a
Statement [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a
Statement [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y
Statement [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a
@ -29279,6 +29292,7 @@ Statement [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 +
Statement [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ) always clobbers reg byte a
Statement [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y
Statement [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a
Statement [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a
Statement [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a
Statement [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y
Statement [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a
@ -29298,7 +29312,7 @@ Potential registers zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20
Potential registers zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:16 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] : zp ZP_BYTE:17 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:18 , reg byte x ,
Potential registers zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] : zp ZP_BYTE:19 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:20 [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:21 [ get_vic_screen::return#5 ] : zp ZP_WORD:21 ,
Potential registers zp ZP_WORD:23 [ get_vic_charset::return#2 ] : zp ZP_WORD:23 ,
@ -29648,7 +29662,7 @@ Uplifting [bitmap_init] best 14120274 combination zp ZP_WORD:130 [ bitmap_init::
Limited combination testing to 100 combinations of 138240 possible.
Uplifting [render_preset_name] best 14119940 combination reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] zp ZP_WORD:35 [ render_preset_name::name#12 ]
Uplifting [keyboard_event_pressed] best 14119916 combination reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_pressed::return#1 ] reg byte a [ keyboard_event_pressed::return#2 ] reg byte a [ keyboard_event_pressed::return#3 ] zp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] zp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ]
Limited combination testing to 100 combinations of 196608 possible.
Limited combination testing to 100 combinations of 147456 possible.
Uplifting [gfx_init_vic_bitmap] best 14119916 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ]
Uplifting [get_vic_screen] best 14119897 combination reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] zp ZP_WORD:212 [ get_vic_screen::return#10 ] zp ZP_WORD:231 [ get_vic_screen::return#11 ] zp ZP_WORD:21 [ get_vic_screen::return#5 ]
Uplifting [get_plane] best 14119851 combination reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] zp ZP_DWORD:160 [ get_plane::return#16 ] zp ZP_DWORD:187 [ get_plane::return#17 ] zp ZP_DWORD:26 [ get_plane::return#14 ]

View File

@ -25272,6 +25272,7 @@ Statement [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed w
Statement [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$13 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$13 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ mode_8bpppixelcell::ax#2 mode_8bpppixelcell::ax#1 ]
Statement [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 ] ) always clobbers reg byte a
Statement [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 mode_8bpppixelcell::$15 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 mode_8bpppixelcell::$15 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:212 [ mode_8bpppixelcell::$14 ]
Statement [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ) always clobbers reg byte y
@ -25310,15 +25311,17 @@ Statement [296] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/wo
Statement [297] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2::menu:9::mode_sixsfred:104 [ ] ) always clobbers reg byte a
Statement [298] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred::COLORS#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2::menu:9::mode_sixsfred:104 [ ] ) always clobbers reg byte a
Statement [303] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_sixsfred:104 [ ] ) always clobbers reg byte a
Statement [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$17 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$17 ] ) always clobbers reg byte a
Statement [306] (byte~) mode_sixsfred::$16 ← (byte) mode_sixsfred::cx#2 + (byte) mode_sixsfred::cy#4 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$16 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$16 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ]
Statement [307] (byte~) mode_sixsfred::$17 ← (byte~) mode_sixsfred::$16 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$17 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 mode_sixsfred::$17 ] ) always clobbers reg byte a
Statement [308] *((byte*) mode_sixsfred::col#2) ← (byte~) mode_sixsfred::$17 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::cy#4 mode_sixsfred::cx#2 mode_sixsfred::col#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:32 [ mode_sixsfred::cy#4 mode_sixsfred::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ mode_sixsfred::cx#2 mode_sixsfred::cx#1 ]
Statement [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::row#0 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::row#0 ] ) always clobbers reg byte a
Statement [316] (byte~) mode_sixsfred::$20 ← (byte) mode_sixsfred::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$20 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::$20 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ]
Statement [317] (byte) mode_sixsfred::row#0 ← (byte~) mode_sixsfred::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::row#0 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 mode_sixsfred::row#0 ] ) always clobbers reg byte a
Statement [318] *((byte*) mode_sixsfred::gfxa#2) ← *((const byte[]) mode_sixsfred::row_bitmask#0 + (byte) mode_sixsfred::row#0) [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ( main:2::menu:9::mode_sixsfred:104 [ mode_sixsfred::ay#4 mode_sixsfred::gfxa#2 mode_sixsfred::ax#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ mode_sixsfred::ay#4 mode_sixsfred::ay#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ mode_sixsfred::ax#2 mode_sixsfred::ax#1 ]
@ -25350,6 +25353,7 @@ Statement [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signe
Statement [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$15 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$15 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ mode_twoplanebitmap::cx#2 mode_twoplanebitmap::cx#1 ]
Statement [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 ] ) always clobbers reg byte a
Statement [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 mode_twoplanebitmap::$17 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 mode_twoplanebitmap::$17 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:221 [ mode_twoplanebitmap::$16 ]
Statement [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ) always clobbers reg byte y
@ -25388,14 +25392,16 @@ Statement [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed w
Statement [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$14 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$14 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ]
Statement [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 ] ) always clobbers reg byte a
Statement [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 mode_sixsfred2::$16 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 mode_sixsfred2::$16 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:226 [ mode_sixsfred2::$15 ]
Statement [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:58 [ mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:59 [ mode_sixsfred2::cx#2 mode_sixsfred2::cx#1 ]
Statement [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::row#0 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::row#0 ] ) always clobbers reg byte a
Statement [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$20 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$20 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ]
Statement [432] (byte) mode_sixsfred2::row#0 ← (byte~) mode_sixsfred2::$20 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::row#0 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::row#0 ] ) always clobbers reg byte a
Statement [433] *((byte*) mode_sixsfred2::gfxa#2) ← *((const byte[]) mode_sixsfred2::row_bitmask#0 + (byte) mode_sixsfred2::row#0) [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:65 [ mode_sixsfred2::ax#2 mode_sixsfred2::ax#1 ]
@ -25420,6 +25426,7 @@ Statement [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word
Statement [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$25 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$25 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ]
Statement [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 ] ) always clobbers reg byte a
Statement [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 mode_hicolmcchar::$27 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 mode_hicolmcchar::$27 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:232 [ mode_hicolmcchar::$26 ]
Statement [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ) always clobbers reg byte y
@ -25444,6 +25451,7 @@ Statement [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word
Statement [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$25 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$25 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ]
Statement [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 ] ) always clobbers reg byte a
Statement [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 mode_hicolecmchar::$27 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 mode_hicolecmchar::$27 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:236 [ mode_hicolecmchar::$26 ]
Statement [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ) always clobbers reg byte y
@ -25465,6 +25473,7 @@ Statement [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed w
Statement [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$24 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$24 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ]
Statement [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 ] ) always clobbers reg byte a
Statement [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 mode_hicolstdchar::$26 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 mode_hicolstdchar::$26 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:240 [ mode_hicolstdchar::$25 ]
Statement [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ) always clobbers reg byte y
@ -25483,9 +25492,10 @@ Statement [559] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdbitmap::i#2) ←
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ mode_stdbitmap::i#2 mode_stdbitmap::i#1 ]
Statement [562] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:2::menu:9::mode_stdbitmap:62 [ ] ) always clobbers reg byte a
Statement [563] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( main:2::menu:9::mode_stdbitmap:62 [ ] ) always clobbers reg byte a
Statement [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 ] ( main:2::menu:9::mode_stdbitmap:62 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 ] ) always clobbers reg byte a
Statement [566] (byte~) mode_stdbitmap::$19 ← (byte) mode_stdbitmap::cx#2 + (byte) mode_stdbitmap::cy#4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$19 ] ( main:2::menu:9::mode_stdbitmap:62 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::$19 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:92 [ mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ mode_stdbitmap::cx#2 mode_stdbitmap::cx#1 ]
Statement [567] (byte) mode_stdbitmap::col#0 ← (byte~) mode_stdbitmap::$19 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 ] ( main:2::menu:9::mode_stdbitmap:62 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 ] ) always clobbers reg byte a
Statement [568] (byte) mode_stdbitmap::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) mode_stdbitmap::col#0 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ( main:2::menu:9::mode_stdbitmap:62 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col#0 mode_stdbitmap::col2#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:244 [ mode_stdbitmap::col#0 ]
Statement [569] (byte~) mode_stdbitmap::$22 ← (byte) mode_stdbitmap::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$22 ] ( main:2::menu:9::mode_stdbitmap:62 [ mode_stdbitmap::cy#4 mode_stdbitmap::cx#2 mode_stdbitmap::ch#2 mode_stdbitmap::col2#0 mode_stdbitmap::$22 ] ) always clobbers reg byte a
@ -25506,12 +25516,14 @@ Statement [624] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) b
Statement [626] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ( main:2::menu:9::mode_stdbitmap:62::bitmap_line:586 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:255 [ bitmap_line::xd#0 ]
Statement [640] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ( main:2::menu:9::mode_stdbitmap:62::bitmap_line:586 [ mode_stdbitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ) always clobbers reg byte a
Statement [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a
Statement [655] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Statement [661] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a
Statement [664] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:609 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:653 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a
Statement [670] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:609::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyi:653::bitmap_plot:659 [ mode_stdbitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_ydxi:602::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_ydxi:647::bitmap_plot:681 [ mode_stdbitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyd:623::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_xdyd:639::bitmap_plot:696 [ mode_stdbitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_ydxd:617::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::menu:9::mode_stdbitmap:62::bitmap_line:586::bitmap_line_ydxd:633::bitmap_plot:711 [ mode_stdbitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
@ -25603,13 +25615,15 @@ Statement [771] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed w
Statement [772] *((const byte*) BGCOL1#0) ← (const byte) BLACK#0 [ ] ( main:2::menu:9::mode_mcchar:55 [ ] ) always clobbers reg byte a
Statement [773] *((const byte*) BGCOL2#0) ← (const byte) GREEN#0 [ ] ( main:2::menu:9::mode_mcchar:55 [ ] ) always clobbers reg byte a
Statement [774] *((const byte*) BGCOL3#0) ← (const byte) BLUE#0 [ ] ( main:2::menu:9::mode_mcchar:55 [ ] ) always clobbers reg byte a
Statement [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$26 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$26 ] ) always clobbers reg byte a
Statement [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) mode_mcchar::cy#4 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$25 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$25 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ]
Statement [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$26 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$26 ] ) always clobbers reg byte a
Statement [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:133 [ mode_mcchar::cy#4 mode_mcchar::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:134 [ mode_mcchar::cx#2 mode_mcchar::cx#1 ]
Statement [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$27 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$27 ] ) always clobbers reg byte a
Statement [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 ] ) always clobbers reg byte a
Statement [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 mode_mcchar::$29 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 mode_mcchar::$29 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:280 [ mode_mcchar::$28 ]
Statement [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y
@ -25629,13 +25643,15 @@ Statement [808] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word
Statement [809] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::menu:9::mode_ecmchar:48 [ ] ) always clobbers reg byte a
Statement [810] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2::menu:9::mode_ecmchar:48 [ ] ) always clobbers reg byte a
Statement [811] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 6 [ ] ( main:2::menu:9::mode_ecmchar:48 [ ] ) always clobbers reg byte a
Statement [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$26 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$26 ] ) always clobbers reg byte a
Statement [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte) mode_ecmchar::cy#4 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$25 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$25 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ]
Statement [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$26 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$26 ] ) always clobbers reg byte a
Statement [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:140 [ mode_ecmchar::cy#4 mode_ecmchar::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:141 [ mode_ecmchar::cx#2 mode_ecmchar::cx#1 ]
Statement [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$27 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$27 ] ) always clobbers reg byte a
Statement [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 ] ) always clobbers reg byte a
Statement [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 mode_ecmchar::$29 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 mode_ecmchar::$29 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:286 [ mode_ecmchar::$28 ]
Statement [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y
@ -25652,13 +25668,15 @@ Statement [841] *((const byte*) DTV_PALETTE#0 + (byte) mode_stdchar::i#2) ← *(
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:146 [ mode_stdchar::i#2 mode_stdchar::i#1 ]
Statement [844] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_stdchar:40 [ ] ) always clobbers reg byte a
Statement [845] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_stdchar:40 [ ] ) always clobbers reg byte a
Statement [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$25 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$25 ] ) always clobbers reg byte a
Statement [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte) mode_stdchar::cy#4 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$24 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$24 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ]
Statement [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$25 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$25 ] ) always clobbers reg byte a
Statement [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:147 [ mode_stdchar::cy#4 mode_stdchar::cy#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ]
Statement [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$26 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$26 ] ) always clobbers reg byte a
Statement [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 ] ) always clobbers reg byte a
Statement [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 mode_stdchar::$28 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 mode_stdchar::$28 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:292 [ mode_stdchar::$27 ]
Statement [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y
@ -25733,6 +25751,7 @@ Statement [240] *((const byte*) DTV_PLANEB_MODULO_LO#0) ← (byte/signed byte/wo
Statement [241] *((const byte*) DTV_PLANEB_MODULO_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:111 [ ] ) always clobbers reg byte a
Statement [242] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_8bpppixelcell:111 [ ] ) always clobbers reg byte a
Statement [249] (byte~) mode_8bpppixelcell::$13 ← (byte) mode_8bpppixelcell::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$13 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$13 ] ) always clobbers reg byte a
Statement [250] (byte~) mode_8bpppixelcell::$14 ← (byte~) mode_8bpppixelcell::$13 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 ] ) always clobbers reg byte a
Statement [251] (byte~) mode_8bpppixelcell::$15 ← (byte) mode_8bpppixelcell::ax#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 mode_8bpppixelcell::$15 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::$14 mode_8bpppixelcell::$15 ] ) always clobbers reg byte a
Statement [253] *((byte*) mode_8bpppixelcell::gfxa#2) ← (byte~) mode_8bpppixelcell::$16 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ( main:2::menu:9::mode_8bpppixelcell:111 [ mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ax#2 mode_8bpppixelcell::gfxa#2 ] ) always clobbers reg byte y
Statement [259] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::menu:9::mode_8bpppixelcell:111 [ ] ) always clobbers reg byte a
@ -25786,6 +25805,7 @@ Statement [356] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed w
Statement [357] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word/dword/signed dword) 112 [ ] ( main:2::menu:9::mode_twoplanebitmap:97 [ ] ) always clobbers reg byte a
Statement [358] *((const byte*) BGCOL2#0) ← (byte/word/signed word/dword/signed dword) 212 [ ] ( main:2::menu:9::mode_twoplanebitmap:97 [ ] ) always clobbers reg byte a
Statement [361] (byte~) mode_twoplanebitmap::$15 ← (byte) mode_twoplanebitmap::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$15 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$15 ] ) always clobbers reg byte a
Statement [362] (byte~) mode_twoplanebitmap::$16 ← (byte~) mode_twoplanebitmap::$15 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 ] ) always clobbers reg byte a
Statement [363] (byte~) mode_twoplanebitmap::$17 ← (byte) mode_twoplanebitmap::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 mode_twoplanebitmap::$17 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 mode_twoplanebitmap::$16 mode_twoplanebitmap::$17 ] ) always clobbers reg byte a
Statement [365] *((byte*) mode_twoplanebitmap::col#2) ← (byte~) mode_twoplanebitmap::$18 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cx#2 mode_twoplanebitmap::col#2 ] ) always clobbers reg byte y
Statement [373] (byte~) mode_twoplanebitmap::$21 ← (byte) mode_twoplanebitmap::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_twoplanebitmap::ay#4 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 mode_twoplanebitmap::$21 ] ( main:2::menu:9::mode_twoplanebitmap:97 [ mode_twoplanebitmap::ay#4 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::ax#2 mode_twoplanebitmap::$21 ] ) always clobbers reg byte a
@ -25811,6 +25831,7 @@ Statement [410] *((const byte*) DTV_COLOR_BANK_LO#0) ← <(const byte*) mode_six
Statement [411] *((const byte*) DTV_COLOR_BANK_HI#0) ← >(const byte*) mode_sixsfred2::COLORS#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2::menu:9::mode_sixsfred2:90 [ ] ) always clobbers reg byte a
Statement [416] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_sixsfred2:90 [ ] ) always clobbers reg byte a
Statement [419] (byte~) mode_sixsfred2::$14 ← (byte) mode_sixsfred2::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$14 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$14 ] ) always clobbers reg byte a
Statement [420] (byte~) mode_sixsfred2::$15 ← (byte~) mode_sixsfred2::$14 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 ] ) always clobbers reg byte a
Statement [421] (byte~) mode_sixsfred2::$16 ← (byte) mode_sixsfred2::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 mode_sixsfred2::$16 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 mode_sixsfred2::$15 mode_sixsfred2::$16 ] ) always clobbers reg byte a
Statement [423] *((byte*) mode_sixsfred2::col#2) ← (byte~) mode_sixsfred2::$17 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::cy#4 mode_sixsfred2::cx#2 mode_sixsfred2::col#2 ] ) always clobbers reg byte y
Statement [431] (byte~) mode_sixsfred2::$20 ← (byte) mode_sixsfred2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$20 ] ( main:2::menu:9::mode_sixsfred2:90 [ mode_sixsfred2::ay#4 mode_sixsfred2::gfxa#2 mode_sixsfred2::ax#2 mode_sixsfred2::$20 ] ) always clobbers reg byte a
@ -25831,6 +25852,7 @@ Statement [464] *((const byte*) BGCOL1#0) ← (byte/signed byte/word/signed word
Statement [465] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word/dword/signed dword) 84 [ ] ( main:2::menu:9::mode_hicolmcchar:83 [ ] ) always clobbers reg byte a
Statement [466] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 [ ] ( main:2::menu:9::mode_hicolmcchar:83 [ ] ) always clobbers reg byte a
Statement [469] (byte~) mode_hicolmcchar::$25 ← (byte) mode_hicolmcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$25 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$25 ] ) always clobbers reg byte a
Statement [470] (byte~) mode_hicolmcchar::$26 ← (byte~) mode_hicolmcchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 ] ) always clobbers reg byte a
Statement [471] (byte~) mode_hicolmcchar::$27 ← (byte) mode_hicolmcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 mode_hicolmcchar::$27 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::$26 mode_hicolmcchar::$27 ] ) always clobbers reg byte a
Statement [473] *((byte*) mode_hicolmcchar::col#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cx#2 mode_hicolmcchar::col#2 mode_hicolmcchar::ch#2 mode_hicolmcchar::v#0 ] ) always clobbers reg byte y
Statement [475] *((byte*) mode_hicolmcchar::ch#2) ← (byte) mode_hicolmcchar::v#0 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ( main:2::menu:9::mode_hicolmcchar:83 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::col#1 mode_hicolmcchar::cx#2 mode_hicolmcchar::ch#2 ] ) always clobbers reg byte y
@ -25849,6 +25871,7 @@ Statement [499] *((const byte*) BGCOL2#0) ← (byte/signed byte/word/signed word
Statement [500] *((const byte*) BGCOL3#0) ← (byte/signed byte/word/signed word/dword/signed dword) 88 [ ] ( main:2::menu:9::mode_hicolecmchar:76 [ ] ) always clobbers reg byte a
Statement [501] *((const byte*) BGCOL4#0) ← (byte/signed byte/word/signed word/dword/signed dword) 92 [ ] ( main:2::menu:9::mode_hicolecmchar:76 [ ] ) always clobbers reg byte a
Statement [504] (byte~) mode_hicolecmchar::$25 ← (byte) mode_hicolecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$25 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$25 ] ) always clobbers reg byte a
Statement [505] (byte~) mode_hicolecmchar::$26 ← (byte~) mode_hicolecmchar::$25 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 ] ) always clobbers reg byte a
Statement [506] (byte~) mode_hicolecmchar::$27 ← (byte) mode_hicolecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 mode_hicolecmchar::$27 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::$26 mode_hicolecmchar::$27 ] ) always clobbers reg byte a
Statement [508] *((byte*) mode_hicolecmchar::col#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cx#2 mode_hicolecmchar::col#2 mode_hicolecmchar::ch#2 mode_hicolecmchar::v#0 ] ) always clobbers reg byte y
Statement [510] *((byte*) mode_hicolecmchar::ch#2) ← (byte) mode_hicolecmchar::v#0 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ( main:2::menu:9::mode_hicolecmchar:76 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::col#1 mode_hicolecmchar::cx#2 mode_hicolecmchar::ch#2 ] ) always clobbers reg byte y
@ -25864,6 +25887,7 @@ Statement [527] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*)
Statement [532] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:69 [ ] ) always clobbers reg byte a
Statement [533] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::menu:9::mode_hicolstdchar:69 [ ] ) always clobbers reg byte a
Statement [536] (byte~) mode_hicolstdchar::$24 ← (byte) mode_hicolstdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$24 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$24 ] ) always clobbers reg byte a
Statement [537] (byte~) mode_hicolstdchar::$25 ← (byte~) mode_hicolstdchar::$24 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 ] ) always clobbers reg byte a
Statement [538] (byte~) mode_hicolstdchar::$26 ← (byte) mode_hicolstdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 mode_hicolstdchar::$26 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::$25 mode_hicolstdchar::$26 ] ) always clobbers reg byte a
Statement [540] *((byte*) mode_hicolstdchar::col#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cx#2 mode_hicolstdchar::col#2 mode_hicolstdchar::ch#2 mode_hicolstdchar::v#0 ] ) always clobbers reg byte y
Statement [542] *((byte*) mode_hicolstdchar::ch#2) ← (byte) mode_hicolstdchar::v#0 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ( main:2::menu:9::mode_hicolstdchar:69 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::col#1 mode_hicolstdchar::cx#2 mode_hicolstdchar::ch#2 ] ) always clobbers reg byte y
@ -25932,6 +25956,7 @@ Statement [777] (byte~) mode_mcchar::$25 ← (byte) mode_mcchar::cx#2 + (byte) m
Statement [778] (byte~) mode_mcchar::$26 ← (byte~) mode_mcchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$26 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 mode_mcchar::$26 ] ) always clobbers reg byte a
Statement [779] *((byte*) mode_mcchar::col#2) ← (byte~) mode_mcchar::$26 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::cx#2 mode_mcchar::col#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y
Statement [781] (byte~) mode_mcchar::$27 ← (byte) mode_mcchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$27 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$27 ] ) always clobbers reg byte a
Statement [782] (byte~) mode_mcchar::$28 ← (byte~) mode_mcchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 ] ) always clobbers reg byte a
Statement [783] (byte~) mode_mcchar::$29 ← (byte) mode_mcchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 mode_mcchar::$29 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 mode_mcchar::$28 mode_mcchar::$29 ] ) always clobbers reg byte a
Statement [785] *((byte*) mode_mcchar::ch#2) ← (byte~) mode_mcchar::$30 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ( main:2::menu:9::mode_mcchar:55 [ mode_mcchar::cy#4 mode_mcchar::col#1 mode_mcchar::cx#2 mode_mcchar::ch#2 ] ) always clobbers reg byte y
Statement [794] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_ecmchar::CHARSET#0/(dword/signed dword) 65536 [ ] ( main:2::menu:9::mode_ecmchar:48 [ ] ) always clobbers reg byte a
@ -25953,6 +25978,7 @@ Statement [814] (byte~) mode_ecmchar::$25 ← (byte) mode_ecmchar::cx#2 + (byte)
Statement [815] (byte~) mode_ecmchar::$26 ← (byte~) mode_ecmchar::$25 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$26 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 mode_ecmchar::$26 ] ) always clobbers reg byte a
Statement [816] *((byte*) mode_ecmchar::col#2) ← (byte~) mode_ecmchar::$26 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::cx#2 mode_ecmchar::col#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y
Statement [818] (byte~) mode_ecmchar::$27 ← (byte) mode_ecmchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$27 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$27 ] ) always clobbers reg byte a
Statement [819] (byte~) mode_ecmchar::$28 ← (byte~) mode_ecmchar::$27 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 ] ) always clobbers reg byte a
Statement [820] (byte~) mode_ecmchar::$29 ← (byte) mode_ecmchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 mode_ecmchar::$29 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 mode_ecmchar::$28 mode_ecmchar::$29 ] ) always clobbers reg byte a
Statement [822] *((byte*) mode_ecmchar::ch#2) ← (byte~) mode_ecmchar::$30 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ( main:2::menu:9::mode_ecmchar:48 [ mode_ecmchar::cy#4 mode_ecmchar::col#1 mode_ecmchar::cx#2 mode_ecmchar::ch#2 ] ) always clobbers reg byte y
Statement [831] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) mode_stdchar::CHARSET#0/(dword/signed dword) 65536 [ ] ( main:2::menu:9::mode_stdchar:40 [ ] ) always clobbers reg byte a
@ -25971,6 +25997,7 @@ Statement [848] (byte~) mode_stdchar::$24 ← (byte) mode_stdchar::cx#2 + (byte)
Statement [849] (byte~) mode_stdchar::$25 ← (byte~) mode_stdchar::$24 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$25 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 mode_stdchar::$25 ] ) always clobbers reg byte a
Statement [850] *((byte*) mode_stdchar::col#2) ← (byte~) mode_stdchar::$25 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::cx#2 mode_stdchar::col#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y
Statement [852] (byte~) mode_stdchar::$26 ← (byte) mode_stdchar::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$26 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$26 ] ) always clobbers reg byte a
Statement [853] (byte~) mode_stdchar::$27 ← (byte~) mode_stdchar::$26 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 ] ) always clobbers reg byte a
Statement [854] (byte~) mode_stdchar::$28 ← (byte) mode_stdchar::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 mode_stdchar::$28 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 mode_stdchar::$27 mode_stdchar::$28 ] ) always clobbers reg byte a
Statement [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ( main:2::menu:9::mode_stdchar:40 [ mode_stdchar::cy#4 mode_stdchar::col#1 mode_stdchar::cx#2 mode_stdchar::ch#2 ] ) always clobbers reg byte y
Statement [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) always clobbers reg byte a reg byte y

View File

@ -1579,23 +1579,32 @@ Statement [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed by
Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ main::$1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ main::$1 ]
Statement [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) always clobbers reg byte a
Statement [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) always clobbers reg byte a
Statement [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) always clobbers reg byte a
Statement [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) always clobbers reg byte a
Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ]
Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ main::$11 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ main::$11 ]
Statement [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) always clobbers reg byte a
Statement [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a
Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a
Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ]
Statement [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) always clobbers reg byte a
Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ main::$21 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ main::$21 ]
Statement [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) always clobbers reg byte a
Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a
Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ]
Statement [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) always clobbers reg byte a
Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ main::$30 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ main::$30 ]
@ -1609,13 +1618,22 @@ Statement [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word
Statement [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) always clobbers reg byte a
Statement [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y
Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y
Statement [10] (byte~) main::$3 ← (byte~) main::$2 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ) always clobbers reg byte a
Statement [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) always clobbers reg byte a
Statement [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) always clobbers reg byte a
Statement [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) always clobbers reg byte a
Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) always clobbers reg byte a reg byte y
Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) always clobbers reg byte a reg byte y
Statement [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) always clobbers reg byte a
Statement [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a
Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a
Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) always clobbers reg byte a reg byte y
Statement [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) always clobbers reg byte a
Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) always clobbers reg byte a reg byte y
Statement [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) always clobbers reg byte a
Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a
Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) always clobbers reg byte a reg byte y
Statement [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) always clobbers reg byte a
Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) always clobbers reg byte a reg byte y
Statement [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a
Statement [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] ) always clobbers reg byte y

View File

@ -16,6 +16,7 @@
.label CIA2_PORT_A_DDR = $dd02
.label BITMAP = $a000
.label SCREEN = $8800
.const DELAY = 8
.label rem16s = 3
.label rem16u = 9
jsr main
@ -46,12 +47,11 @@ main: {
sta rem16u+1
sta i
b1:
ldx i
jsr point_init
lda i
lsr
tax
tay
ldy i
lda x_start,y
sta bitmap_plot.x
lda x_start+1,y
@ -102,24 +102,32 @@ bitmap_plot: {
rts
}
point_init: {
.label _4 = $d
.label _4 = $e
.label _5 = 5
.label y_diff = $d
.label _16 = 5
.label _17 = 5
.label _18 = 5
.label point_idx = 2
.label point_idx1 = $d
.label y_diff = $e
.label abs16s1__2 = 5
.label abs16s1_return = 5
.label abs16s2__2 = 7
.label abs16s2_return = 7
.label x_stepf = 5
.label x_diff = $b
txa
lda point_idx
lsr
tay
sta point_idx1
ldy point_idx
sec
lda x_end,x
sbc x_start,x
lda x_end,y
sbc x_start,y
sta x_diff
lda x_end+1,x
sbc x_start+1,x
lda x_end+1,y
sbc x_start+1,y
sta x_diff+1
ldy point_idx1
lda y_end,y
sta _4
lda #0
@ -136,14 +144,18 @@ point_init: {
sbc _5+1
sta y_diff+1
lda x_diff+1
bmi abs16s1_b1
bpl !abs16s1_b1+
jmp abs16s1_b1
!abs16s1_b1:
lda x_diff
sta abs16s1_return
lda x_diff+1
sta abs16s1_return+1
abs16s2:
lda y_diff+1
bmi abs16s2_b1
bpl !abs16s2_b1+
jmp abs16s2_b1
!abs16s2_b1:
lda y_diff
sta abs16s2_return
lda y_diff+1
@ -157,23 +169,70 @@ point_init: {
eor #$80
!:
bpl b1
breturn:
b2:
ldy point_idx
lda x_start,y
sta _16
lda x_start+1,y
sta _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
asl _16
rol _16+1
lda _16
sta x_cur,y
lda _16+1
sta x_cur+1,y
ldy point_idx1
lda y_start,y
sta _17
lda #0
sta _17+1
asl _18
rol _18+1
asl _18
rol _18+1
asl _18
rol _18+1
asl _18
rol _18+1
ldy point_idx
lda _18
sta y_cur,y
lda _18+1
sta y_cur+1,y
ldy point_idx1
lda #DELAY
sta delay,y
rts
b1:
lda x_diff+1
bmi b3
ldy point_idx
lda #$10
sta x_add,x
sta x_add,y
b4:
lda y_diff
sta divr16s.rem
lda y_diff+1
sta divr16s.rem+1
jsr divr16s
jmp breturn
lda x_stepf+1
lsr
lsr
lsr
lsr
ldy point_idx1
sta y_add,y
jmp b2
b3:
ldy point_idx
lda #-$10
sta x_add,x
sta x_add,y
jmp b4
abs16s2_b1:
sec
@ -202,6 +261,8 @@ divr16s: {
.const dividend = 0
.label _7 = 9
.label _11 = $b
.label resultu = 5
.label return = 5
.label divisor = $b
.label rem = 9
.label dividendu = 3
@ -230,6 +291,15 @@ divr16s: {
eor #$ff
adc #0
sta rem16s+1
sec
lda return
eor #$ff
adc #0
sta return
lda return+1
eor #$ff
adc #0
sta return+1
breturn:
rts
b19:
@ -427,7 +497,11 @@ bitmap_init: {
y_start: .byte $a, $a, $a, $14
x_end: .word $14, $a, $14, $14
y_end: .byte $14, $14, $a, $14
x_cur: .fill 8, 0
y_cur: .fill 8, 0
x_add: .fill 4, 0
y_add: .fill 4, 0
delay: .fill 4, 0
bitmap_plot_ylo: .fill $100, 0
bitmap_plot_yhi: .fill $100, 0
bitmap_plot_bit: .fill $100, 0

View File

@ -74,223 +74,243 @@ point_init: scope:[point_init] from main::@1
[35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] )
[36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] )
[37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] )
[38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] )
[39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] )
[38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] )
[39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] )
to:point_init::abs16s1
point_init::abs16s1: scope:[point_init] from point_init
[40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] )
[40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] )
to:point_init::@12
point_init::@12: scope:[point_init] from point_init::abs16s1
[41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] )
[41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] )
to:point_init::abs16s1_@return
point_init::abs16s1_@return: scope:[point_init] from point_init::@12 point_init::abs16s1_@1
[42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@12/(word~) point_init::abs16s1_return#6 ) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] )
[42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@12/(word~) point_init::abs16s1_return#6 ) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] )
to:point_init::abs16s2
point_init::abs16s2: scope:[point_init] from point_init::abs16s1_@return
[43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] )
[43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] )
to:point_init::@13
point_init::@13: scope:[point_init] from point_init::abs16s2
[44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] )
[44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] )
to:point_init::abs16s2_@return
point_init::abs16s2_@return: scope:[point_init] from point_init::@13 point_init::abs16s2_@1
[45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@13/(word~) point_init::abs16s2_return#6 ) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#2 ] )
[45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@13/(word~) point_init::abs16s2_return#6 ) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#2 ] )
to:point_init::@10
point_init::@10: scope:[point_init] from point_init::abs16s2_@return
[46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] )
[46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] )
to:point_init::@2
point_init::@2: scope:[point_init] from point_init::@10 point_init::@11
[47] (signed word) rem16s#13 ← phi( point_init::@10/(signed word) rem16s#15 point_init::@11/(signed word) rem16s#3 ) [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] )
[47] (word) rem16u#18 ← phi( point_init::@10/(word) rem16u#21 point_init::@11/(word) divr16u::rem#10 ) [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] )
[48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] )
[49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] )
[50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] )
[51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] )
[52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ rem16u#18 rem16s#13 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx1#0 ] )
[53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] )
to:point_init::@return
point_init::@return: scope:[point_init] from point_init::@10 point_init::@4
[47] (signed word) rem16s#13 ← phi( point_init::@10/(signed word) rem16s#15 point_init::@4/(signed word) rem16s#3 ) [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] )
[47] (word) rem16u#18 ← phi( point_init::@10/(word) rem16u#21 point_init::@4/(word) divr16u::rem#10 ) [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] )
[48] return [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] )
point_init::@return: scope:[point_init] from point_init::@2
[54] return [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] )
to:@return
point_init::@1: scope:[point_init] from point_init point_init::@10
[49] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 ] )
[55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] )
to:point_init::@7
point_init::@7: scope:[point_init] from point_init::@1
[50] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::x_diff#1 point_init::y_diff#0 ] )
[56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] )
to:point_init::@4
point_init::@4: scope:[point_init] from point_init::@3 point_init::@7
[51] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::y_diff#0 divr16s::divisor#0 ] )
[52] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 divr16s::divisor#0 divr16s::rem#0 ] )
[53] call divr16s [ divr16u::rem#10 rem16s#3 ] ( main:2::point_init:20 [ main::i#2 divr16u::rem#10 rem16s#3 ] )
to:point_init::@return
[57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] )
[58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] )
[59] call divr16s [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#2 ] )
[60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] )
to:point_init::@11
point_init::@11: scope:[point_init] from point_init::@4
[61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] )
[62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] )
[63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] )
[64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 ] )
to:point_init::@2
point_init::@3: scope:[point_init] from point_init::@1
[54] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::x_diff#1 point_init::y_diff#0 ] )
[65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] )
to:point_init::@4
point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2
[55] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] )
[56] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] )
[66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] )
[67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] )
to:point_init::abs16s2_@return
point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
[57] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] )
[58] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] )
[68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] )
[69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] )
to:point_init::abs16s1_@return
divr16s: scope:[divr16s] from point_init::@4
[59] phi() [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::rem#0 ] )
[70] phi() [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] )
to:divr16s::@16
divr16s::@16: scope:[divr16s] from divr16s
[60] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::rem#0 ] )
[71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] )
to:divr16s::@17
divr16s::@17: scope:[divr16s] from divr16s::@16
[61] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::remu#8 ] )
[72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] )
to:divr16s::@2
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@17
[62] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 ) [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
[62] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 ) [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
[62] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
[63] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
[73] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 ) [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
[73] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 ) [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
[73] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
[74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] )
to:divr16s::@18
divr16s::@18: scope:[divr16s] from divr16s::@2
[64] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] )
[75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] )
to:divr16s::@4
divr16s::@4: scope:[divr16s] from divr16s::@18 divr16s::@3
[65] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 ) [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] )
[65] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 ) [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] )
[66] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] )
[67] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] )
[68] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] )
[69] call divr16u [ divr16u::rem#10 divr16s::neg#4 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16u::rem#10 divr16s::neg#4 ] )
[76] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 ) [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] )
[76] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 ) [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 ] )
[77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] )
[78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] )
[79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] )
[80] call divr16u [ divr16u::rem#10 divr16s::neg#4 divr16u::return#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16u::return#0 ] )
[81] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] )
to:divr16s::@15
divr16s::@15: scope:[divr16s] from divr16s::@4
[70] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 [ divr16u::rem#10 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16u::rem#10 ] )
[82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] )
[83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 [ divr16u::rem#10 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::resultu#0 ] )
to:divr16s::@11
divr16s::@11: scope:[divr16s] from divr16s::@15
[71] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 rem16s#2 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16u::rem#10 rem16s#2 ] )
[84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] )
[85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 rem16s#2 divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#2 divr16s::return#1 ] )
to:divr16s::@return
divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@19
[72] (signed word) rem16s#3 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@19/(signed word~) rem16s#56 ) [ divr16u::rem#10 rem16s#3 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16u::rem#10 rem16s#3 ] )
[73] return [ divr16u::rem#10 rem16s#3 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16u::rem#10 rem16s#3 ] )
[86] (signed word) rem16s#3 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@19/(signed word~) rem16s#57 ) [ divr16u::rem#10 rem16s#3 divr16s::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#2 ] )
[86] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 ) [ divr16u::rem#10 rem16s#3 divr16s::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#2 ] )
[87] return [ divr16u::rem#10 rem16s#3 divr16s::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#2 ] )
to:@return
divr16s::@19: scope:[divr16s] from divr16s::@15
[74] (signed word~) rem16s#56 ← (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 rem16s#56 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16u::rem#10 rem16s#56 ] )
[88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 ] )
[89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::return#7 rem16s#57 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 rem16s#57 ] )
to:divr16s::@return
divr16s::@3: scope:[divr16s] from divr16s::@2
[75] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] )
[76] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] )
[77] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] )
[90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] )
[91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] )
[92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] )
to:divr16s::@4
divr16s::@1: scope:[divr16s] from divr16s::@16
[78] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::$7 ] )
[79] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:53 [ main::i#2 divr16s::divisor#0 divr16s::remu#7 ] )
[93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] )
[94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] )
to:divr16s::@2
divr16u: scope:[divr16u] from divr16s::@4
[80] phi() [ divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] )
[95] phi() [ divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[81] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[81] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[81] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[81] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#10 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[82] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[83] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[84] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[85] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[96] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[96] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[96] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[96] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#10 ) [ divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] )
[97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[86] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
[101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[87] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] )
[88] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] )
[89] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] )
[90] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] )
[102] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] )
[103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] )
[104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] )
[105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] )
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[91] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] )
[92] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
[106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] )
[107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[93] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::rem#10 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::return#0 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::return#0 ] )
[93] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::rem#10 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::return#0 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::return#0 ] )
[94] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#10 divr16u::divisor#0 divr16u::dividend#0 divr16u::return#0 divr16u::i#1 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::dividend#0 divr16u::return#0 divr16u::i#1 ] )
[95] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#10 divr16u::divisor#0 divr16u::dividend#0 divr16u::return#0 divr16u::i#1 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::dividend#0 divr16u::return#0 divr16u::i#1 ] )
[108] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::i#2 divr16u::dividend#0 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::i#2 divr16u::dividend#0 ] )
[108] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::i#2 divr16u::dividend#0 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::i#2 divr16u::dividend#0 ] )
[109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::dividend#0 divr16u::i#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::dividend#0 divr16u::i#1 ] )
[110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::dividend#0 divr16u::i#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::rem#10 divr16u::divisor#0 divr16u::return#0 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@3
[96] return [ divr16u::rem#10 ] ( main:2::point_init:20::divr16s:53::divr16u:69 [ main::i#2 divr16s::neg#4 divr16u::rem#10 ] )
[111] return [ divr16u::rem#10 divr16u::return#0 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::rem#10 divr16u::return#0 ] )
to:@return
screen_fill: scope:[screen_fill] from main::@18
[97] phi() [ ] ( main:2::screen_fill:17 [ ] )
[112] phi() [ ] ( main:2::screen_fill:17 [ ] )
to:screen_fill::@1
screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3
[98] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] )
[98] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] )
[113] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] )
[113] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) [ screen_fill::screen#3 screen_fill::y#4 ] ( main:2::screen_fill:17 [ screen_fill::screen#3 screen_fill::y#4 ] )
to:screen_fill::@2
screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2
[99] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] )
[99] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] )
[100] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] )
[101] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] )
[102] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] )
[103] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] )
[114] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] )
[114] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] )
[115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] )
[116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#2 ] )
[117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] )
[118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#1 screen_fill::x#1 ] )
to:screen_fill::@3
screen_fill::@3: scope:[screen_fill] from screen_fill::@2
[104] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] )
[105] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] )
[119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] )
[120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 [ screen_fill::screen#1 screen_fill::y#1 ] ( main:2::screen_fill:17 [ screen_fill::screen#1 screen_fill::y#1 ] )
to:screen_fill::@return
screen_fill::@return: scope:[screen_fill] from screen_fill::@3
[106] return [ ] ( main:2::screen_fill:17 [ ] )
[121] return [ ] ( main:2::screen_fill:17 [ ] )
to:@return
bitmap_clear: scope:[bitmap_clear] from main::@17
[107] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] )
[108] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] )
[122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0+(byte/signed byte/word/signed word/dword/signed dword) 0) w= *((const byte[256]) bitmap_plot_ylo#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] )
[123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] )
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
[109] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] )
[109] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] )
[124] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] )
[124] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#3 bitmap_clear::y#4 ] )
to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
[110] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
[110] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
[111] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
[112] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] )
[113] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] )
[114] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] )
[125] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
[125] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
[126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] )
[127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#2 ] )
[128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] )
[129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#1 bitmap_clear::x#1 ] )
to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
[115] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] )
[116] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] )
[130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] )
[131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#1 bitmap_clear::y#1 ] )
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
[117] return [ ] ( main:2::bitmap_clear:15 [ ] )
[132] return [ ] ( main:2::bitmap_clear:15 [ ] )
to:@return
bitmap_init: scope:[bitmap_init] from main::@16
[118] phi() [ ] ( main:2::bitmap_init:13 [ ] )
[133] phi() [ ] ( main:2::bitmap_init:13 [ ] )
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[119] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
[119] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
[120] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
[121] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
[122] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
[134] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
[134] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
[135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::bits#3 bitmap_init::x#2 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#3 bitmap_init::x#2 ] )
[136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
[137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10
[123] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) [ bitmap_init::x#2 bitmap_init::bits#4 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#4 ] )
[124] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] )
[125] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] )
[138] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) [ bitmap_init::x#2 bitmap_init::bits#4 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#4 ] )
[139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] )
[140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 [ bitmap_init::bits#4 bitmap_init::x#1 ] ( main:2::bitmap_init:13 [ bitmap_init::bits#4 bitmap_init::x#1 ] )
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[126] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[126] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[127] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] )
[128] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] )
[129] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] )
[130] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[131] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] )
[132] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[133] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] )
[134] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[141] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[141] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] )
[143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 bitmap_init::$4 ] )
[144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$5 ] )
[145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] )
[147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
[148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] )
[149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 ] )
to:bitmap_init::@7
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
[135] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] )
[150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] )
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
[136] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) [ bitmap_init::y#2 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#4 ] )
[137] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] )
[138] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] )
[151] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) [ bitmap_init::y#2 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#4 ] )
[152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] )
[153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] ( main:2::bitmap_init:13 [ bitmap_init::y#1 bitmap_init::yoffs#4 ] )
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[139] return [ ] ( main:2::bitmap_init:13 [ ] )
[154] return [ ] ( main:2::bitmap_init:13 [ ] )
to:@return
bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1
[140] phi() [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
[155] phi() [ bitmap_init::x#2 bitmap_init::bits#1 ] ( main:2::bitmap_init:13 [ bitmap_init::x#2 bitmap_init::bits#1 ] )
to:bitmap_init::@2

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,8 @@
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
(byte*) D018
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
(byte) DELAY
(const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
(byte*) PROCPORT_DDR
@ -93,6 +95,8 @@
(const byte[256]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( 256, 0) }
(byte[256]) bitmap_plot_ylo
(const byte[256]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( 256, 0) }
(byte[4]) delay
(const byte[4]) delay#0 delay = { fill( 4, 0) }
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 $11 zp ZP_WORD:11 1.0
(signed word~) divr16s::$7 $7 zp ZP_WORD:9 2.0
@ -120,7 +124,7 @@
(byte) divr16s::neg
(byte) divr16s::neg#2 reg byte y 2.0
(byte) divr16s::neg#3 reg byte y 1.0
(byte) divr16s::neg#4 reg byte y 1.2000000000000002
(byte) divr16s::neg#4 reg byte y 0.8571428571428571
(signed word) divr16s::rem
(signed word) divr16s::rem#0 rem zp ZP_WORD:9 2.0
(word) divr16s::remu
@ -128,7 +132,12 @@
(word~) divr16s::remu#7 remu zp ZP_WORD:9 4.0
(word~) divr16s::remu#8 remu zp ZP_WORD:9 4.0
(word) divr16s::resultu
(word) divr16s::resultu#0 resultu zp ZP_WORD:5 0.6666666666666666
(signed word) divr16s::return
(signed word) divr16s::return#1 return zp ZP_WORD:5 4.0
(signed word) divr16s::return#2 return zp ZP_WORD:5 2.0
(signed word) divr16s::return#3 return zp ZP_WORD:5 4.0
(signed word~) divr16s::return#7 return zp ZP_WORD:5 2.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 202.0
(byte~) divr16u::$2 reg byte a 202.0
@ -154,13 +163,14 @@
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:9 75.75
(word) divr16u::rem#1 rem zp ZP_WORD:9 202.0
(word) divr16u::rem#10 rem zp ZP_WORD:9 27.727272727272727
(word) divr16u::rem#10 rem zp ZP_WORD:9 15.25
(word) divr16u::rem#2 rem zp ZP_WORD:9 202.0
(word) divr16u::rem#3 rem zp ZP_WORD:9 2.0
(word) divr16u::rem#4 rem zp ZP_WORD:9 204.0
(word) divr16u::rem#5 rem zp ZP_WORD:9 101.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:5 101.0
(word) divr16u::return#0 return zp ZP_WORD:5 61.0
(word) divr16u::return#2 return zp ZP_WORD:5 4.0
(void()) main()
(byte~) main::$9 reg byte x 11.0
(label) main::@1
@ -201,12 +211,19 @@
(byte) main::vicSelectGfxBank1_toDd001_return
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
(void()) point_init((byte) point_init::point_idx)
(signed word~) point_init::$4 $4 zp ZP_WORD:13 2.0
(byte~) point_init::$13 reg byte a 4.0
(byte~) point_init::$14 reg byte a 2.0
(word~) point_init::$16 $16 zp ZP_WORD:5 4.0
(word~) point_init::$17 $17 zp ZP_WORD:5 4.0
(word~) point_init::$18 $18 zp ZP_WORD:5 4.0
(signed word~) point_init::$4 $4 zp ZP_WORD:14 2.0
(signed word~) point_init::$5 $5 zp ZP_WORD:5 4.0
(label) point_init::@1
(label) point_init::@10
(label) point_init::@11
(label) point_init::@12
(label) point_init::@13
(label) point_init::@2
(label) point_init::@3
(label) point_init::@4
(label) point_init::@7
@ -238,21 +255,23 @@
(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:7 4.0
(signed word) point_init::abs16s2_w
(byte) point_init::point_idx
(byte) point_init::point_idx#0 reg byte x 0.9444444444444446
(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.6969696969696968
(byte) point_init::point_idx1
(byte) point_init::point_idx1#0 reg byte y 2.0
(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:13 0.36363636363636365
(signed word) point_init::x_diff
(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:11 0.5555555555555556
(signed word) point_init::x_stepf
(signed word) point_init::x_stepf#0 x_stepf zp ZP_WORD:5 4.0
(signed word) point_init::y_diff
(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:13 0.5
(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:14 0.5
(signed word) rem16s
(signed word) rem16s#13 rem16s zp ZP_WORD:3 1.666666666666667
(signed word) rem16s#13 rem16s zp ZP_WORD:3 0.9999999999999999
(signed word) rem16s#15 rem16s zp ZP_WORD:3 0.7222222222222223
(signed word) rem16s#2 rem16s zp ZP_WORD:3 4.0
(signed word) rem16s#3 rem16s zp ZP_WORD:3 2.0
(signed word~) rem16s#56 rem16s zp ZP_WORD:3 4.0
(signed word) rem16s#2 rem16s zp ZP_WORD:3 2.0
(signed word) rem16s#3 rem16s zp ZP_WORD:3 0.75
(signed word~) rem16s#57 rem16s zp ZP_WORD:3 4.0
(word) rem16u
(word) rem16u#18 rem16u zp ZP_WORD:9 1.666666666666667
(word) rem16u#18 rem16u zp ZP_WORD:9 0.9999999999999999
(word) rem16u#21 rem16u zp ZP_WORD:9 0.7222222222222223
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
(label) screen_fill::@1
@ -273,18 +292,24 @@
(byte) screen_fill::y#4 y zp ZP_BYTE:2 3.6666666666666665
(signed byte[4]) x_add
(const signed byte[4]) x_add#0 x_add = { fill( 4, 0) }
(word[4]) x_cur
(const word[4]) x_cur#0 x_cur = { fill( 4, 0) }
(word[4]) x_end
(const word[4]) x_end#0 x_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(word[4]) x_start
(const word[4]) x_start#0 x_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 }
(signed byte[4]) y_add
(const signed byte[4]) y_add#0 y_add = { fill( 4, 0) }
(word[4]) y_cur
(const word[4]) y_cur#0 y_cur = { fill( 4, 0) }
(byte[4]) y_end
(const byte[4]) y_end#0 y_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
(byte[4]) y_start
(const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
zp ZP_BYTE:2 [ main::i#2 main::i#1 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ]
zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#56 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 bitmap_plot::x#0 point_init::$5 ]
zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ]
zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ]
zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 bitmap_plot::$3 bitmap_plot::plotter#1 ]
zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ]
zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 bitmap_plot::$1 ]
@ -295,12 +320,13 @@ reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
reg byte x [ point_init::point_idx#0 ]
reg byte x [ main::$9 ]
reg byte y [ bitmap_plot::y#0 ]
reg byte a [ bitmap_plot::$2 ]
reg byte y [ point_init::point_idx1#0 ]
zp ZP_WORD:13 [ point_init::$4 point_init::y_diff#0 ]
zp ZP_BYTE:13 [ point_init::point_idx1#0 ]
zp ZP_WORD:14 [ point_init::$4 point_init::y_diff#0 ]
reg byte a [ point_init::$13 ]
reg byte a [ point_init::$14 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]
reg byte a [ bitmap_init::$4 ]

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@23
@23: scope:[] from @begin
to:@24
@24: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @23
@end: scope:[] from @24
[3] phi() [ ] ( )
main: scope:[main] from @23
main: scope:[main] from @24
[4] phi() [ ] ( main:2 [ ] )
[5] call lin16u_gen [ ] ( main:2 [ ] )
to:main::@3

View File

@ -173,20 +173,22 @@ signed byte div8s(signed byte dividend, signed byte divisor) {
// Remainder after signed 16 bit division
signed word rem16s = 0;
// Perform division on two signed 16-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem16s.
// Perform division on two signed 16-bit numbers with an initial remainder.
// Returns dividend/divisor. The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
signed word div16s(signed word dividend, signed word divisor) {
signed word divr16s(signed word dividend, signed word divisor, signed word rem) {
byte neg = 0;
word dividendu = 0;
if(dividend<0) {
word remu = 0;
if(dividend<0 || rem<0) {
dividendu = (word)-dividend;
remu = (word)-rem;
neg = 1;
} else {
dividendu = (word)dividend;
remu = (word)rem;
}
word divisoru = 0;
if(divisor<0) {
@ -195,7 +197,7 @@ signed word div16s(signed word dividend, signed word divisor) {
} else {
divisoru = (word)divisor;
}
word resultu = div16u(dividendu, divisoru);
word resultu = divr16u(dividendu, divisoru, remu);
if(neg==0) {
rem16s = (signed word)rem16u;
return (signed word)resultu;
@ -205,6 +207,16 @@ signed word div16s(signed word dividend, signed word divisor) {
}
}
// Perform division on two signed 16-bit numbers
// Returns dividend/divisor.
// The remainder will be set into the global variable rem16s.
// Implemented using simple binary division
// Follows the C99 standard by truncating toward zero on negative results.
// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
signed word div16s(signed word dividend, signed word divisor) {
return divr16s(dividend, divisor, 0);
}
Adding pre/post-modifier (byte) divr8u::quotient ← ++ (byte) divr8u::quotient
Adding pre/post-modifier (word) divr16u::quotient ← ++ (word) divr16u::quotient
Importing print.kc
@ -351,6 +363,7 @@ SYMBOLS
(label) @21
(label) @22
(label) @23
(label) @24
(label) @3
(label) @4
(label) @5
@ -361,44 +374,11 @@ SYMBOLS
(label) @begin
(label) @end
(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor)
(bool~) div16s::$0
(word~) div16s::$1
(bool~) div16s::$10
(signed word~) div16s::$11
(signed word~) div16s::$12
(signed word~) div16s::$13
(signed word~) div16s::$14
(signed word~) div16s::$15
(signed word~) div16s::$16
(signed word~) div16s::$2
(word~) div16s::$3
(bool~) div16s::$4
(word~) div16s::$5
(signed word~) div16s::$6
(word~) div16s::$7
(byte/word/dword~) div16s::$8
(word~) div16s::$9
(signed word~) div16s::$0
(label) div16s::@1
(label) div16s::@10
(label) div16s::@11
(label) div16s::@12
(label) div16s::@13
(label) div16s::@14
(label) div16s::@2
(label) div16s::@3
(label) div16s::@4
(label) div16s::@5
(label) div16s::@6
(label) div16s::@7
(label) div16s::@8
(label) div16s::@9
(label) div16s::@return
(signed word) div16s::dividend
(word) div16s::dividendu
(signed word) div16s::divisor
(word) div16s::divisoru
(byte) div16s::neg
(word) div16s::resultu
(signed word) div16s::return
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
(word~) div16u::$0
@ -467,6 +447,53 @@ SYMBOLS
(byte) div8u::dividend
(byte) div8u::divisor
(byte) div8u::return
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(bool~) divr16s::$0
(bool~) divr16s::$1
(word~) divr16s::$10
(signed word~) divr16s::$11
(word~) divr16s::$12
(byte/word/dword~) divr16s::$13
(word~) divr16s::$14
(bool~) divr16s::$15
(signed word~) divr16s::$16
(signed word~) divr16s::$17
(signed word~) divr16s::$18
(signed word~) divr16s::$19
(bool~) divr16s::$2
(signed word~) divr16s::$20
(signed word~) divr16s::$21
(word~) divr16s::$3
(word~) divr16s::$4
(signed word~) divr16s::$5
(word~) divr16s::$6
(signed word~) divr16s::$7
(word~) divr16s::$8
(bool~) divr16s::$9
(label) divr16s::@1
(label) divr16s::@10
(label) divr16s::@11
(label) divr16s::@12
(label) divr16s::@13
(label) divr16s::@14
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@5
(label) divr16s::@6
(label) divr16s::@7
(label) divr16s::@8
(label) divr16s::@9
(label) divr16s::@return
(signed word) divr16s::dividend
(word) divr16s::dividendu
(signed word) divr16s::divisor
(word) divr16s::divisoru
(byte) divr16s::neg
(signed word) divr16s::rem
(word) divr16s::remu
(word) divr16s::resultu
(signed word) divr16s::return
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(word~) divr16u::$0
(byte~) divr16u::$1
@ -922,79 +949,99 @@ div8s::@14: scope:[div8s] from
@6: scope:[] from @5
(signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:@7
divr16s: scope:[divr16s] from
(byte) divr16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::remu ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$0 ← (signed word) divr16s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$1 ← (signed word) divr16s::rem < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
if((bool~) divr16s::$2) goto divr16s::@1
to:divr16s::@7
divr16s::@1: scope:[divr16s] from divr16s divr16s::@8
(signed word~) divr16s::$5 ← - (signed word) divr16s::dividend
(word~) divr16s::$6 ← ((word)) (signed word~) divr16s::$5
(word) divr16s::dividendu ← (word~) divr16s::$6
(signed word~) divr16s::$7 ← - (signed word) divr16s::rem
(word~) divr16s::$8 ← ((word)) (signed word~) divr16s::$7
(word) divr16s::remu ← (word~) divr16s::$8
(byte) divr16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1
to:divr16s::@2
divr16s::@7: scope:[divr16s] from divr16s
(word~) divr16s::$3 ← ((word)) (signed word) divr16s::dividend
(word) divr16s::dividendu ← (word~) divr16s::$3
(word~) divr16s::$4 ← ((word)) (signed word) divr16s::rem
(word) divr16s::remu ← (word~) divr16s::$4
to:divr16s::@2
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7
(word) divr16s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) divr16s::$9 ← (signed word) divr16s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) divr16s::$9) goto divr16s::@3
to:divr16s::@9
divr16s::@8: scope:[divr16s] from
to:divr16s::@1
divr16s::@3: scope:[divr16s] from divr16s::@10 divr16s::@2
(signed word~) divr16s::$11 ← - (signed word) divr16s::divisor
(word~) divr16s::$12 ← ((word)) (signed word~) divr16s::$11
(word) divr16s::divisoru ← (word~) divr16s::$12
(byte/word/dword~) divr16s::$13 ← (byte) divr16s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) divr16s::neg ← (byte/word/dword~) divr16s::$13
to:divr16s::@4
divr16s::@9: scope:[divr16s] from divr16s::@2
(word~) divr16s::$10 ← ((word)) (signed word) divr16s::divisor
(word) divr16s::divisoru ← (word~) divr16s::$10
to:divr16s::@4
divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9
(word~) divr16s::$14 ← call divr16u (word) divr16s::dividendu (word) divr16s::divisoru (word) divr16s::remu
(word) divr16s::resultu ← (word~) divr16s::$14
(bool~) divr16s::$15 ← (byte) divr16s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) divr16s::$15) goto divr16s::@5
to:divr16s::@11
divr16s::@10: scope:[divr16s] from
to:divr16s::@3
divr16s::@5: scope:[divr16s] from divr16s::@13 divr16s::@4
(signed word~) divr16s::$20 ← ((signed word)) (word) rem16u
(signed word) rem16s ← (signed word~) divr16s::$20
(signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu
(signed word) divr16s::return ← (signed word~) divr16s::$21
to:divr16s::@return
divr16s::@11: scope:[divr16s] from divr16s::@4
(signed word~) divr16s::$16 ← ((signed word)) (word) rem16u
(signed word~) divr16s::$17 ← - (signed word~) divr16s::$16
(signed word) rem16s ← (signed word~) divr16s::$17
(signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu
(signed word~) divr16s::$19 ← - (signed word~) divr16s::$18
(signed word) divr16s::return ← (signed word~) divr16s::$19
to:divr16s::@return
divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@5 divr16s::@6
(signed word) divr16s::return ← (signed word) divr16s::return
return (signed word) divr16s::return
to:@return
divr16s::@12: scope:[divr16s] from
to:divr16s::@6
divr16s::@6: scope:[divr16s] from divr16s::@12 divr16s::@14
to:divr16s::@return
divr16s::@13: scope:[divr16s] from
to:divr16s::@5
divr16s::@14: scope:[divr16s] from
to:divr16s::@6
@7: scope:[] from @6
to:@8
div16s: scope:[div16s] from
(byte) div16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) div16s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) div16s::$0 ← (signed word) div16s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) div16s::$0) goto div16s::@1
to:div16s::@7
div16s::@1: scope:[div16s] from div16s div16s::@8
(signed word~) div16s::$2 ← - (signed word) div16s::dividend
(word~) div16s::$3 ← ((word)) (signed word~) div16s::$2
(word) div16s::dividendu ← (word~) div16s::$3
(byte) div16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1
to:div16s::@2
div16s::@7: scope:[div16s] from div16s
(word~) div16s::$1 ← ((word)) (signed word) div16s::dividend
(word) div16s::dividendu ← (word~) div16s::$1
to:div16s::@2
div16s::@2: scope:[div16s] from div16s::@1 div16s::@7
(word) div16s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) div16s::$4 ← (signed word) div16s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) div16s::$4) goto div16s::@3
to:div16s::@9
div16s::@8: scope:[div16s] from
to:div16s::@1
div16s::@3: scope:[div16s] from div16s::@10 div16s::@2
(signed word~) div16s::$6 ← - (signed word) div16s::divisor
(word~) div16s::$7 ← ((word)) (signed word~) div16s::$6
(word) div16s::divisoru ← (word~) div16s::$7
(byte/word/dword~) div16s::$8 ← (byte) div16s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) div16s::neg ← (byte/word/dword~) div16s::$8
to:div16s::@4
div16s::@9: scope:[div16s] from div16s::@2
(word~) div16s::$5 ← ((word)) (signed word) div16s::divisor
(word) div16s::divisoru ← (word~) div16s::$5
to:div16s::@4
div16s::@4: scope:[div16s] from div16s::@3 div16s::@9
(word~) div16s::$9 ← call div16u (word) div16s::dividendu (word) div16s::divisoru
(word) div16s::resultu ← (word~) div16s::$9
(bool~) div16s::$10 ← (byte) div16s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0
if((bool~) div16s::$10) goto div16s::@5
to:div16s::@11
div16s::@10: scope:[div16s] from
to:div16s::@3
div16s::@5: scope:[div16s] from div16s::@13 div16s::@4
(signed word~) div16s::$15 ← ((signed word)) (word) rem16u
(signed word) rem16s ← (signed word~) div16s::$15
(signed word~) div16s::$16 ← ((signed word)) (word) div16s::resultu
(signed word) div16s::return ← (signed word~) div16s::$16
(signed word~) div16s::$0 ← call divr16s (signed word) div16s::dividend (signed word) div16s::divisor (byte/signed byte/word/signed word/dword/signed dword) 0
(signed word) div16s::return ← (signed word~) div16s::$0
to:div16s::@return
div16s::@11: scope:[div16s] from div16s::@4
(signed word~) div16s::$11 ← ((signed word)) (word) rem16u
(signed word~) div16s::$12 ← - (signed word~) div16s::$11
(signed word) rem16s ← (signed word~) div16s::$12
(signed word~) div16s::$13 ← ((signed word)) (word) div16s::resultu
(signed word~) div16s::$14 ← - (signed word~) div16s::$13
(signed word) div16s::return ← (signed word~) div16s::$14
to:div16s::@return
div16s::@return: scope:[div16s] from div16s::@11 div16s::@5 div16s::@6
div16s::@return: scope:[div16s] from div16s div16s::@1
(signed word) div16s::return ← (signed word) div16s::return
return (signed word) div16s::return
to:@return
div16s::@12: scope:[div16s] from
to:div16s::@6
div16s::@6: scope:[div16s] from div16s::@12 div16s::@14
div16s::@1: scope:[div16s] from
to:div16s::@return
div16s::@13: scope:[div16s] from
to:div16s::@5
div16s::@14: scope:[div16s] from
to:div16s::@6
@7: scope:[] from @6
@8: scope:[] from @7
(byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor
to:@8
to:@9
print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
@ -1032,8 +1079,8 @@ print_str_lines::@10: scope:[print_str_lines] from
print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3
return
to:@return
@8: scope:[] from @7
to:@9
@9: scope:[] from @8
to:@10
print_str_ln: scope:[print_str_ln] from
(void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str
(void~) print_str_ln::$1 ← call print_ln
@ -1041,8 +1088,8 @@ print_str_ln: scope:[print_str_ln] from
print_str_ln::@return: scope:[print_str_ln] from print_str_ln
return
to:@return
@9: scope:[] from @8
to:@10
@10: scope:[] from @9
to:@11
print_str: scope:[print_str] from
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
@ -1065,8 +1112,8 @@ print_str::@6: scope:[print_str] from
print_str::@return: scope:[print_str] from print_str::@3
return
to:@return
@10: scope:[] from @9
to:@11
@11: scope:[] from @10
to:@12
print_str_at: scope:[print_str_at] from
to:print_str_at::@1
print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2
@ -1089,8 +1136,8 @@ print_str_at::@6: scope:[print_str_at] from
print_str_at::@return: scope:[print_str_at] from print_str_at::@3
return
to:@return
@11: scope:[] from @10
to:@12
@12: scope:[] from @11
to:@13
print_ln: scope:[print_ln] from
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
@ -1105,8 +1152,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1
print_ln::@return: scope:[print_ln] from print_ln::@2
return
to:@return
@12: scope:[] from @11
to:@13
@13: scope:[] from @12
to:@14
print_sword: scope:[print_sword] from
(bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sword::$1 ← ! (bool~) print_sword::$0
@ -1124,8 +1171,8 @@ print_sword::@2: scope:[print_sword] from print_sword
print_sword::@return: scope:[print_sword] from print_sword::@1
return
to:@return
@13: scope:[] from @12
to:@14
@14: scope:[] from @13
to:@15
print_sbyte: scope:[print_sbyte] from
(bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0
@ -1143,8 +1190,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1
return
to:@return
@14: scope:[] from @13
to:@15
@15: scope:[] from @14
to:@16
print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w
(void~) print_word::$1 ← call print_byte (byte~) print_word::$0
@ -1154,8 +1201,8 @@ print_word: scope:[print_word] from
print_word::@return: scope:[print_word] from print_word
return
to:@return
@15: scope:[] from @14
to:@16
@16: scope:[] from @15
to:@17
print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw
(void~) print_dword::$1 ← call print_word (word~) print_dword::$0
@ -1165,8 +1212,8 @@ print_dword: scope:[print_dword] from
print_dword::@return: scope:[print_dword] from print_dword
return
to:@return
@16: scope:[] from @15
to:@17
@17: scope:[] from @16
to:@18
print_sdword: scope:[print_sdword] from
(bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0
@ -1184,9 +1231,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
return
to:@return
@17: scope:[] from @16
@18: scope:[] from @17
(byte[]) print_hextab ← (string) "0123456789abcdef"
to:@18
to:@19
print_byte: scope:[print_byte] from
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
(void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0)
@ -1196,8 +1243,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte
return
to:@return
@18: scope:[] from @17
to:@19
@19: scope:[] from @18
to:@20
print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch
(byte*) print_char_cursor ← ++ (byte*) print_char_cursor
@ -1205,8 +1252,8 @@ print_char: scope:[print_char] from
print_char::@return: scope:[print_char] from print_char
return
to:@return
@19: scope:[] from @18
to:@20
@20: scope:[] from @19
to:@21
print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen
to:print_cls::@1
@ -1224,8 +1271,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
print_cls::@return: scope:[print_cls] from print_cls::@2
return
to:@return
@20: scope:[] from @19
to:@21
@21: scope:[] from @20
to:@22
print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::screen
(byte*) print_line_cursor ← (byte*) print_screen
@ -1234,8 +1281,8 @@ print_set_screen: scope:[print_set_screen] from
print_set_screen::@return: scope:[print_set_screen] from print_set_screen
return
to:@return
@21: scope:[] from @20
to:@22
@22: scope:[] from @21
to:@23
main: scope:[main] from
(word[20]) main::lintab1 ← { fill( 20, 0) }
(void~) main::$0 ← call lin16u_gen (word/signed word/dword/signed dword) 557 (word/signed word/dword/signed dword) 29793 (word[20]) main::lintab1 (byte/signed byte/word/signed word/dword/signed dword) 20
@ -1280,8 +1327,8 @@ main::@2: scope:[main] from main::@1
main::@return: scope:[main] from main::@2
return
to:@return
@22: scope:[] from @21
to:@23
@23: scope:[] from @22
to:@24
lin16u_gen: scope:[lin16u_gen] from
(word~) lin16u_gen::$0 ← (word) lin16u_gen::max - (word) lin16u_gen::min
(word) lin16u_gen::ampl ← (word~) lin16u_gen::$0
@ -1311,11 +1358,12 @@ lin16u_gen::@2: scope:[lin16u_gen] from lin16u_gen::@1
lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@2
return
to:@return
@23: scope:[] from @22
@24: scope:[] from @23
call main
to:@end
@end: scope:[] from @23
@end: scope:[] from @24
Removing unused procedure div16u
Removing unused procedure div32u16u
Removing unused procedure div8s
Removing unused procedure div16s
@ -1327,7 +1375,7 @@ Removing unused procedure print_sbyte
Removing unused procedure print_sdword
Removing unused procedure print_set_screen
Removing unused procedure div8u
Removing unused procedure div16u
Removing unused procedure divr16s
Removing unused procedure print_dword
Removing unused procedure divr8u
Eliminating unused variable (byte) rem8u and assignment [0] (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0
@ -1379,24 +1427,25 @@ Removing empty block @3
Removing empty block @4
Removing empty block @5
Removing empty block @6
Removing empty block @8
Removing empty block @7
Removing empty block @9
Removing empty block @10
Removing empty block print_str::@4
Removing empty block print_str::@3
Removing empty block print_str::@5
Removing empty block print_str::@6
Removing empty block @10
Removing empty block @11
Removing empty block @12
Removing empty block @13
Removing empty block @14
Removing empty block @15
Removing empty block @16
Removing empty block @18
Removing empty block @17
Removing empty block @19
Removing empty block @20
Removing empty block @21
Removing empty block @22
Removing empty block @23
Removing empty block lin16u_gen::@2
PROCEDURE MODIFY VARIABLE ANALYSIS
divr16u modifies rem16u
@ -1445,7 +1494,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
to:@2
@2: scope:[] from @begin
(word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:@7
to:@8
divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3
(word) divr16u::divisor#6 ← phi( lin16u_gen/(word) divr16u::divisor#0 lin16u_gen::@3/(word) divr16u::divisor#1 )
(word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(word) divr16u::dividend#2 )
@ -1523,12 +1572,12 @@ divr16u::@return: scope:[divr16u] from divr16u::@6
(word) rem16u#2 ← (word) rem16u#11
return
to:@return
@7: scope:[] from @2
@8: scope:[] from @2
(word) rem16u#27 ← phi( @2/(word) rem16u#0 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
to:@17
to:@18
print_str: scope:[print_str] from main::@10 main::@14 main::@16 main::@18 main::@2 main::@23 main::@25 main::@6 main::@8
(byte*) print_char_cursor#86 ← phi( main::@10/(byte*) print_char_cursor#19 main::@14/(byte*) print_char_cursor#23 main::@16/(byte*) print_char_cursor#25 main::@18/(byte*) print_char_cursor#27 main::@2/(byte*) print_char_cursor#84 main::@23/(byte*) print_char_cursor#32 main::@25/(byte*) print_char_cursor#34 main::@6/(byte*) print_char_cursor#15 main::@8/(byte*) print_char_cursor#17 )
(byte*) print_str::str#12 ← phi( main::@10/(byte*) print_str::str#3 main::@14/(byte*) print_str::str#4 main::@16/(byte*) print_str::str#5 main::@18/(byte*) print_str::str#6 main::@2/(byte*) print_str::str#7 main::@23/(byte*) print_str::str#8 main::@25/(byte*) print_str::str#9 main::@6/(byte*) print_str::str#1 main::@8/(byte*) print_str::str#2 )
@ -1598,13 +1647,13 @@ print_word::@return: scope:[print_word] from print_word::@2
(byte*) print_char_cursor#7 ← (byte*) print_char_cursor#46
return
to:@return
@17: scope:[] from @7
(byte*) print_screen#9 ← phi( @7/(byte*) print_screen#0 )
(byte*) print_char_cursor#88 ← phi( @7/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#31 ← phi( @7/(byte*) print_line_cursor#0 )
(word) rem16u#26 ← phi( @7/(word) rem16u#27 )
@18: scope:[] from @8
(byte*) print_screen#9 ← phi( @8/(byte*) print_screen#0 )
(byte*) print_char_cursor#88 ← phi( @8/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#31 ← phi( @8/(byte*) print_line_cursor#0 )
(word) rem16u#26 ← phi( @8/(word) rem16u#27 )
(byte[]) print_hextab#0 ← (const string) $0
to:@23
to:@24
print_byte: scope:[print_byte] from main::@1 print_word print_word::@1
(byte*) print_char_cursor#81 ← phi( main::@1/(byte*) print_char_cursor#83 print_word/(byte*) print_char_cursor#80 print_word::@1/(byte*) print_char_cursor#5 )
(byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
@ -1665,11 +1714,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
(byte*) print_char_cursor#14 ← (byte*) print_char_cursor#52
return
to:@return
main: scope:[main] from @23
(byte*) print_char_cursor#90 ← phi( @23/(byte*) print_char_cursor#85 )
(byte*) print_line_cursor#36 ← phi( @23/(byte*) print_line_cursor#26 )
(byte*) print_screen#7 ← phi( @23/(byte*) print_screen#8 )
(word) rem16u#20 ← phi( @23/(word) rem16u#24 )
main: scope:[main] from @24
(byte*) print_char_cursor#90 ← phi( @24/(byte*) print_char_cursor#85 )
(byte*) print_line_cursor#36 ← phi( @24/(byte*) print_line_cursor#26 )
(byte*) print_screen#7 ← phi( @24/(byte*) print_screen#8 )
(word) rem16u#20 ← phi( @24/(word) rem16u#24 )
(word[20]) main::lintab1#0 ← { fill( 20, 0) }
(word) lin16u_gen::min#0 ← (word/signed word/dword/signed dword) 557
(word) lin16u_gen::max#0 ← (word/signed word/dword/signed dword) 29793
@ -1995,30 +2044,30 @@ lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1
(word) rem16u#9 ← (word) rem16u#18
return
to:@return
@23: scope:[] from @17
(byte*) print_screen#8 ← phi( @17/(byte*) print_screen#9 )
(byte*) print_char_cursor#85 ← phi( @17/(byte*) print_char_cursor#88 )
(byte*) print_line_cursor#26 ← phi( @17/(byte*) print_line_cursor#31 )
(word) rem16u#24 ← phi( @17/(word) rem16u#26 )
@24: scope:[] from @18
(byte*) print_screen#8 ← phi( @18/(byte*) print_screen#9 )
(byte*) print_char_cursor#85 ← phi( @18/(byte*) print_char_cursor#88 )
(byte*) print_line_cursor#26 ← phi( @18/(byte*) print_line_cursor#31 )
(word) rem16u#24 ← phi( @18/(word) rem16u#26 )
call main
to:@24
@24: scope:[] from @23
(byte*) print_char_cursor#77 ← phi( @23/(byte*) print_char_cursor#38 )
(byte*) print_line_cursor#20 ← phi( @23/(byte*) print_line_cursor#9 )
(word) rem16u#19 ← phi( @23/(word) rem16u#6 )
to:@25
@25: scope:[] from @24
(byte*) print_char_cursor#77 ← phi( @24/(byte*) print_char_cursor#38 )
(byte*) print_line_cursor#20 ← phi( @24/(byte*) print_line_cursor#9 )
(word) rem16u#19 ← phi( @24/(word) rem16u#6 )
(word) rem16u#10 ← (word) rem16u#19
(byte*) print_line_cursor#10 ← (byte*) print_line_cursor#20
(byte*) print_char_cursor#39 ← (byte*) print_char_cursor#77
to:@end
@end: scope:[] from @24
@end: scope:[] from @25
SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @17
(label) @18
(label) @2
(label) @23
(label) @24
(label) @7
(label) @25
(label) @8
(label) @begin
(label) @end
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
@ -2952,15 +3001,15 @@ Succesful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const word) rem16u#0
Succesful SSA optimization PassNEliminateUnusedVars
Culled Empty Block (label) @2
Culled Empty Block (label) @7
Culled Empty Block (label) @8
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) @17
Culled Empty Block (label) @18
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@13
Culled Empty Block (label) main::@28
Culled Empty Block (label) @24
Culled Empty Block (label) @25
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1
Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0
@ -3199,7 +3248,7 @@ Inlining constant with different constant siblings (const word) divr16u::divisor
Constant inlined divr16u::divisor#1 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined divr16u::divisor#0 = (byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1
Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @23 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Block Sequence Planned @begin @24 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Added new block during phi lifting main::@29(between main::@21 and main::@1)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
@ -3207,9 +3256,9 @@ Added new block during phi lifting lin16u_gen::@5(between lin16u_gen::@1 and lin
Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1)
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
Block Sequence Planned @begin @23 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return main::@29 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return lin16u_gen::@5 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9
Block Sequence Planned @begin @24 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return main::@29 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return lin16u_gen::@5 divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @23
Adding NOP phi() at start of @24
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@3
@ -3308,9 +3357,9 @@ Culled Empty Block (label) lin16u_gen::@5
Culled Empty Block (label) divr16u::@8
Culled Empty Block (label) divr16u::@10
Culled Empty Block (label) divr16u::@9
Block Sequence Planned @begin @23 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Block Sequence Planned @begin @24 @end main main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@1 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@20 main::@21 main::@2 main::@22 main::@23 main::@24 main::@25 main::@26 main::@27 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return lin16u_gen lin16u_gen::@3 lin16u_gen::@4 lin16u_gen::@1 lin16u_gen::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @23
Adding NOP phi() at start of @24
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@3
@ -3354,14 +3403,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@23
@23: scope:[] from @begin
to:@24
@24: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @23
@end: scope:[] from @24
[3] phi() [ ] ( )
main: scope:[main] from @23
main: scope:[main] from @24
[4] phi() [ ] ( main:2 [ ] )
[5] call lin16u_gen [ ] ( main:2 [ ] )
to:main::@3
@ -3627,67 +3676,67 @@ divr16u::@return: scope:[divr16u] from divr16u::@6
DOMINATORS
@begin dominated by @begin
@23 dominated by @23 @begin
@end dominated by @23 @end @begin
main dominated by @23 main @begin
main::@3 dominated by @23 main main::@3 @begin
main::@4 dominated by @23 main main::@3 main::@4 @begin
main::@5 dominated by @23 main main::@5 main::@3 main::@4 @begin
main::@6 dominated by @23 main main::@5 main::@6 main::@3 main::@4 @begin
main::@7 dominated by @23 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin
main::@8 dominated by @23 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin
main::@9 dominated by main::@9 @23 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin
main::@10 dominated by main::@9 @23 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin main::@10
main::@11 dominated by main::@9 @23 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10
main::@12 dominated by main::@9 @23 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12
main::@1 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12
main::@14 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12 main::@14
main::@15 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12 main::@15 main::@14
main::@16 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@16 main::@12 main::@15 main::@14
main::@17 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@17 main::@16 main::@12 main::@15 main::@14
main::@18 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@17 main::@16 main::@18 main::@12 main::@15 main::@14
main::@19 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@20 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@21 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@21 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@2 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@21 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@22 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@23 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@23 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@24 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@24 main::@23 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@25 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@24 main::@23 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@26 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@24 main::@23 main::@26 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@27 dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@27 main::@24 main::@23 main::@26 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@return dominated by main::@9 @23 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@return main::@22 main::@21 main::@27 main::@24 main::@23 main::@26 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
print_ln dominated by main::@9 @23 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin print_ln main::@11 main::@10 main::@12
print_ln::@1 dominated by main::@9 @23 print_ln::@1 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin print_ln main::@11 main::@10 main::@12
print_ln::@return dominated by main::@9 @23 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@5 main::@6 main::@3 main::@4 @begin print_ln main::@11 main::@10 main::@12
print_word dominated by @23 main::@7 main print_word main::@5 main::@6 main::@3 main::@4 @begin
print_word::@1 dominated by @23 main::@7 main print_word main::@5 main::@6 main::@3 main::@4 @begin print_word::@1
print_word::@return dominated by @23 main::@7 main print_word main::@5 main::@6 main::@3 main::@4 @begin print_word::@return print_word::@1
print_byte dominated by @23 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin print_byte
print_byte::@1 dominated by @23 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin print_byte::@1 print_byte
print_byte::@return dominated by @23 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin print_byte::@return print_byte::@1 print_byte
print_char dominated by @23 main::@7 main print_char main::@5 main::@6 main::@3 main::@4 @begin print_byte
print_char::@return dominated by @23 main::@7 main print_char main::@5 main::@6 main::@3 main::@4 print_char::@return @begin print_byte
print_str dominated by @23 main main::@5 main::@6 main::@3 main::@4 @begin print_str
print_str::@1 dominated by @23 main main::@5 main::@6 main::@3 main::@4 @begin print_str::@1 print_str
print_str::@return dominated by @23 main main::@5 main::@6 main::@3 main::@4 @begin print_str::@return print_str::@1 print_str
print_str::@2 dominated by @23 main main::@5 main::@6 main::@3 main::@4 @begin print_str::@1 print_str::@2 print_str
print_cls dominated by @23 main main::@5 main::@3 main::@4 @begin print_cls
print_cls::@1 dominated by @23 main main::@5 main::@3 main::@4 @begin print_cls::@1 print_cls
print_cls::@return dominated by @23 main main::@5 main::@3 main::@4 @begin print_cls::@return print_cls::@1 print_cls
lin16u_gen dominated by @23 main @begin lin16u_gen
lin16u_gen::@3 dominated by @23 main @begin lin16u_gen::@3 lin16u_gen
lin16u_gen::@4 dominated by @23 main @begin lin16u_gen::@3 lin16u_gen::@4 lin16u_gen
lin16u_gen::@1 dominated by @23 main @begin lin16u_gen::@3 lin16u_gen::@1 lin16u_gen::@4 lin16u_gen
lin16u_gen::@return dominated by @23 main @begin lin16u_gen::@3 lin16u_gen::@1 lin16u_gen::@4 lin16u_gen::@return lin16u_gen
divr16u dominated by divr16u @23 main @begin lin16u_gen
divr16u::@1 dominated by divr16u @23 divr16u::@1 main @begin lin16u_gen
divr16u::@4 dominated by divr16u @23 divr16u::@1 main divr16u::@4 @begin lin16u_gen
divr16u::@2 dominated by divr16u @23 divr16u::@2 divr16u::@1 main @begin lin16u_gen
divr16u::@5 dominated by divr16u @23 divr16u::@2 divr16u::@1 main divr16u::@5 @begin lin16u_gen
divr16u::@3 dominated by divr16u @23 divr16u::@2 divr16u::@1 main divr16u::@3 @begin lin16u_gen
divr16u::@6 dominated by divr16u @23 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin lin16u_gen
divr16u::@return dominated by divr16u @23 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin lin16u_gen divr16u::@return
@24 dominated by @24 @begin
@end dominated by @24 @end @begin
main dominated by @24 main @begin
main::@3 dominated by @24 main main::@3 @begin
main::@4 dominated by @24 main main::@3 main::@4 @begin
main::@5 dominated by @24 main main::@5 main::@3 main::@4 @begin
main::@6 dominated by @24 main main::@5 main::@6 main::@3 main::@4 @begin
main::@7 dominated by @24 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin
main::@8 dominated by @24 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin
main::@9 dominated by main::@9 @24 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin
main::@10 dominated by main::@9 @24 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin main::@10
main::@11 dominated by main::@9 @24 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10
main::@12 dominated by main::@9 @24 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12
main::@1 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12
main::@14 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12 main::@14
main::@15 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@12 main::@15 main::@14
main::@16 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@16 main::@12 main::@15 main::@14
main::@17 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@17 main::@16 main::@12 main::@15 main::@14
main::@18 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@17 main::@16 main::@18 main::@12 main::@15 main::@14
main::@19 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@20 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@21 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@21 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@2 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@21 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@22 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@23 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@23 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@24 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@24 main::@23 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@25 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@24 main::@23 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@26 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@24 main::@23 main::@26 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@27 dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@22 main::@21 main::@27 main::@24 main::@23 main::@26 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
main::@return dominated by main::@9 @24 main::@7 main::@8 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@20 main::@return main::@22 main::@21 main::@27 main::@24 main::@23 main::@26 main::@25 main::@11 main::@10 main::@17 main::@16 main::@19 main::@18 main::@12 main::@15 main::@14
print_ln dominated by main::@9 @24 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin print_ln main::@11 main::@10 main::@12
print_ln::@1 dominated by main::@9 print_ln::@1 @24 main::@7 main::@8 main main::@5 main::@6 main::@3 main::@4 @begin print_ln main::@11 main::@10 main::@12
print_ln::@return dominated by main::@9 print_ln::@1 @24 main::@7 main::@8 main print_ln::@return main::@5 main::@6 main::@3 main::@4 @begin print_ln main::@11 main::@10 main::@12
print_word dominated by @24 main::@7 main print_word main::@5 main::@6 main::@3 main::@4 @begin
print_word::@1 dominated by @24 main::@7 main print_word main::@5 main::@6 main::@3 main::@4 @begin print_word::@1
print_word::@return dominated by @24 main::@7 main print_word main::@5 main::@6 main::@3 main::@4 @begin print_word::@return print_word::@1
print_byte dominated by @24 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin print_byte
print_byte::@1 dominated by @24 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin print_byte::@1 print_byte
print_byte::@return dominated by @24 main::@7 main main::@5 main::@6 main::@3 main::@4 @begin print_byte::@return print_byte::@1 print_byte
print_char dominated by @24 main::@7 main print_char main::@5 main::@6 main::@3 main::@4 @begin print_byte
print_char::@return dominated by @24 main::@7 main print_char main::@5 main::@6 main::@3 main::@4 print_char::@return @begin print_byte
print_str dominated by @24 main main::@5 main::@6 main::@3 main::@4 @begin print_str
print_str::@1 dominated by @24 main main::@5 main::@6 main::@3 main::@4 @begin print_str::@1 print_str
print_str::@return dominated by @24 main main::@5 main::@6 main::@3 main::@4 @begin print_str::@return print_str::@1 print_str
print_str::@2 dominated by @24 main main::@5 main::@6 main::@3 main::@4 @begin print_str::@1 print_str::@2 print_str
print_cls dominated by @24 main main::@5 main::@3 main::@4 @begin print_cls
print_cls::@1 dominated by @24 main main::@5 main::@3 main::@4 @begin print_cls::@1 print_cls
print_cls::@return dominated by @24 main main::@5 main::@3 main::@4 @begin print_cls::@return print_cls::@1 print_cls
lin16u_gen dominated by @24 main @begin lin16u_gen
lin16u_gen::@3 dominated by @24 main @begin lin16u_gen::@3 lin16u_gen
lin16u_gen::@4 dominated by @24 main @begin lin16u_gen::@3 lin16u_gen::@4 lin16u_gen
lin16u_gen::@1 dominated by @24 main @begin lin16u_gen::@3 lin16u_gen::@1 lin16u_gen::@4 lin16u_gen
lin16u_gen::@return dominated by @24 main @begin lin16u_gen::@3 lin16u_gen::@1 lin16u_gen::@4 lin16u_gen::@return lin16u_gen
divr16u dominated by divr16u @24 main @begin lin16u_gen
divr16u::@1 dominated by divr16u @24 divr16u::@1 main @begin lin16u_gen
divr16u::@4 dominated by divr16u @24 divr16u::@1 main divr16u::@4 @begin lin16u_gen
divr16u::@2 dominated by divr16u @24 divr16u::@2 divr16u::@1 main @begin lin16u_gen
divr16u::@5 dominated by divr16u @24 divr16u::@2 divr16u::@1 main divr16u::@5 @begin lin16u_gen
divr16u::@3 dominated by divr16u @24 divr16u::@2 divr16u::@1 main divr16u::@3 @begin lin16u_gen
divr16u::@6 dominated by divr16u @24 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin lin16u_gen
divr16u::@return dominated by divr16u @24 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin lin16u_gen divr16u::@return
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@21 blocks: null
@ -3949,17 +3998,17 @@ INITIAL ASM
.label print_line_cursor = 3
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @23 [phi:@begin->@23]
b23_from_bbegin:
jmp b23
//SEG4 @23
b23:
//SEG3 [1] phi from @begin to @24 [phi:@begin->@24]
b24_from_bbegin:
jmp b24
//SEG4 @24
b24:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @23 to main [phi:@23->main]
main_from_b23:
//SEG6 [4] phi from @24 to main [phi:@24->main]
main_from_b24:
jsr main
//SEG7 [3] phi from @23 to @end [phi:@23->@end]
bend_from_b23:
//SEG7 [3] phi from @24 to @end [phi:@24->@end]
bend_from_b24:
jmp bend
//SEG8 @end
bend:
@ -5067,17 +5116,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_line_cursor = 3
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @23 [phi:@begin->@23]
b23_from_bbegin:
jmp b23
//SEG4 @23
b23:
//SEG3 [1] phi from @begin to @24 [phi:@begin->@24]
b24_from_bbegin:
jmp b24
//SEG4 @24
b24:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @23 to main [phi:@23->main]
main_from_b23:
//SEG6 [4] phi from @24 to main [phi:@24->main]
main_from_b24:
jsr main
//SEG7 [3] phi from @23 to @end [phi:@23->@end]
bend_from_b23:
//SEG7 [3] phi from @24 to @end [phi:@24->@end]
bend_from_b24:
jmp bend
//SEG8 @end
bend:
@ -5983,7 +6032,7 @@ divr16u: {
print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b23
Removing instruction jmp b24
Removing instruction jmp bend
Removing instruction jmp b3
Removing instruction jmp b4
@ -6059,9 +6108,9 @@ Replacing label b3_from_b2 with b3
Replacing label b3_from_b2 with b3
Replacing label b1_from_b3 with b1
Removing instruction bbegin:
Removing instruction b23_from_bbegin:
Removing instruction main_from_b23:
Removing instruction bend_from_b23:
Removing instruction b24_from_bbegin:
Removing instruction main_from_b24:
Removing instruction bend_from_b24:
Removing instruction b3_from_main:
Removing instruction lin16u_gen_from_b3:
Removing instruction b4_from_b3:
@ -6115,7 +6164,7 @@ Removing instruction b2_from_b4:
Removing instruction b3_from_b2:
Removing instruction b3_from_b5:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b23:
Removing instruction b24:
Removing instruction bend:
Removing instruction lin16u_gen_from_main:
Removing instruction b3:
@ -6182,7 +6231,7 @@ Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
FINAL SYMBOL TABLE
(label) @23
(label) @24
(label) @begin
(label) @end
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
@ -6389,12 +6438,12 @@ Score: 13533
.label print_char_cursor = 7
.label print_line_cursor = 3
//SEG2 @begin
//SEG3 [1] phi from @begin to @23 [phi:@begin->@23]
//SEG4 @23
//SEG3 [1] phi from @begin to @24 [phi:@begin->@24]
//SEG4 @24
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @23 to main [phi:@23->main]
//SEG6 [4] phi from @24 to main [phi:@24->main]
jsr main
//SEG7 [3] phi from @23 to @end [phi:@23->@end]
//SEG7 [3] phi from @24 to @end [phi:@24->@end]
//SEG8 @end
//SEG9 main
main: {

View File

@ -1,4 +1,4 @@
(label) @23
(label) @24
(label) @begin
(label) @end
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)

View File

@ -498,6 +498,7 @@ inci: {
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ i#10 i#11 ]
Statement [12] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ main::a#2 i#11 ] ( main:2 [ main::a#2 i#11 ] ) always clobbers reg byte a
Statement [17] (byte) i#11 ← (byte) i#10 + (byte/signed byte/word/signed word/dword/signed dword) 7 [ i#11 ] ( main:2::inci:5 [ i#11 ] main:2::inci:9 [ main::a#1 i#11 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::a#1 ]
Statement [8] (byte) main::a#1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$0 [ main::a#1 i#11 ] ( main:2 [ main::a#1 i#11 ] ) always clobbers reg byte a

View File

@ -333,7 +333,10 @@ main: {
}
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
Statement [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [7] (byte) main::s#1 ← (byte) main::s#2 + (byte) main::i#2 [ main::i#2 main::s#1 ] ( main:2 [ main::i#2 main::s#1 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ main::s#2 main::s#4 main::s#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES

View File

@ -3217,6 +3217,8 @@ Statement [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (by
Statement [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a
Statement [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a
Statement [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a
Statement [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a
Statement [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 [ print_char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 print_line_cursor#13 print_char_cursor#23 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
@ -3240,6 +3242,7 @@ Statement [40] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#6 + (by
Statement [41] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a
Statement [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#32 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a
Statement [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:2::print_word:31 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a
Statement [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ) always clobbers reg byte a
Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a
Statement [57] *((byte*) print_char_cursor#23) ← (byte) print_char::ch#2 [ print_char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 print_line_cursor#13 print_char_cursor#23 ] ) always clobbers reg byte y
Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 print_char_cursor#32 print_line_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a
@ -3253,7 +3256,7 @@ Statement [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepar
Statement asm { ldx$fe ldy$ff jsr$bbd4 } always clobbers reg byte x reg byte y
Potential registers zp ZP_BYTE:2 [ main::i#10 main::i#1 ] : zp ZP_BYTE:2 ,
Potential registers zp ZP_WORD:3 [ print_line_cursor#6 print_line_cursor#13 print_line_cursor#1 ] : zp ZP_WORD:3 ,
Potential registers zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x ,
Potential registers zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:5 , reg byte x ,
Potential registers zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:7 [ print_char_cursor#23 print_char_cursor#31 print_char_cursor#32 print_char_cursor#49 print_char_cursor#10 ] : zp ZP_WORD:7 ,
Potential registers zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ] : zp ZP_WORD:9 ,

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@33
@33: scope:[] from @begin
to:@34
@34: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @33
@end: scope:[] from @34
[3] phi() [ ] ( )
main: scope:[main] from @33
main: scope:[main] from @34
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @33
(label) @34
(label) @begin
(label) @end
(dword) PI2_u4f28

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@35
@35: scope:[] from @begin
to:@36
@36: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @35
@end: scope:[] from @36
[3] phi() [ ] ( )
main: scope:[main] from @35
main: scope:[main] from @36
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @35
(label) @36
(label) @begin
(label) @end
(dword) PI2_u4f28

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@33
@33: scope:[] from @begin
to:@34
@34: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @33
@end: scope:[] from @34
[3] phi() [ ] ( )
main: scope:[main] from @33
main: scope:[main] from @34
[4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] )
to:main::@5

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
(label) @33
(label) @34
(label) @begin
(label) @end
(word) PI2_u4f12

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@33
@33: scope:[] from @begin
to:@34
@34: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @33
@end: scope:[] from @34
[3] phi() [ ] ( )
main: scope:[main] from @33
main: scope:[main] from @34
[4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] )
to:main::@5

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @33
(label) @34
(label) @begin
(label) @end
(word) PI2_u4f12

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@34
@34: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @34
main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] )
to:main::@1

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
(label) @34
(label) @35
(label) @begin
(label) @end
(word) PI2_u4f12

View File

@ -7,18 +7,18 @@ main: {
.label s1 = 2
.label s3 = 3
lda #2
ldx #1
ldy #1
jsr sum
sta s1
lda #4
ldx #3
ldy #3
jsr sum
tay
tax
lda #$d
ldx #9
ldy #9
jsr sum
sta s3
tya
txa
clc
adc s1
clc
@ -27,7 +27,7 @@ main: {
rts
}
sum: {
stx $ff
sty $ff
clc
adc $ff
rts

View File

@ -565,14 +565,23 @@ sum: {
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ main::s3#0 ]
Statement [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] ) always clobbers reg byte a
Statement [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::s1#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ main::s2#0 ]
Statement [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) always clobbers reg byte a
Statement [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] ) always clobbers reg byte a
Statement [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ sum::a#3 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ sum::b#3 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ sum::return#0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ main::s1#0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ main::s1#0 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:6 [ sum::return#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:7 [ main::s2#0 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:7 [ main::s2#0 ] : zp ZP_BYTE:7 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:8 [ sum::return#2 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:9 [ main::s3#0 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:9 [ main::s3#0 ] : zp ZP_BYTE:9 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:10 [ main::$3 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:11 [ main::s4#0 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:12 [ sum::return#3 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y ,
@ -584,19 +593,17 @@ Uplift Scope []
Uplifting [sum] best 145 combination reg byte a [ sum::return#0 ] reg byte a [ sum::return#1 ] reg byte a [ sum::return#2 ] zp ZP_BYTE:2 [ sum::a#3 ] zp ZP_BYTE:3 [ sum::b#3 ] zp ZP_BYTE:12 [ sum::return#3 ]
Limited combination testing to 100 combinations of 4096 possible.
Uplifting [main] best 133 combination reg byte a [ main::$3 ] reg byte a [ main::s4#0 ] zp ZP_BYTE:9 [ main::s3#0 ] zp ZP_BYTE:7 [ main::s2#0 ] zp ZP_BYTE:5 [ main::s1#0 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [] best 133 combination
Uplifting [main] best 131 combination reg byte a [ main::$3 ] reg byte a [ main::s4#0 ] zp ZP_BYTE:9 [ main::s3#0 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:5 [ main::s1#0 ]
Limited combination testing to 100 combinations of 432 possible.
Uplifting [] best 131 combination
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ sum::a#3 ]
Uplifting [sum] best 123 combination reg byte x [ sum::a#3 ]
Uplifting [sum] best 121 combination reg byte y [ sum::a#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sum::b#3 ]
Uplifting [sum] best 115 combination reg byte a [ sum::b#3 ]
Uplifting [sum] best 113 combination reg byte a [ sum::b#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ main::s3#0 ]
Uplifting [main] best 115 combination zp ZP_BYTE:9 [ main::s3#0 ]
Uplifting [main] best 113 combination zp ZP_BYTE:9 [ main::s3#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ sum::return#3 ]
Uplifting [sum] best 103 combination reg byte a [ sum::return#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ main::s2#0 ]
Uplifting [main] best 101 combination reg byte y [ main::s2#0 ]
Uplifting [sum] best 101 combination reg byte a [ sum::return#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::s1#0 ]
Uplifting [main] best 101 combination zp ZP_BYTE:5 [ main::s1#0 ]
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ main::s1#0 ]
@ -634,8 +641,8 @@ main: {
sum_from_main:
//SEG12 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuaa=vbuc1
lda #2
//SEG13 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuxx=vbuc1
ldx #1
//SEG13 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuyy=vbuc1
ldy #1
jsr sum
//SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 [ sum::return#0 ] ( main:2 [ sum::return#0 ] )
// (byte) sum::return#0 = (byte) sum::return#3 // register copy reg byte a
@ -649,23 +656,23 @@ main: {
sum_from_b1:
//SEG19 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1
lda #4
//SEG20 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuxx=vbuc1
ldx #3
//SEG20 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1
ldy #3
jsr sum
//SEG21 [9] (byte) sum::return#1 ← (byte) sum::return#3 [ main::s1#0 sum::return#1 ] ( main:2 [ main::s1#0 sum::return#1 ] )
// (byte) sum::return#1 = (byte) sum::return#3 // register copy reg byte a
jmp b2
//SEG22 main::@2
b2:
//SEG23 [10] (byte) main::s2#0 ← (byte) sum::return#1 [ main::s1#0 main::s2#0 ] ( main:2 [ main::s1#0 main::s2#0 ] ) -- vbuyy=vbuaa
tay
//SEG23 [10] (byte) main::s2#0 ← (byte) sum::return#1 [ main::s1#0 main::s2#0 ] ( main:2 [ main::s1#0 main::s2#0 ] ) -- vbuxx=vbuaa
tax
//SEG24 [11] call sum [ sum::return#3 main::s1#0 main::s2#0 ] ( main:2 [ sum::return#3 main::s1#0 main::s2#0 ] )
//SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum]
sum_from_b2:
//SEG26 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuaa=vbuc1
lda #$d
//SEG27 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuxx=vbuc1
ldx #9
//SEG27 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1
ldy #9
jsr sum
//SEG28 [12] (byte) sum::return#2 ← (byte) sum::return#3 [ main::s1#0 main::s2#0 sum::return#2 ] ( main:2 [ main::s1#0 main::s2#0 sum::return#2 ] )
// (byte) sum::return#2 = (byte) sum::return#3 // register copy reg byte a
@ -674,8 +681,8 @@ main: {
b3:
//SEG30 [13] (byte) main::s3#0 ← (byte) sum::return#2 [ main::s1#0 main::s2#0 main::s3#0 ] ( main:2 [ main::s1#0 main::s2#0 main::s3#0 ] ) -- vbuz1=vbuaa
sta s3
//SEG31 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) -- vbuaa=vbuz1_plus_vbuyy
tya
//SEG31 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) -- vbuaa=vbuz1_plus_vbuxx
txa
clc
adc s1
//SEG32 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] ) -- vbuaa=vbuaa_plus_vbuz1
@ -691,8 +698,8 @@ main: {
}
//SEG36 sum
sum: {
//SEG37 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) -- vbuaa=vbuxx_plus_vbuaa
stx $ff
//SEG37 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) -- vbuaa=vbuyy_plus_vbuaa
sty $ff
clc
adc $ff
jmp breturn
@ -741,7 +748,7 @@ FINAL SYMBOL TABLE
(byte) main::s1
(byte) main::s1#0 s1 zp ZP_BYTE:2 0.5714285714285714
(byte) main::s2
(byte) main::s2#0 reg byte y 1.0
(byte) main::s2#0 reg byte x 1.0
(byte) main::s3
(byte) main::s3#0 s3 zp ZP_BYTE:3 2.0
(byte) main::s4
@ -751,7 +758,7 @@ FINAL SYMBOL TABLE
(byte()) sum((byte) sum::a , (byte) sum::b)
(label) sum::@return
(byte) sum::a
(byte) sum::a#3 reg byte x 2.0
(byte) sum::a#3 reg byte y 2.0
(byte) sum::b
(byte) sum::b#3 reg byte a 2.0
(byte) sum::return
@ -760,12 +767,12 @@ FINAL SYMBOL TABLE
(byte) sum::return#2 reg byte a 4.0
(byte) sum::return#3 reg byte a 1.6
reg byte x [ sum::a#3 ]
reg byte y [ sum::a#3 ]
reg byte a [ sum::b#3 ]
reg byte a [ sum::return#0 ]
zp ZP_BYTE:2 [ main::s1#0 ]
reg byte a [ sum::return#1 ]
reg byte y [ main::s2#0 ]
reg byte x [ main::s2#0 ]
reg byte a [ sum::return#2 ]
zp ZP_BYTE:3 [ main::s3#0 ]
reg byte a [ main::$3 ]
@ -798,8 +805,8 @@ main: {
//SEG11 [18] phi from main to sum [phi:main->sum]
//SEG12 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->sum#0] -- vbuaa=vbuc1
lda #2
//SEG13 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuxx=vbuc1
ldx #1
//SEG13 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:main->sum#1] -- vbuyy=vbuc1
ldy #1
jsr sum
//SEG14 [6] (byte) sum::return#0 ← (byte) sum::return#3 [ sum::return#0 ] ( main:2 [ sum::return#0 ] )
// (byte) sum::return#0 = (byte) sum::return#3 // register copy reg byte a
@ -810,28 +817,28 @@ main: {
//SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum]
//SEG19 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main::@1->sum#0] -- vbuaa=vbuc1
lda #4
//SEG20 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuxx=vbuc1
ldx #3
//SEG20 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@1->sum#1] -- vbuyy=vbuc1
ldy #3
jsr sum
//SEG21 [9] (byte) sum::return#1 ← (byte) sum::return#3 [ main::s1#0 sum::return#1 ] ( main:2 [ main::s1#0 sum::return#1 ] )
// (byte) sum::return#1 = (byte) sum::return#3 // register copy reg byte a
//SEG22 main::@2
//SEG23 [10] (byte) main::s2#0 ← (byte) sum::return#1 [ main::s1#0 main::s2#0 ] ( main:2 [ main::s1#0 main::s2#0 ] ) -- vbuyy=vbuaa
tay
//SEG23 [10] (byte) main::s2#0 ← (byte) sum::return#1 [ main::s1#0 main::s2#0 ] ( main:2 [ main::s1#0 main::s2#0 ] ) -- vbuxx=vbuaa
tax
//SEG24 [11] call sum [ sum::return#3 main::s1#0 main::s2#0 ] ( main:2 [ sum::return#3 main::s1#0 main::s2#0 ] )
//SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum]
//SEG26 [18] phi (byte) sum::b#3 = (byte/signed byte/word/signed word/dword/signed dword) 13 [phi:main::@2->sum#0] -- vbuaa=vbuc1
lda #$d
//SEG27 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuxx=vbuc1
ldx #9
//SEG27 [18] phi (byte) sum::a#3 = (byte/signed byte/word/signed word/dword/signed dword) 9 [phi:main::@2->sum#1] -- vbuyy=vbuc1
ldy #9
jsr sum
//SEG28 [12] (byte) sum::return#2 ← (byte) sum::return#3 [ main::s1#0 main::s2#0 sum::return#2 ] ( main:2 [ main::s1#0 main::s2#0 sum::return#2 ] )
// (byte) sum::return#2 = (byte) sum::return#3 // register copy reg byte a
//SEG29 main::@3
//SEG30 [13] (byte) main::s3#0 ← (byte) sum::return#2 [ main::s1#0 main::s2#0 main::s3#0 ] ( main:2 [ main::s1#0 main::s2#0 main::s3#0 ] ) -- vbuz1=vbuaa
sta s3
//SEG31 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) -- vbuaa=vbuz1_plus_vbuyy
tya
//SEG31 [14] (byte~) main::$3 ← (byte) main::s1#0 + (byte) main::s2#0 [ main::s3#0 main::$3 ] ( main:2 [ main::s3#0 main::$3 ] ) -- vbuaa=vbuz1_plus_vbuxx
txa
clc
adc s1
//SEG32 [15] (byte) main::s4#0 ← (byte~) main::$3 + (byte) main::s3#0 [ main::s4#0 ] ( main:2 [ main::s4#0 ] ) -- vbuaa=vbuaa_plus_vbuz1
@ -845,8 +852,8 @@ main: {
}
//SEG36 sum
sum: {
//SEG37 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) -- vbuaa=vbuxx_plus_vbuaa
stx $ff
//SEG37 [19] (byte) sum::return#3 ← (byte) sum::a#3 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:8 [ main::s1#0 sum::return#3 ] main:2::sum:11 [ main::s1#0 main::s2#0 sum::return#3 ] ) -- vbuaa=vbuyy_plus_vbuaa
sty $ff
clc
adc $ff
//SEG38 sum::@return

View File

@ -10,7 +10,7 @@
(byte) main::s1
(byte) main::s1#0 s1 zp ZP_BYTE:2 0.5714285714285714
(byte) main::s2
(byte) main::s2#0 reg byte y 1.0
(byte) main::s2#0 reg byte x 1.0
(byte) main::s3
(byte) main::s3#0 s3 zp ZP_BYTE:3 2.0
(byte) main::s4
@ -20,7 +20,7 @@
(byte()) sum((byte) sum::a , (byte) sum::b)
(label) sum::@return
(byte) sum::a
(byte) sum::a#3 reg byte x 2.0
(byte) sum::a#3 reg byte y 2.0
(byte) sum::b
(byte) sum::b#3 reg byte a 2.0
(byte) sum::return
@ -29,12 +29,12 @@
(byte) sum::return#2 reg byte a 4.0
(byte) sum::return#3 reg byte a 1.6
reg byte x [ sum::a#3 ]
reg byte y [ sum::a#3 ]
reg byte a [ sum::b#3 ]
reg byte a [ sum::return#0 ]
zp ZP_BYTE:2 [ main::s1#0 ]
reg byte a [ sum::return#1 ]
reg byte y [ main::s2#0 ]
reg byte x [ main::s2#0 ]
reg byte a [ sum::return#2 ]
zp ZP_BYTE:3 [ main::s3#0 ]
reg byte a [ main::$3 ]

File diff suppressed because one or more lines are too long

View File

@ -3,8 +3,8 @@
.pc = $80d "Program"
.label print_char_cursor = 8
.label print_line_cursor = 3
.label rem16u = $e
.label rem16s = $e
.label rem16u = $a
.label rem16s = $a
jsr main
main: {
jsr print_cls
@ -17,7 +17,7 @@ main: {
test_16s: {
.label dividend = 5
.label divisor = $13
.label res = $c
.label res = $e
.label i = 2
lda #0
sta i
@ -31,14 +31,6 @@ test_16s: {
sta divisor
lda divisors+1,y
sta divisor+1
lda dividend
sta div16s.dividend
lda dividend+1
sta div16s.dividend+1
lda divisor
sta div16s.divisor
lda divisor+1
sta div16s.divisor+1
jsr div16s
lda print_line_cursor
sta print_char_cursor
@ -81,9 +73,7 @@ test_16s: {
adc #2
sta i
cmp #$c
beq !b1+
jmp b1
!b1:
bne b1
rts
str: .text " / @"
str1: .text " = @"
@ -188,22 +178,43 @@ print_str: {
jmp b1
}
div16s: {
.label _2 = 8
.label _6 = $a
.label resultu = $c
.label return = $c
.label return = $e
.label dividend = 5
.label divisor = $13
lda dividend
sta divr16s.dividend
lda dividend+1
sta divr16s.dividend+1
lda divisor
sta divr16s.divisor
lda divisor+1
sta divr16s.divisor+1
jsr divr16s
rts
}
divr16s: {
.const rem = 0
.label _5 = 8
.label _11 = $c
.label resultu = $e
.label return = $e
.label dividend = 8
.label divisor = $a
.label divisor = $c
.label dividendu = 8
.label divisoru = $a
.label divisoru = $c
.label remu = $a
lda dividend+1
bmi b1
lda #<rem
sta remu
lda #>rem
sta remu+1
ldy #0
b2:
lda divisor+1
bmi b3
b4:
jsr div16u
jsr divr16u
cpy #0
beq breturn
sec
@ -228,50 +239,45 @@ div16s: {
rts
b3:
sec
lda _6
lda _11
eor #$ff
adc #0
sta _6
lda _6+1
sta _11
lda _11+1
eor #$ff
adc #0
sta _6+1
sta _11+1
tya
eor #1
tay
jmp b4
b1:
sec
lda _2
lda _5
eor #$ff
adc #0
sta _2
lda _2+1
sta _5
lda _5+1
eor #$ff
adc #0
sta _2+1
sta _5+1
lda #<-rem
sta remu
lda #>-rem
sta remu+1
ldy #1
jmp b2
}
div16u: {
.label return = $c
.label dividend = 8
.label divisor = $a
jsr divr16u
rts
}
divr16u: {
.label rem = $e
.label rem = $a
.label dividend = 8
.label quotient = $c
.label return = $c
.label divisor = $a
.label quotient = $e
.label return = $e
.label divisor = $c
ldx #0
txa
sta quotient
sta quotient+1
sta rem
sta rem+1
b1:
asl rem
rol rem+1
@ -481,8 +487,8 @@ divr8u: {
}
test_16u: {
.label dividend = 5
.label divisor = $a
.label res = $c
.label divisor = $c
.label res = $e
.label i = 2
lda #0
sta i
@ -496,10 +502,6 @@ test_16u: {
sta divisor
lda divisors+1,y
sta divisor+1
lda dividend
sta div16u.dividend
lda dividend+1
sta div16u.dividend+1
jsr div16u
lda print_line_cursor
sta print_char_cursor
@ -550,6 +552,20 @@ test_16u: {
dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
divisors: .word 5, 7, $b, $d, $11, $13
}
div16u: {
.label return = $e
.label dividend = 5
.label divisor = $c
lda dividend
sta divr16u.dividend
lda dividend+1
sta divr16u.dividend+1
lda #<0
sta divr16u.rem
sta divr16u.rem+1
jsr divr16u
rts
}
test_8u: {
.label dividend = 7
.label divisor = $10

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,57 +1,26 @@
(label) @26
(label) @27
(label) @begin
(label) @end
(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor)
(signed word~) div16s::$2 $2 zp ZP_WORD:8 2.0
(signed word~) div16s::$6 $6 zp ZP_WORD:10 1.0
(label) div16s::@1
(label) div16s::@11
(label) div16s::@15
(label) div16s::@16
(label) div16s::@17
(label) div16s::@18
(label) div16s::@2
(label) div16s::@3
(label) div16s::@4
(label) div16s::@return
(signed word) div16s::dividend
(signed word) div16s::dividend#0 dividend zp ZP_WORD:8 5.0
(word) div16s::dividendu
(word) div16s::dividendu#3 dividendu zp ZP_WORD:8 0.8571428571428571
(word~) div16s::dividendu#7 dividendu zp ZP_WORD:8 4.0
(word~) div16s::dividendu#8 dividendu zp ZP_WORD:8 4.0
(signed word) div16s::dividend#0 dividend zp ZP_WORD:5 6.5
(signed word) div16s::divisor
(signed word) div16s::divisor#0 divisor zp ZP_WORD:10 2.142857142857143
(word) div16s::divisoru
(word) div16s::divisoru#3 divisoru zp ZP_WORD:10 3.0
(word~) div16s::divisoru#4 divisoru zp ZP_WORD:10 4.0
(word~) div16s::divisoru#5 divisoru zp ZP_WORD:10 4.0
(byte) div16s::neg
(byte) div16s::neg#2 reg byte y 2.0
(byte) div16s::neg#3 reg byte y 1.0
(byte) div16s::neg#4 reg byte y 1.0
(word) div16s::resultu
(word) div16s::resultu#0 resultu zp ZP_WORD:12 0.6666666666666666
(signed word) div16s::divisor#0 divisor zp ZP_WORD:19 6.5
(signed word) div16s::return
(signed word) div16s::return#1 return zp ZP_WORD:12 4.0
(signed word) div16s::return#2 return zp ZP_WORD:12 5.0
(signed word) div16s::return#3 return zp ZP_WORD:12 22.0
(signed word~) div16s::return#7 return zp ZP_WORD:12 2.0
(signed word) div16s::return#0 return zp ZP_WORD:14 4.333333333333333
(signed word) div16s::return#2 return zp ZP_WORD:14 22.0
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
(label) div16u::@2
(label) div16u::@return
(word) div16u::dividend
(word) div16u::dividend#0 dividend zp ZP_WORD:8 2.0
(word) div16u::dividend#1 dividend zp ZP_WORD:8 11.0
(word) div16u::dividend#2 dividend zp ZP_WORD:8 15.0
(word) div16u::dividend#0 dividend zp ZP_WORD:5 6.5
(word) div16u::divisor
(word) div16u::divisor#0 divisor zp ZP_WORD:10 4.0
(word) div16u::divisor#1 divisor zp ZP_WORD:10 22.0
(word) div16u::divisor#2 divisor zp ZP_WORD:10 7.5
(word) div16u::divisor#0 divisor zp ZP_WORD:12 6.5
(word) div16u::return
(word) div16u::return#0 return zp ZP_WORD:12 3.75
(word) div16u::return#2 return zp ZP_WORD:12 4.0
(word) div16u::return#3 return zp ZP_WORD:12 22.0
(word) div16u::return#0 return zp ZP_WORD:14 4.333333333333333
(word) div16u::return#2 return zp ZP_WORD:14 22.0
(signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor)
(signed byte~) div8s::$2 reg byte a 2.0
(signed byte~) div8s::$6 reg byte x 1.0
@ -103,6 +72,46 @@
(byte) div8u::return#0 reg byte a 3.75
(byte) div8u::return#2 reg byte a 4.0
(byte) div8u::return#3 reg byte a 22.0
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
(signed word~) divr16s::$11 $11 zp ZP_WORD:12 1.0
(signed word~) divr16s::$5 $5 zp ZP_WORD:8 2.0
(label) divr16s::@1
(label) divr16s::@11
(label) divr16s::@15
(label) divr16s::@17
(label) divr16s::@18
(label) divr16s::@19
(label) divr16s::@2
(label) divr16s::@3
(label) divr16s::@4
(label) divr16s::@return
(signed word) divr16s::dividend
(signed word) divr16s::dividend#0 dividend zp ZP_WORD:8 2.0
(word) divr16s::dividendu
(word) divr16s::dividendu#3 dividendu zp ZP_WORD:8 0.8571428571428571
(word~) divr16s::dividendu#7 dividendu zp ZP_WORD:8 4.0
(word~) divr16s::dividendu#8 dividendu zp ZP_WORD:8 4.0
(signed word) divr16s::divisor
(signed word) divr16s::divisor#0 divisor zp ZP_WORD:12 0.8571428571428571
(word) divr16s::divisoru
(word) divr16s::divisoru#3 divisoru zp ZP_WORD:12 3.0
(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:12 4.0
(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:12 4.0
(byte) divr16s::neg
(byte) divr16s::neg#2 reg byte y 2.0
(byte) divr16s::neg#3 reg byte y 1.0
(byte) divr16s::neg#4 reg byte y 0.8571428571428571
(signed word) divr16s::rem
(const signed word) divr16s::rem#0 rem = (byte/signed byte/word/signed word/dword/signed dword) 0
(word) divr16s::remu
(word) divr16s::remu#3 remu zp ZP_WORD:10 0.2222222222222222
(word) divr16s::resultu
(word) divr16s::resultu#0 resultu zp ZP_WORD:14 0.6666666666666666
(signed word) divr16s::return
(signed word) divr16s::return#1 return zp ZP_WORD:14 4.0
(signed word) divr16s::return#2 return zp ZP_WORD:14 2.0
(signed word) divr16s::return#3 return zp ZP_WORD:14 4.0
(signed word~) divr16s::return#7 return zp ZP_WORD:14 2.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 202.0
(byte~) divr16u::$2 reg byte a 202.0
@ -115,27 +124,34 @@
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:8 25.25
(word) divr16u::dividend#1 dividend zp ZP_WORD:8 1.3333333333333333
(word) divr16u::dividend#2 dividend zp ZP_WORD:8 43.57142857142858
(word) divr16u::dividend#1 dividend zp ZP_WORD:8 2.0
(word) divr16u::dividend#2 dividend zp ZP_WORD:8 1.3333333333333333
(word) divr16u::dividend#3 dividend zp ZP_WORD:8 43.57142857142858
(word) divr16u::dividend#5 dividend zp ZP_WORD:8 6.0
(word) divr16u::divisor
(word) divr16u::divisor#0 divisor zp ZP_WORD:10 12.0
(word) divr16u::divisor#0 divisor zp ZP_WORD:12 4.0
(word) divr16u::divisor#1 divisor zp ZP_WORD:12 2.0
(word) divr16u::divisor#6 divisor zp ZP_WORD:12 12.875
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 151.5
(byte) divr16u::i#2 reg byte x 15.538461538461538
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:12 151.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:12 101.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:12 25.25
(word) divr16u::quotient#1 quotient zp ZP_WORD:14 151.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:14 101.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:14 25.25
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:14 75.75
(word) divr16u::rem#1 rem zp ZP_WORD:14 202.0
(word) divr16u::rem#10 rem zp ZP_WORD:14 101.66666666666667
(word) divr16u::rem#2 rem zp ZP_WORD:14 202.0
(word) divr16u::rem#4 rem zp ZP_WORD:14 202.0
(word) divr16u::rem#5 rem zp ZP_WORD:14 101.0
(word) divr16u::rem#0 rem zp ZP_WORD:10 75.75
(word) divr16u::rem#1 rem zp ZP_WORD:10 202.0
(word) divr16u::rem#10 rem zp ZP_WORD:10 4.0
(word) divr16u::rem#11 rem zp ZP_WORD:10 101.66666666666667
(word) divr16u::rem#2 rem zp ZP_WORD:10 202.0
(word) divr16u::rem#4 rem zp ZP_WORD:10 4.0
(word) divr16u::rem#5 rem zp ZP_WORD:10 204.0
(word) divr16u::rem#6 rem zp ZP_WORD:10 101.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:12 50.83333333333333
(word) divr16u::return#2 return zp ZP_WORD:12 4.0
(word) divr16u::return#0 return zp ZP_WORD:14 43.85714285714286
(word) divr16u::return#2 return zp ZP_WORD:14 4.0
(word) divr16u::return#3 return zp ZP_WORD:14 4.0
(byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem)
(byte~) divr8u::$1 reg byte a 202.0
(label) divr8u::@1
@ -272,11 +288,11 @@
(word) print_word::w#5 w zp ZP_WORD:5 16.666666666666664
(word~) print_word::w#7 w zp ZP_WORD:5 4.0
(signed word) rem16s
(signed word) rem16s#2 rem16s zp ZP_WORD:14 2.0
(signed word) rem16s#3 rem16s zp ZP_WORD:14 0.8333333333333335
(signed word~) rem16s#32 rem16s zp ZP_WORD:14 4.0
(signed word) rem16s#11 rem16s zp ZP_WORD:10 0.6818181818181819
(signed word) rem16s#2 rem16s zp ZP_WORD:10 2.0
(signed word~) rem16s#37 rem16s zp ZP_WORD:10 4.0
(word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:14 0.48148148148148145
(word) rem16u#1 rem16u zp ZP_WORD:10 0.48148148148148145
(signed byte) rem8s
(signed byte) rem8s#2 reg byte x 2.0
(signed byte) rem8s#3 reg byte x 0.8333333333333335
@ -307,7 +323,7 @@
(byte) test_16s::i#1 i zp ZP_BYTE:2 16.5
(byte) test_16s::i#10 i zp ZP_BYTE:2 1.76
(signed word) test_16s::res
(signed word) test_16s::res#0 res zp ZP_WORD:12 2.2
(signed word) test_16s::res#0 res zp ZP_WORD:14 2.2
(const string) test_16s::str str = (string) " / @"
(const string) test_16s::str1 str1 = (string) " = @"
(const string) test_16s::str2 str2 = (string) " @"
@ -328,14 +344,14 @@
(word[]) test_16u::dividends
(const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535 }
(word) test_16u::divisor
(word) test_16u::divisor#0 divisor zp ZP_WORD:10 3.0
(word) test_16u::divisor#0 divisor zp ZP_WORD:12 3.0
(word[]) test_16u::divisors
(const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
(byte) test_16u::i
(byte) test_16u::i#1 i zp ZP_BYTE:2 16.5
(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76
(word) test_16u::res
(word) test_16u::res#0 res zp ZP_WORD:12 2.2
(word) test_16u::res#0 res zp ZP_WORD:14 2.2
(const string) test_16u::str str = (string) " / @"
(const string) test_16u::str1 str1 = (string) " = @"
(const string) test_16u::str2 str2 = (string) " @"
@ -399,14 +415,14 @@
zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ]
zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 test_16u::dividend#0 print_str::str#13 print_str::str#15 print_str::str#0 ]
zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 print_str::str#13 print_str::str#15 print_str::str#0 ]
zp ZP_BYTE:7 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#6 print_sbyte::b#5 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 print_sbyte::b#0 test_8u::dividend#0 test_8s::dividend#0 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:8 [ print_char_cursor#80 print_char_cursor#133 print_char_cursor#130 print_char_cursor#132 print_char_cursor#128 print_char_cursor#129 print_char_cursor#156 print_char_cursor#126 print_char_cursor#17 print_char_cursor#163 print_char_cursor#135 print_char_cursor#131 print_char_cursor#1 print_char_cursor#180 print_char_cursor#186 div16s::dividendu#3 div16s::dividendu#7 div16s::dividendu#8 div16u::dividend#2 div16u::dividend#0 div16u::dividend#1 div16s::dividend#0 div16s::$2 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
zp ZP_WORD:10 [ div16s::divisoru#3 div16s::divisoru#4 div16s::divisoru#5 div16u::divisor#2 div16u::divisor#0 div16u::divisor#1 div16s::divisor#0 div16s::$6 divr16u::divisor#0 test_16u::divisor#0 ]
reg byte y [ div16s::neg#4 div16s::neg#2 div16s::neg#3 ]
zp ZP_WORD:12 [ div16s::return#2 div16s::return#1 div16s::return#7 div16s::resultu#0 div16s::return#3 test_16s::res#0 div16u::return#2 div16u::return#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#3 test_16u::res#0 ]
zp ZP_WORD:14 [ rem16s#3 rem16s#2 rem16s#32 rem16u#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
zp ZP_WORD:8 [ print_char_cursor#80 print_char_cursor#133 print_char_cursor#130 print_char_cursor#132 print_char_cursor#128 print_char_cursor#129 print_char_cursor#156 print_char_cursor#126 print_char_cursor#17 print_char_cursor#163 print_char_cursor#135 print_char_cursor#131 print_char_cursor#1 print_char_cursor#180 print_char_cursor#186 divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::$5 ]
zp ZP_WORD:10 [ divr16s::remu#3 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16s#11 rem16s#2 rem16s#37 rem16u#1 ]
zp ZP_WORD:12 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::$11 test_16u::divisor#0 div16u::divisor#0 ]
reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 div16s::return#2 test_16s::res#0 div16s::return#0 div16u::return#2 test_16u::res#0 div16u::return#0 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ]
reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ]
@ -419,7 +435,7 @@ reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::re
zp ZP_BYTE:17 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 test_8u::res#0 ]
zp ZP_BYTE:18 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
reg byte x [ divr8u::i#2 divr8u::i#1 ]
zp ZP_WORD:19 [ test_16s::divisor#0 ]
zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ divr16u::$1 ]

View File

@ -2667,6 +2667,8 @@ Statement [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main:
Statement [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a
Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a
Statement [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a
Statement [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
Statement [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a
Statement [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:27::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:32::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:37::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:42::print_char:57 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:27::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:32::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:37::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:42::print_char:60 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
@ -2695,6 +2697,7 @@ Statement [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main:
Statement [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a
Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a
Statement [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a
Statement [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a
Statement [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a
Statement [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:27::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:32::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:37::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:42::print_char:57 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:27::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:32::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:37::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:42::print_char:60 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y
Statement [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a
@ -2705,7 +2708,7 @@ Statement [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( m
Statement [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a
Potential registers zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] : zp ZP_DWORD:2 ,
Potential registers zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp ZP_WORD:6 ,
Potential registers zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x ,
Potential registers zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:8 , reg byte x ,
Potential registers zp ZP_BYTE:9 [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] : zp ZP_WORD:10 ,
Potential registers zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] : zp ZP_WORD:12 ,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -9,20 +9,22 @@ main: {
lda #0
sta i
b1:
lda i
clc
adc #1
ldx i
inx
inx
ldy i
iny
iny
lda i
jsr sum
ldy i
sta SCREEN,y
tya
clc
adc #1
ldx i
inx
iny
iny
lda i
inx
jsr sum2
ldy i
sta SCREEN2,y
@ -33,19 +35,19 @@ main: {
rts
}
sum2: {
stx $ff
sty $ff
clc
adc $ff
sty $ff
stx $ff
clc
adc $ff
rts
}
sum: {
stx $ff
sty $ff
clc
adc $ff
sty $ff
stx $ff
clc
adc $ff
rts

View File

@ -723,14 +723,25 @@ sum: {
}
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
Statement [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ sum2::c#0 ]
Statement [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) always clobbers reg byte a
Statement [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ sum::c#0 ]
Statement [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) always clobbers reg byte a
Statement [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) always clobbers reg byte a
Statement [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) always clobbers reg byte a
Statement [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) always clobbers reg byte a
Statement [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ sum::b#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ sum::c#0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ sum::c#0 ] : zp ZP_BYTE:4 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ sum::a#0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:6 [ sum::return#0 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:7 [ main::$2 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:8 [ sum2::b#0 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:9 [ sum2::c#0 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:9 [ sum2::c#0 ] : zp ZP_BYTE:9 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:10 [ sum2::a#0 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:11 [ sum2::return#0 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:12 [ main::$5 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y ,
@ -746,25 +757,21 @@ Uplift Scope [sum2] 22: zp ZP_BYTE:11 [ sum2::return#0 ] 13: zp ZP_BYTE:10 [ sum
Uplift Scope []
Uplifting [main] best 1345 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::$5 ]
Uplifting [sum] best 1225 combination reg byte a [ sum::return#0 ] reg byte a [ sum::a#0 ] reg byte x [ sum::b#0 ] zp ZP_BYTE:4 [ sum::c#0 ] zp ZP_BYTE:16 [ sum::return#1 ] zp ZP_BYTE:15 [ sum::$0 ]
Limited combination testing to 100 combinations of 4096 possible.
Uplifting [sum2] best 1105 combination reg byte a [ sum2::return#0 ] reg byte a [ sum2::a#0 ] reg byte x [ sum2::b#0 ] zp ZP_BYTE:9 [ sum2::c#0 ] zp ZP_BYTE:14 [ sum2::return#1 ] zp ZP_BYTE:13 [ sum2::$0 ]
Limited combination testing to 100 combinations of 4096 possible.
Uplifting [] best 1105 combination
Uplifting [sum] best 1214 combination reg byte a [ sum::return#0 ] reg byte y [ sum::a#0 ] reg byte a [ sum::b#0 ] reg byte x [ sum::c#0 ] zp ZP_BYTE:16 [ sum::return#1 ] zp ZP_BYTE:15 [ sum::$0 ]
Limited combination testing to 100 combinations of 3072 possible.
Uplifting [sum2] best 1083 combination reg byte a [ sum2::return#0 ] reg byte y [ sum2::a#0 ] reg byte a [ sum2::b#0 ] reg byte x [ sum2::c#0 ] zp ZP_BYTE:14 [ sum2::return#1 ] zp ZP_BYTE:13 [ sum2::$0 ]
Limited combination testing to 100 combinations of 3072 possible.
Uplifting [] best 1083 combination
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Uplifting [main] best 1105 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ sum::c#0 ]
Uplifting [sum] best 1074 combination reg byte y [ sum::c#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ sum2::c#0 ]
Uplifting [sum2] best 1043 combination reg byte y [ sum2::c#0 ]
Uplifting [main] best 1083 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ sum2::return#1 ]
Uplifting [sum2] best 1010 combination reg byte a [ sum2::return#1 ]
Uplifting [sum2] best 1050 combination reg byte a [ sum2::return#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ sum::return#1 ]
Uplifting [sum] best 977 combination reg byte a [ sum::return#1 ]
Uplifting [sum] best 1017 combination reg byte a [ sum::return#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ sum2::$0 ]
Uplifting [sum2] best 975 combination reg byte a [ sum2::$0 ]
Uplifting [sum2] best 1015 combination reg byte a [ sum2::$0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ sum::$0 ]
Uplifting [sum] best 973 combination reg byte a [ sum::$0 ]
Uplifting [sum] best 1013 combination reg byte a [ sum::$0 ]
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
@ -805,15 +812,16 @@ main: {
jmp b1
//SEG14 main::@1
b1:
//SEG15 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum::b#0 ] ( main:2 [ main::i#2 sum::b#0 ] ) -- vbuxx=vbuz1_plus_1
//SEG15 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum::b#0 ] ( main:2 [ main::i#2 sum::b#0 ] ) -- vbuaa=vbuz1_plus_1
lda i
clc
adc #1
//SEG16 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum::b#0 sum::c#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 ] ) -- vbuxx=vbuz1_plus_2
ldx i
inx
//SEG16 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum::b#0 sum::c#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 ] ) -- vbuyy=vbuz1_plus_2
inx
//SEG17 [8] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ) -- vbuyy=vbuz1
ldy i
iny
iny
//SEG17 [8] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ) -- vbuaa=vbuz1
lda i
//SEG18 [9] call sum [ main::i#2 sum::return#1 ] ( main:2 [ main::i#2 sum::return#1 ] )
jsr sum
//SEG19 [10] (byte) sum::return#0 ← (byte) sum::return#1 [ main::i#2 sum::return#0 ] ( main:2 [ main::i#2 sum::return#0 ] )
@ -826,15 +834,16 @@ main: {
//SEG22 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuaa
ldy i
sta SCREEN,y
//SEG23 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum2::b#0 ] ( main:2 [ main::i#2 sum2::b#0 ] ) -- vbuxx=vbuz1_plus_1
//SEG23 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum2::b#0 ] ( main:2 [ main::i#2 sum2::b#0 ] ) -- vbuaa=vbuz1_plus_1
lda i
clc
adc #1
//SEG24 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum2::b#0 sum2::c#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 ] ) -- vbuxx=vbuz1_plus_2
ldx i
inx
//SEG24 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum2::b#0 sum2::c#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 ] ) -- vbuyy=vbuz1_plus_2
inx
//SEG25 [15] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ) -- vbuyy=vbuz1
ldy i
iny
iny
//SEG25 [15] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ) -- vbuaa=vbuz1
lda i
//SEG26 [16] call sum2 [ main::i#2 sum2::return#1 ] ( main:2 [ main::i#2 sum2::return#1 ] )
jsr sum2
//SEG27 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 [ main::i#2 sum2::return#0 ] ( main:2 [ main::i#2 sum2::return#0 ] )
@ -861,12 +870,12 @@ main: {
}
//SEG35 sum2
sum2: {
//SEG36 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
//SEG36 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuyy_plus_vbuaa
sty $ff
clc
adc $ff
//SEG37 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuyy
sty $ff
//SEG37 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
clc
adc $ff
jmp breturn
@ -877,12 +886,12 @@ sum2: {
}
//SEG40 sum
sum: {
//SEG41 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
//SEG41 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuyy_plus_vbuaa
sty $ff
clc
adc $ff
//SEG42 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuyy
sty $ff
//SEG42 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
clc
adc $ff
jmp breturn
@ -902,6 +911,7 @@ Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction lda i with TYA
Removing instruction ldy i
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b4 with b1
@ -945,11 +955,11 @@ FINAL SYMBOL TABLE
(byte~) sum::$0 reg byte a 4.0
(label) sum::@return
(byte) sum::a
(byte) sum::a#0 reg byte a 13.0
(byte) sum::a#0 reg byte y 13.0
(byte) sum::b
(byte) sum::b#0 reg byte x 4.333333333333333
(byte) sum::b#0 reg byte a 4.333333333333333
(byte) sum::c
(byte) sum::c#0 reg byte y 4.333333333333333
(byte) sum::c#0 reg byte x 4.333333333333333
(byte) sum::return
(byte) sum::return#0 reg byte a 22.0
(byte) sum::return#1 reg byte a 4.333333333333333
@ -957,24 +967,24 @@ FINAL SYMBOL TABLE
(byte~) sum2::$0 reg byte a 4.0
(label) sum2::@return
(byte) sum2::a
(byte) sum2::a#0 reg byte a 13.0
(byte) sum2::a#0 reg byte y 13.0
(byte) sum2::b
(byte) sum2::b#0 reg byte x 4.333333333333333
(byte) sum2::b#0 reg byte a 4.333333333333333
(byte) sum2::c
(byte) sum2::c#0 reg byte y 4.333333333333333
(byte) sum2::c#0 reg byte x 4.333333333333333
(byte) sum2::return
(byte) sum2::return#0 reg byte a 22.0
(byte) sum2::return#1 reg byte a 4.333333333333333
zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
reg byte x [ sum::b#0 ]
reg byte y [ sum::c#0 ]
reg byte a [ sum::a#0 ]
reg byte a [ sum::b#0 ]
reg byte x [ sum::c#0 ]
reg byte y [ sum::a#0 ]
reg byte a [ sum::return#0 ]
reg byte a [ main::$2 ]
reg byte x [ sum2::b#0 ]
reg byte y [ sum2::c#0 ]
reg byte a [ sum2::a#0 ]
reg byte a [ sum2::b#0 ]
reg byte x [ sum2::c#0 ]
reg byte y [ sum2::a#0 ]
reg byte a [ sum2::return#0 ]
reg byte a [ main::$5 ]
reg byte a [ sum2::$0 ]
@ -984,7 +994,7 @@ reg byte a [ sum::return#1 ]
FINAL ASSEMBLER
Score: 781
Score: 811
//SEG0 Basic Upstart
.pc = $801 "Basic"
@ -1012,15 +1022,16 @@ main: {
//SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy
//SEG14 main::@1
b1:
//SEG15 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum::b#0 ] ( main:2 [ main::i#2 sum::b#0 ] ) -- vbuxx=vbuz1_plus_1
//SEG15 [6] (byte) sum::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum::b#0 ] ( main:2 [ main::i#2 sum::b#0 ] ) -- vbuaa=vbuz1_plus_1
lda i
clc
adc #1
//SEG16 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum::b#0 sum::c#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 ] ) -- vbuxx=vbuz1_plus_2
ldx i
inx
//SEG16 [7] (byte) sum::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum::b#0 sum::c#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 ] ) -- vbuyy=vbuz1_plus_2
inx
//SEG17 [8] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ) -- vbuyy=vbuz1
ldy i
iny
iny
//SEG17 [8] (byte) sum::a#0 ← (byte) main::i#2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ( main:2 [ main::i#2 sum::b#0 sum::c#0 sum::a#0 ] ) -- vbuaa=vbuz1
lda i
//SEG18 [9] call sum [ main::i#2 sum::return#1 ] ( main:2 [ main::i#2 sum::return#1 ] )
jsr sum
//SEG19 [10] (byte) sum::return#0 ← (byte) sum::return#1 [ main::i#2 sum::return#0 ] ( main:2 [ main::i#2 sum::return#0 ] )
@ -1031,14 +1042,15 @@ main: {
//SEG22 [12] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuaa
ldy i
sta SCREEN,y
//SEG23 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum2::b#0 ] ( main:2 [ main::i#2 sum2::b#0 ] ) -- vbuxx=vbuz1_plus_1
//SEG23 [13] (byte) sum2::b#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 sum2::b#0 ] ( main:2 [ main::i#2 sum2::b#0 ] ) -- vbuaa=vbuz1_plus_1
tya
clc
adc #1
//SEG24 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum2::b#0 sum2::c#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 ] ) -- vbuxx=vbuz1_plus_2
ldx i
inx
//SEG24 [14] (byte) sum2::c#0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 sum2::b#0 sum2::c#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 ] ) -- vbuyy=vbuz1_plus_2
iny
iny
//SEG25 [15] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ) -- vbuaa=vbuz1
lda i
inx
//SEG25 [15] (byte) sum2::a#0 ← (byte) main::i#2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ( main:2 [ main::i#2 sum2::b#0 sum2::c#0 sum2::a#0 ] ) -- vbuyy=vbuz1
//SEG26 [16] call sum2 [ main::i#2 sum2::return#1 ] ( main:2 [ main::i#2 sum2::return#1 ] )
jsr sum2
//SEG27 [17] (byte) sum2::return#0 ← (byte) sum2::return#1 [ main::i#2 sum2::return#0 ] ( main:2 [ main::i#2 sum2::return#0 ] )
@ -1061,12 +1073,12 @@ main: {
}
//SEG35 sum2
sum2: {
//SEG36 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
//SEG36 [23] (byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0 [ sum2::c#0 sum2::$0 ] ( main:2::sum2:16 [ main::i#2 sum2::c#0 sum2::$0 ] ) -- vbuaa=vbuyy_plus_vbuaa
sty $ff
clc
adc $ff
//SEG37 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuyy
sty $ff
//SEG37 [24] (byte) sum2::return#1 ← (byte~) sum2::$0 + (byte) sum2::c#0 [ sum2::return#1 ] ( main:2::sum2:16 [ main::i#2 sum2::return#1 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
clc
adc $ff
//SEG38 sum2::@return
@ -1075,12 +1087,12 @@ sum2: {
}
//SEG40 sum
sum: {
//SEG41 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
//SEG41 [26] (byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0 [ sum::c#0 sum::$0 ] ( main:2::sum:9 [ main::i#2 sum::c#0 sum::$0 ] ) -- vbuaa=vbuyy_plus_vbuaa
sty $ff
clc
adc $ff
//SEG42 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuyy
sty $ff
//SEG42 [27] (byte) sum::return#1 ← (byte~) sum::$0 + (byte) sum::c#0 [ sum::return#1 ] ( main:2::sum:9 [ main::i#2 sum::return#1 ] ) -- vbuaa=vbuaa_plus_vbuxx
stx $ff
clc
adc $ff
//SEG43 sum::@return

View File

@ -19,11 +19,11 @@
(byte~) sum::$0 reg byte a 4.0
(label) sum::@return
(byte) sum::a
(byte) sum::a#0 reg byte a 13.0
(byte) sum::a#0 reg byte y 13.0
(byte) sum::b
(byte) sum::b#0 reg byte x 4.333333333333333
(byte) sum::b#0 reg byte a 4.333333333333333
(byte) sum::c
(byte) sum::c#0 reg byte y 4.333333333333333
(byte) sum::c#0 reg byte x 4.333333333333333
(byte) sum::return
(byte) sum::return#0 reg byte a 22.0
(byte) sum::return#1 reg byte a 4.333333333333333
@ -31,24 +31,24 @@
(byte~) sum2::$0 reg byte a 4.0
(label) sum2::@return
(byte) sum2::a
(byte) sum2::a#0 reg byte a 13.0
(byte) sum2::a#0 reg byte y 13.0
(byte) sum2::b
(byte) sum2::b#0 reg byte x 4.333333333333333
(byte) sum2::b#0 reg byte a 4.333333333333333
(byte) sum2::c
(byte) sum2::c#0 reg byte y 4.333333333333333
(byte) sum2::c#0 reg byte x 4.333333333333333
(byte) sum2::return
(byte) sum2::return#0 reg byte a 22.0
(byte) sum2::return#1 reg byte a 4.333333333333333
zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
reg byte x [ sum::b#0 ]
reg byte y [ sum::c#0 ]
reg byte a [ sum::a#0 ]
reg byte a [ sum::b#0 ]
reg byte x [ sum::c#0 ]
reg byte y [ sum::a#0 ]
reg byte a [ sum::return#0 ]
reg byte a [ main::$2 ]
reg byte x [ sum2::b#0 ]
reg byte y [ sum2::c#0 ]
reg byte a [ sum2::a#0 ]
reg byte a [ sum2::b#0 ]
reg byte x [ sum2::c#0 ]
reg byte y [ sum2::a#0 ]
reg byte a [ sum2::return#0 ]
reg byte a [ main::$5 ]
reg byte a [ sum2::$0 ]