diff options
Diffstat (limited to 'html/apps/mu.subx.html')
-rw-r--r-- | html/apps/mu.subx.html | 106 |
1 files changed, 53 insertions, 53 deletions
diff --git a/html/apps/mu.subx.html b/html/apps/mu.subx.html index f443d400..183a015d 100644 --- a/html/apps/mu.subx.html +++ b/html/apps/mu.subx.html @@ -428,7 +428,7 @@ if ('onhashchange' in window) { <span id="L366" class="LineNr"> 366 </span> 7e/jump-if-<= <span class="Constant">break</span>/disp8 <span id="L367" class="LineNr"> 367 </span> <span class="subxComment"># if (argv[1] != "test") break</span> <span id="L368" class="LineNr"> 368 </span> (<a href='../052kernel-string-equal.subx.html#L33'>kernel-string-equal?</a> *(ebp+8) <span class="Constant">"test"</span>) <span class="subxComment"># => eax</span> -<span id="L369" class="LineNr"> 369 </span> 3d/compare-eax-and 0/imm32 +<span id="L369" class="LineNr"> 369 </span> 3d/compare-eax-and 0/imm32/false <span id="L370" class="LineNr"> 370 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L371" class="LineNr"> 371 </span> <span class="subxComment">#</span> <span id="L372" class="LineNr"> 372 </span> (run-tests) @@ -1549,7 +1549,7 @@ if ('onhashchange' in window) { <span id="L1602" class="LineNr">1602 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> %ecx %edx) <span id="L1603" class="LineNr">1603 </span> <span class="subxComment"># if slice-empty?(word-slice) continue</span> <span id="L1604" class="LineNr">1604 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %edx) -<span id="L1605" class="LineNr">1605 </span> 3d/compare-eax-and 0/imm32 +<span id="L1605" class="LineNr">1605 </span> 3d/compare-eax-and 0/imm32/false <span id="L1606" class="LineNr">1606 </span> 0f 85/jump-if-!= <span class="Constant">loop</span>/disp32 <span id="L1607" class="LineNr">1607 </span> <span class="subxComment"># if (*word-slice->start == "#") continue</span> <span id="L1608" class="LineNr">1608 </span> <span class="subxS1Comment"># . eax = *word-slice->start</span> @@ -1563,7 +1563,7 @@ if ('onhashchange' in window) { <span id="L1616" class="LineNr">1616 </span> { <span id="L1617" class="LineNr">1617 </span><span class="Constant">$parse-mu:fn</span>: <span id="L1618" class="LineNr">1618 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %edx <span class="Constant">"fn"</span>) -<span id="L1619" class="LineNr">1619 </span> 3d/compare-eax-and 0/imm32 +<span id="L1619" class="LineNr">1619 </span> 3d/compare-eax-and 0/imm32/false <span id="L1620" class="LineNr">1620 </span> 0f 84/jump-if-= <span class="Constant">break</span>/disp32 <span id="L1621" class="LineNr">1621 </span> <span class="subxComment"># var new-function/eax: (handle function) = populate-mu-function(in, new-function, vars)</span> <span id="L1622" class="LineNr">1622 </span> (<a href='../069allocate.subx.html#L59'>allocate</a> <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span> *<span class="SpecialChar"><a href='mu.subx.html#L260'>Function-size</a></span>) <span class="subxComment"># => eax</span> @@ -1684,15 +1684,15 @@ if ('onhashchange' in window) { <span id="L1737" class="LineNr">1737 </span> <span class="subxComment"># TODO: error if name starts with 'break' or 'loop'</span> <span id="L1738" class="LineNr">1738 </span> <span class="subxComment"># if (word-slice == '{') abort</span> <span id="L1739" class="LineNr">1739 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"{"</span>) <span class="subxComment"># => eax</span> -<span id="L1740" class="LineNr">1740 </span> 3d/compare-eax-and 0/imm32 +<span id="L1740" class="LineNr">1740 </span> 3d/compare-eax-and 0/imm32/false <span id="L1741" class="LineNr">1741 </span> 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 <span id="L1742" class="LineNr">1742 </span> <span class="subxComment"># if (word-slice == '->') abort</span> <span id="L1743" class="LineNr">1743 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"->"</span>) <span class="subxComment"># => eax</span> -<span id="L1744" class="LineNr">1744 </span> 3d/compare-eax-and 0/imm32 +<span id="L1744" class="LineNr">1744 </span> 3d/compare-eax-and 0/imm32/false <span id="L1745" class="LineNr">1745 </span> 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 <span id="L1746" class="LineNr">1746 </span> <span class="subxComment"># if (word-slice == '}') abort</span> <span id="L1747" class="LineNr">1747 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"}"</span>) <span class="subxComment"># => eax</span> -<span id="L1748" class="LineNr">1748 </span> 3d/compare-eax-and 0/imm32 +<span id="L1748" class="LineNr">1748 </span> 3d/compare-eax-and 0/imm32/false <span id="L1749" class="LineNr">1749 </span> 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 <span id="L1750" class="LineNr">1750 </span> <span class="subxComment"># save function name</span> <span id="L1751" class="LineNr">1751 </span> (<a href='../072slice.subx.html#L1044'>slice-to-string</a> <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span> %ecx) <span class="subxComment"># => eax</span> @@ -1705,15 +1705,15 @@ if ('onhashchange' in window) { <span id="L1758" class="LineNr">1758 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> *(ebp+8) %ecx) <span id="L1759" class="LineNr">1759 </span> <span class="subxComment"># if (word-slice == '{') goto done</span> <span id="L1760" class="LineNr">1760 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"{"</span>) <span class="subxComment"># => eax</span> -<span id="L1761" class="LineNr">1761 </span> 3d/compare-eax-and 0/imm32 +<span id="L1761" class="LineNr">1761 </span> 3d/compare-eax-and 0/imm32/false <span id="L1762" class="LineNr">1762 </span> 0f 85/jump-if-!= $populate-mu-function-header:done/disp32 <span id="L1763" class="LineNr">1763 </span> <span class="subxComment"># if (word-slice == '->') break</span> <span id="L1764" class="LineNr">1764 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"->"</span>) <span class="subxComment"># => eax</span> -<span id="L1765" class="LineNr">1765 </span> 3d/compare-eax-and 0/imm32 +<span id="L1765" class="LineNr">1765 </span> 3d/compare-eax-and 0/imm32/false <span id="L1766" class="LineNr">1766 </span> 0f 85/jump-if-!= <span class="Constant">break</span>/disp32 <span id="L1767" class="LineNr">1767 </span> <span class="subxComment"># if (word-slice == '}') abort</span> <span id="L1768" class="LineNr">1768 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"}"</span>) <span class="subxComment"># => eax</span> -<span id="L1769" class="LineNr">1769 </span> 3d/compare-eax-and 0/imm32 +<span id="L1769" class="LineNr">1769 </span> 3d/compare-eax-and 0/imm32/false <span id="L1770" class="LineNr">1770 </span> 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 <span id="L1771" class="LineNr">1771 </span> <span class="subxComment"># var v/ebx: (handle var) = parse-var-with-type(word-slice, first-line)</span> <span id="L1772" class="LineNr">1772 </span> (<a href='mu.subx.html#L2033'>parse-var-with-type</a> %ecx *(ebp+8)) <span class="subxComment"># => eax</span> @@ -1740,15 +1740,15 @@ if ('onhashchange' in window) { <span id="L1793" class="LineNr">1793 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> *(ebp+8) %ecx) <span id="L1794" class="LineNr">1794 </span> <span class="subxComment"># if (word-slice == '{') break</span> <span id="L1795" class="LineNr">1795 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"{"</span>) <span class="subxComment"># => eax</span> -<span id="L1796" class="LineNr">1796 </span> 3d/compare-eax-and 0/imm32 +<span id="L1796" class="LineNr">1796 </span> 3d/compare-eax-and 0/imm32/false <span id="L1797" class="LineNr">1797 </span> 0f 85/jump-if-!= <span class="Constant">break</span>/disp32 <span id="L1798" class="LineNr">1798 </span> <span class="subxComment"># if (word-slice == '->') abort</span> <span id="L1799" class="LineNr">1799 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"->"</span>) <span class="subxComment"># => eax</span> -<span id="L1800" class="LineNr">1800 </span> 3d/compare-eax-and 0/imm32 +<span id="L1800" class="LineNr">1800 </span> 3d/compare-eax-and 0/imm32/false <span id="L1801" class="LineNr">1801 </span> 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 <span id="L1802" class="LineNr">1802 </span> <span class="subxComment"># if (word-slice == '}') abort</span> <span id="L1803" class="LineNr">1803 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"}"</span>) <span class="subxComment"># => eax</span> -<span id="L1804" class="LineNr">1804 </span> 3d/compare-eax-and 0/imm32 +<span id="L1804" class="LineNr">1804 </span> 3d/compare-eax-and 0/imm32/false <span id="L1805" class="LineNr">1805 </span> 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 <span id="L1806" class="LineNr">1806 </span> <span class="subxComment">#</span> <span id="L1807" class="LineNr">1807 </span> (<a href='mu.subx.html#L2033'>parse-var-with-type</a> %ecx *(ebp+8)) <span class="subxComment"># => eax</span> @@ -2111,23 +2111,23 @@ if ('onhashchange' in window) { <span id="L2164" class="LineNr">2164 </span><span class="CommentedCode">#? (flush Stderr)</span> <span id="L2165" class="LineNr">2165 </span> <span class="subxComment"># assert s != ""</span> <span id="L2166" class="LineNr">2166 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">""</span>) -<span id="L2167" class="LineNr">2167 </span> 3d/compare-eax-and 0/imm32 +<span id="L2167" class="LineNr">2167 </span> 3d/compare-eax-and 0/imm32/false <span id="L2168" class="LineNr">2168 </span> 0f 85/jump-if-!= $parse-type:abort/disp32 <span id="L2169" class="LineNr">2169 </span> <span class="subxComment"># assert s != "{"</span> <span id="L2170" class="LineNr">2170 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"{"</span>) -<span id="L2171" class="LineNr">2171 </span> 3d/compare-eax-and 0/imm32 +<span id="L2171" class="LineNr">2171 </span> 3d/compare-eax-and 0/imm32/false <span id="L2172" class="LineNr">2172 </span> 0f 85/jump-if-!= $parse-type:abort/disp32 <span id="L2173" class="LineNr">2173 </span> <span class="subxComment"># assert s != "}"</span> <span id="L2174" class="LineNr">2174 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"}"</span>) -<span id="L2175" class="LineNr">2175 </span> 3d/compare-eax-and 0/imm32 +<span id="L2175" class="LineNr">2175 </span> 3d/compare-eax-and 0/imm32/false <span id="L2176" class="LineNr">2176 </span> 0f 85/jump-if-!= $parse-type:abort/disp32 <span id="L2177" class="LineNr">2177 </span> <span class="subxComment"># assert s != "->"</span> <span id="L2178" class="LineNr">2178 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"->"</span>) -<span id="L2179" class="LineNr">2179 </span> 3d/compare-eax-and 0/imm32 +<span id="L2179" class="LineNr">2179 </span> 3d/compare-eax-and 0/imm32/false <span id="L2180" class="LineNr">2180 </span> 0f 85/jump-if-!= $parse-type:abort/disp32 <span id="L2181" class="LineNr">2181 </span> <span class="subxComment"># if (s == ")") return 0</span> <span id="L2182" class="LineNr">2182 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">")"</span>) -<span id="L2183" class="LineNr">2183 </span> 3d/compare-eax-and 0/imm32 +<span id="L2183" class="LineNr">2183 </span> 3d/compare-eax-and 0/imm32/false <span id="L2184" class="LineNr">2184 </span> b8/copy-to-eax 0/imm32 <span id="L2185" class="LineNr">2185 </span> 0f 85/jump-if-!= $parse-type:end/disp32 <span id="L2186" class="LineNr">2186 </span> <span class="subxComment"># var result/edx: (handle tree type-id)</span> @@ -2137,7 +2137,7 @@ if ('onhashchange' in window) { <span id="L2190" class="LineNr">2190 </span> { <span id="L2191" class="LineNr">2191 </span> <span class="subxComment"># if (s != "(") break</span> <span id="L2192" class="LineNr">2192 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"("</span>) -<span id="L2193" class="LineNr">2193 </span> 3d/compare-eax-and 0/imm32 +<span id="L2193" class="LineNr">2193 </span> 3d/compare-eax-and 0/imm32/false <span id="L2194" class="LineNr">2194 </span> 75/jump-if-!= <span class="Constant">break</span>/disp8 <span id="L2195" class="LineNr">2195 </span> <span class="subxComment"># result->left = pos-slice(Type-id, s)</span> <span id="L2196" class="LineNr">2196 </span> (<a href='mu.subx.html#L2457'>pos-slice</a> <span class="SpecialChar"><a href='mu.subx.html#L2517'>Type-id</a></span> %ecx) @@ -2434,7 +2434,7 @@ if ('onhashchange' in window) { <span id="L2487" class="LineNr">2487 </span> 73/jump-if-addr>= $pos-slice:end/disp8 <span id="L2488" class="LineNr">2488 </span> <span class="subxComment"># if (slice-equal?(s, *curr)) break</span> <span id="L2489" class="LineNr">2489 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> *(ebp+0xc) *edx) <span class="subxComment"># => eax</span> -<span id="L2490" class="LineNr">2490 </span> 3d/compare-eax-and 0/imm32 +<span id="L2490" class="LineNr">2490 </span> 3d/compare-eax-and 0/imm32/false <span id="L2491" class="LineNr">2491 </span> 75/jump-if-!= <span class="Constant">break</span>/disp8 <span id="L2492" class="LineNr">2492 </span> <span class="subxComment"># ++index</span> <span id="L2493" class="LineNr">2493 </span> 41/increment-ecx @@ -2650,7 +2650,7 @@ if ('onhashchange' in window) { <span id="L2703" class="LineNr">2703 </span> 89/<- %ebp 4/r32/esp <span id="L2704" class="LineNr">2704 </span> <span class="subxComment"># if (slice-empty?(in)) return false</span> <span id="L2705" class="LineNr">2705 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> *(ebp+8)) <span class="subxComment"># => eax</span> -<span id="L2706" class="LineNr">2706 </span> 3d/compare-eax-and 0/imm32 +<span id="L2706" class="LineNr">2706 </span> 3d/compare-eax-and 0/imm32/false <span id="L2707" class="LineNr">2707 </span> 75/jump-if-!= $is-identifier?:false/disp8 <span id="L2708" class="LineNr">2708 </span> <span class="subxComment"># var c/eax: byte = *in->start</span> <span id="L2709" class="LineNr">2709 </span> 8b/-> *(ebp+8) 0/r32/eax @@ -3072,7 +3072,7 @@ if ('onhashchange' in window) { <span id="L3125" class="LineNr">3125 </span><span class="CommentedCode">#? (flush Stderr)</span> <span id="L3126" class="LineNr">3126 </span> <span class="subxComment"># if slice-empty?(word-slice) continue</span> <span id="L3127" class="LineNr">3127 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %edx) -<span id="L3128" class="LineNr">3128 </span> 3d/compare-eax-and 0/imm32 +<span id="L3128" class="LineNr">3128 </span> 3d/compare-eax-and 0/imm32/false <span id="L3129" class="LineNr">3129 </span> 0f 85/jump-if-!= <span class="Constant">loop</span>/disp32 <span id="L3130" class="LineNr">3130 </span> <span class="subxComment"># if (slice-starts-with?(word-slice, '#') continue</span> <span id="L3131" class="LineNr">3131 </span> <span class="subxS1Comment"># . eax = *word-slice->start</span> @@ -3086,7 +3086,7 @@ if ('onhashchange' in window) { <span id="L3139" class="LineNr">3139 </span> { <span id="L3140" class="LineNr">3140 </span><span class="Constant">$parse-mu-block:check-for-block</span>: <span id="L3141" class="LineNr">3141 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %edx <span class="Constant">"{"</span>) -<span id="L3142" class="LineNr">3142 </span> 3d/compare-eax-and 0/imm32 +<span id="L3142" class="LineNr">3142 </span> 3d/compare-eax-and 0/imm32/false <span id="L3143" class="LineNr">3143 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L3144" class="LineNr">3144 </span> (<a href='mu.subx.html#L3286'>check-no-tokens-left</a> %ecx) <span id="L3145" class="LineNr">3145 </span> <span class="subxComment"># parse new block and append</span> @@ -3097,7 +3097,7 @@ if ('onhashchange' in window) { <span id="L3150" class="LineNr">3150 </span> <span class="subxComment"># if slice-equal?(word-slice, "}") break</span> <span id="L3151" class="LineNr">3151 </span><span class="Constant">$parse-mu-block:check-for-end</span>: <span id="L3152" class="LineNr">3152 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %edx <span class="Constant">"}"</span>) -<span id="L3153" class="LineNr">3153 </span> 3d/compare-eax-and 0/imm32 +<span id="L3153" class="LineNr">3153 </span> 3d/compare-eax-and 0/imm32/false <span id="L3154" class="LineNr">3154 </span> 0f 85/jump-if-!= <span class="Constant">break</span>/disp32 <span id="L3155" class="LineNr">3155 </span> <span class="subxComment"># if slice-ends-with?(word-slice, ":") parse named block and append</span> <span id="L3156" class="LineNr">3156 </span> { @@ -3123,7 +3123,7 @@ if ('onhashchange' in window) { <span id="L3176" class="LineNr">3176 </span> { <span id="L3177" class="LineNr">3177 </span><span class="Constant">$parse-mu-block:check-for-var</span>: <span id="L3178" class="LineNr">3178 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %edx <span class="Constant">"var"</span>) -<span id="L3179" class="LineNr">3179 </span> 3d/compare-eax-and 0/imm32 +<span id="L3179" class="LineNr">3179 </span> 3d/compare-eax-and 0/imm32/false <span id="L3180" class="LineNr">3180 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L3181" class="LineNr">3181 </span> <span class="subxComment">#</span> <span id="L3182" class="LineNr">3182 </span> (<a href='mu.subx.html#L3378'>parse-mu-var-def</a> %ecx *(ebp+0xc)) <span class="subxComment"># => eax</span> @@ -3245,7 +3245,7 @@ if ('onhashchange' in window) { <span id="L3298" class="LineNr">3298 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> *(ebp+8) %ecx) <span id="L3299" class="LineNr">3299 </span> <span class="subxComment"># if slice-empty?(s) return</span> <span id="L3300" class="LineNr">3300 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %ecx) -<span id="L3301" class="LineNr">3301 </span> 3d/compare-eax-and 0/imm32 +<span id="L3301" class="LineNr">3301 </span> 3d/compare-eax-and 0/imm32/false <span id="L3302" class="LineNr">3302 </span> 75/jump-if-!= $check-no-tokens-left:end/disp8 <span id="L3303" class="LineNr">3303 </span> <span class="subxComment"># if (slice-starts-with?(s, '#') return</span> <span id="L3304" class="LineNr">3304 </span> <span class="subxS1Comment"># . eax = *s->start</span> @@ -3363,7 +3363,7 @@ if ('onhashchange' in window) { <span id="L3416" class="LineNr">3416 </span> <span class="subxComment"># ensure that the next word is '<-'</span> <span id="L3417" class="LineNr">3417 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> *(ebp+8) %ecx) <span id="L3418" class="LineNr">3418 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"<-"</span>) <span class="subxComment"># => eax</span> -<span id="L3419" class="LineNr">3419 </span> 3d/compare-eax-and 0/imm32 +<span id="L3419" class="LineNr">3419 </span> 3d/compare-eax-and 0/imm32/false <span id="L3420" class="LineNr">3420 </span> 74/jump-if-= $parse-mu-var-def:abort/disp8 <span id="L3421" class="LineNr">3421 </span> <span class="subxComment">#</span> <span id="L3422" class="LineNr">3422 </span> (<a href='mu.subx.html#L4197'>new-regvardef</a> <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span> %edx) <span class="subxComment"># => eax</span> @@ -3491,7 +3491,7 @@ if ('onhashchange' in window) { <span id="L3544" class="LineNr">3544 </span> c7 0/subop/copy *edi 1/imm32/stmt1 <span class="subxComment"># Stmt-tag</span> <span id="L3545" class="LineNr">3545 </span> { <span id="L3546" class="LineNr">3546 </span> (<a href='mu.subx.html#L3667'>stmt-has-outputs?</a> *(ebp+8)) -<span id="L3547" class="LineNr">3547 </span> 3d/compare-eax-and 0/imm32 +<span id="L3547" class="LineNr">3547 </span> 3d/compare-eax-and 0/imm32/false <span id="L3548" class="LineNr">3548 </span> 0f 84/jump-if-= <span class="Constant">break</span>/disp32 <span id="L3549" class="LineNr">3549 </span> { <span id="L3550" class="LineNr">3550 </span><span class="Constant">$parse-mu-stmt:read-outputs</span>: @@ -3499,15 +3499,15 @@ if ('onhashchange' in window) { <span id="L3552" class="LineNr">3552 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> *(ebp+8) %ecx) <span id="L3553" class="LineNr">3553 </span> <span class="subxComment"># if slice-empty?(word-slice) break</span> <span id="L3554" class="LineNr">3554 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %ecx) -<span id="L3555" class="LineNr">3555 </span> 3d/compare-eax-and 0/imm32 +<span id="L3555" class="LineNr">3555 </span> 3d/compare-eax-and 0/imm32/false <span id="L3556" class="LineNr">3556 </span> 0f 85/jump-if-!= <span class="Constant">break</span>/disp32 <span id="L3557" class="LineNr">3557 </span> <span class="subxComment"># if (name == "<-") break</span> <span id="L3558" class="LineNr">3558 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"<-"</span>) -<span id="L3559" class="LineNr">3559 </span> 3d/compare-eax-and 0/imm32 +<span id="L3559" class="LineNr">3559 </span> 3d/compare-eax-and 0/imm32/false <span id="L3560" class="LineNr">3560 </span> 75/jump-if-!= <span class="Constant">break</span>/disp8 <span id="L3561" class="LineNr">3561 </span> <span class="subxComment"># assert(is-identifier?(name))</span> <span id="L3562" class="LineNr">3562 </span> (<a href='mu.subx.html#L2700'>is-identifier?</a> %ecx) -<span id="L3563" class="LineNr">3563 </span> 3d/compare-eax-and 0/imm32 +<span id="L3563" class="LineNr">3563 </span> 3d/compare-eax-and 0/imm32/false <span id="L3564" class="LineNr">3564 </span> 0f 84/jump-if-= $parse-mu-stmt:abort/disp32 <span id="L3565" class="LineNr">3565 </span> <span class="subxComment">#</span> <span id="L3566" class="LineNr">3566 </span> (<a href='mu.subx.html#L3866'>lookup-or-define-var</a> %ecx *(ebp+0xc) *(ebp+0x10)) <span class="subxComment"># => eax</span> @@ -3573,11 +3573,11 @@ if ('onhashchange' in window) { <span id="L3626" class="LineNr">3626 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> *(ebp+0xc) %ecx) <span id="L3627" class="LineNr">3627 </span> <span class="subxComment"># if slice-empty?(word-slice) break</span> <span id="L3628" class="LineNr">3628 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %ecx) <span class="subxComment"># => eax</span> -<span id="L3629" class="LineNr">3629 </span> 3d/compare-eax-and 0/imm32 +<span id="L3629" class="LineNr">3629 </span> 3d/compare-eax-and 0/imm32/false <span id="L3630" class="LineNr">3630 </span> 0f 85/jump-if-!= <span class="Constant">break</span>/disp32 <span id="L3631" class="LineNr">3631 </span> <span class="subxComment"># if (name == "<-") abort</span> <span id="L3632" class="LineNr">3632 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"<-"</span>) -<span id="L3633" class="LineNr">3633 </span> 3d/compare-eax-and 0/imm32 +<span id="L3633" class="LineNr">3633 </span> 3d/compare-eax-and 0/imm32/false <span id="L3634" class="LineNr">3634 </span> 0f 85/jump-if-!= $add-operation-and-inputs-to-stmt:abort/disp32 <span id="L3635" class="LineNr">3635 </span> <span class="subxComment">#</span> <span id="L3636" class="LineNr">3636 </span> (<a href='mu.subx.html#L3715'>lookup-var-or-literal</a> %ecx *(ebp+0x10)) <span class="subxComment"># => eax</span> @@ -3628,7 +3628,7 @@ if ('onhashchange' in window) { <span id="L3681" class="LineNr">3681 </span> (<a href='mu.subx.html#L2285'>next-mu-token</a> *(ebp+8) %ecx) <span id="L3682" class="LineNr">3682 </span> <span class="subxComment"># if slice-empty?(word-slice) break</span> <span id="L3683" class="LineNr">3683 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %ecx) -<span id="L3684" class="LineNr">3684 </span> 3d/compare-eax-and 0/imm32 +<span id="L3684" class="LineNr">3684 </span> 3d/compare-eax-and 0/imm32/false <span id="L3685" class="LineNr">3685 </span> b8/copy-to-eax 0/imm32/false/result <span class="subxComment"># restore result (if we're here it's still false)</span> <span id="L3686" class="LineNr">3686 </span> 0f 85/jump-if-!= <span class="Constant">break</span>/disp32 <span id="L3687" class="LineNr">3687 </span> <span class="subxComment"># if slice-starts-with?(word-slice, '#') break</span> @@ -3642,7 +3642,7 @@ if ('onhashchange' in window) { <span id="L3695" class="LineNr">3695 </span> 0f 84/jump-if-= <span class="Constant">break</span>/disp32 <span id="L3696" class="LineNr">3696 </span> <span class="subxComment"># if slice-equal?(word-slice, '<-') return true</span> <span id="L3697" class="LineNr">3697 </span> (<a href='../072slice.subx.html#L120'>slice-equal?</a> %ecx <span class="Constant">"<-"</span>) -<span id="L3698" class="LineNr">3698 </span> 3d/compare-eax-and 0/imm32 +<span id="L3698" class="LineNr">3698 </span> 3d/compare-eax-and 0/imm32/false <span id="L3699" class="LineNr">3699 </span> 74/jump-if-= <span class="Constant">loop</span>/disp8 <span id="L3700" class="LineNr">3700 </span> b8/copy-to-eax 1/imm32/true <span id="L3701" class="LineNr">3701 </span> } @@ -3670,7 +3670,7 @@ if ('onhashchange' in window) { <span id="L3723" class="LineNr">3723 </span> 8b/-> *(ebp+8) 6/r32/esi <span id="L3724" class="LineNr">3724 </span> <span class="subxComment"># if slice-empty?(name) abort</span> <span id="L3725" class="LineNr">3725 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %esi) <span class="subxComment"># => eax</span> -<span id="L3726" class="LineNr">3726 </span> 3d/compare-eax-and 0/imm32 +<span id="L3726" class="LineNr">3726 </span> 3d/compare-eax-and 0/imm32/false <span id="L3727" class="LineNr">3727 </span> 0f 85/jump-if-!= $lookup-var-or-literal:abort/disp32 <span id="L3728" class="LineNr">3728 </span> <span class="subxComment"># var c/ecx: byte = *name->start</span> <span id="L3729" class="LineNr">3729 </span> 8b/-> *esi 1/r32/ecx @@ -3679,7 +3679,7 @@ if ('onhashchange' in window) { <span id="L3732" class="LineNr">3732 </span> <span class="subxComment"># if is-decimal-digit?(c) return new var(name)</span> <span id="L3733" class="LineNr">3733 </span> { <span id="L3734" class="LineNr">3734 </span> (<a href='../075print-int-decimal.subx.html#L307'>is-decimal-digit?</a> %ecx) <span class="subxComment"># => eax</span> -<span id="L3735" class="LineNr">3735 </span> 81 7/subop/compare %eax 0/imm32 +<span id="L3735" class="LineNr">3735 </span> 81 7/subop/compare %eax 0/imm32/false <span id="L3736" class="LineNr">3736 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L3737" class="LineNr">3737 </span> (<a href='mu.subx.html#L4057'>new-literal-integer</a> <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span> %esi) <span class="subxComment"># => eax</span> <span id="L3738" class="LineNr">3738 </span> eb/jump $lookup-var-or-literal:end/disp8 @@ -3781,7 +3781,7 @@ if ('onhashchange' in window) { <span id="L3834" class="LineNr">3834 </span> 8b/-> *ebx 0/r32/eax <span id="L3835" class="LineNr">3835 </span> <span class="subxComment"># if (v->name == name) return v</span> <span id="L3836" class="LineNr">3836 </span> (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *eax *(ebp+8)) <span class="subxComment"># Var-name</span> -<span id="L3837" class="LineNr">3837 </span> 3d/compare-eax-and 0/imm32 +<span id="L3837" class="LineNr">3837 </span> 3d/compare-eax-and 0/imm32/false <span id="L3838" class="LineNr">3838 </span> 8b/-> *ebx 0/r32/eax <span id="L3839" class="LineNr">3839 </span> 75/jump-if-!= <span class="Constant">break</span>/disp8 <span id="L3840" class="LineNr">3840 </span> <span class="subxComment"># curr -= 4</span> @@ -3859,7 +3859,7 @@ if ('onhashchange' in window) { <span id="L3912" class="LineNr">3912 </span> <span class="subxComment"># if (curr->name == name) return curr</span> <span id="L3913" class="LineNr">3913 </span> 50/push-eax <span id="L3914" class="LineNr">3914 </span> (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *eax *(ebp+0xc)) -<span id="L3915" class="LineNr">3915 </span> 3d/compare-eax-and 0/imm32 +<span id="L3915" class="LineNr">3915 </span> 3d/compare-eax-and 0/imm32/false <span id="L3916" class="LineNr">3916 </span> 58/pop-to-eax <span id="L3917" class="LineNr">3917 </span> 75/jump-if-!= $find-in-function-outputs:end/disp8 <span id="L3918" class="LineNr">3918 </span> <span class="subxComment"># curr = curr->next</span> @@ -4009,7 +4009,7 @@ if ('onhashchange' in window) { <span id="L4062" class="LineNr">4062 </span> 51/push-ecx <span id="L4063" class="LineNr">4063 </span> <span class="subxComment"># if (!is-hex-int?(name)) abort</span> <span id="L4064" class="LineNr">4064 </span> (<a href='../067parse-hex.subx.html#L9'>is-hex-int?</a> *(ebp+0xc)) <span class="subxComment"># => eax</span> -<span id="L4065" class="LineNr">4065 </span> 3d/compare-eax-and 0/imm32 +<span id="L4065" class="LineNr">4065 </span> 3d/compare-eax-and 0/imm32/false <span id="L4066" class="LineNr">4066 </span> 0f 84/jump-if-= $new-literal-integer:abort/disp32 <span id="L4067" class="LineNr">4067 </span> <span class="subxComment"># var s/ecx: (addr array byte)</span> <span id="L4068" class="LineNr">4068 </span> (<a href='../072slice.subx.html#L1044'>slice-to-string</a> <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span> *(ebp+0xc)) <span class="subxComment"># => eax</span> @@ -4413,7 +4413,7 @@ if ('onhashchange' in window) { <span id="L4466" class="LineNr">4466 </span><span class="Constant">$emit-subx-stmt-list:stmt1</span>: <span id="L4467" class="LineNr">4467 </span> { <span id="L4468" class="LineNr">4468 </span> (<a href='mu.subx.html#L4650'>is-mu-branch?</a> %ecx) <span class="subxComment"># => eax</span> -<span id="L4469" class="LineNr">4469 </span> 3d/compare-eax-and 0/imm32 +<span id="L4469" class="LineNr">4469 </span> 3d/compare-eax-and 0/imm32/false <span id="L4470" class="LineNr">4470 </span> 0f 84/jump-if-= <span class="Constant">break</span>/disp32 <span id="L4471" class="LineNr">4471 </span><span class="Constant">$emit-subx-stmt-list:branch-stmt</span>: <span id="L4472" class="LineNr">4472 </span> <span class="subxComment"># if !var-seen? break</span> @@ -4502,7 +4502,7 @@ if ('onhashchange' in window) { <span id="L4657" class="LineNr">4657 </span> 8b/-> *(ebp+8) 1/r32/ecx <span id="L4658" class="LineNr">4658 </span> <span class="subxComment"># if (stmt->operation starts with "loop") return true</span> <span id="L4659" class="LineNr">4659 </span> (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> *(ecx+4) <span class="Constant">"loop"</span>) <span class="subxComment"># Stmt1-operation => eax</span> -<span id="L4660" class="LineNr">4660 </span> 3d/compare-eax-and 0/imm32 +<span id="L4660" class="LineNr">4660 </span> 3d/compare-eax-and 0/imm32/false <span id="L4661" class="LineNr">4661 </span> 75/jump-if-not-equal $is-mu-branch?:end/disp8 <span id="L4662" class="LineNr">4662 </span> <span class="subxComment"># otherwise return (stmt->operation starts with "break")</span> <span id="L4663" class="LineNr">4663 </span> (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> *(ecx+4) <span class="Constant">"break"</span>) <span class="subxComment"># Stmt1-operation => eax</span> @@ -4739,7 +4739,7 @@ if ('onhashchange' in window) { <span id="L4894" class="LineNr">4894 </span> 8b/-> *edx 3/r32/ebx <span id="L4895" class="LineNr">4895 </span> <span class="subxComment"># if (v->name == until-block-label) break</span> <span id="L4896" class="LineNr">4896 </span> (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *ebx *(ebp+0x10)) <span class="subxComment"># => eax</span> -<span id="L4897" class="LineNr">4897 </span> 3d/compare-eax-and 0/imm32 +<span id="L4897" class="LineNr">4897 </span> 3d/compare-eax-and 0/imm32/false <span id="L4898" class="LineNr">4898 </span> 0f 85/jump-if-!= <span class="Constant">break</span>/disp32 <span id="L4899" class="LineNr">4899 </span> <span class="subxComment"># if v is in a register</span> <span id="L4900" class="LineNr">4900 </span> 81 7/subop/compare *(ebx+0x10) 0/imm32 <span class="subxComment"># Var-register</span> @@ -6474,14 +6474,14 @@ if ('onhashchange' in window) { <span id="L6629" class="LineNr">6629 </span> 8b/-> *(eax+4) 1/r32/ecx <span id="L6630" class="LineNr">6630 </span> { <span id="L6631" class="LineNr">6631 </span> (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> %ecx <span class="Constant">"break"</span>) <span class="subxComment"># => eax</span> -<span id="L6632" class="LineNr">6632 </span> 3d/compare-eax-and 0/imm32 +<span id="L6632" class="LineNr">6632 </span> 3d/compare-eax-and 0/imm32/false <span id="L6633" class="LineNr">6633 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L6634" class="LineNr">6634 </span> (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">":break"</span>) <span id="L6635" class="LineNr">6635 </span> } <span id="L6636" class="LineNr">6636 </span> <span class="subxComment"># hack: if instruction operation starts with "loop", emit ":loop"</span> <span id="L6637" class="LineNr">6637 </span> { <span id="L6638" class="LineNr">6638 </span> (<a href='../054string-equal.subx.html#L58'>string-starts-with?</a> %ecx <span class="Constant">"loop"</span>) <span class="subxComment"># => eax</span> -<span id="L6639" class="LineNr">6639 </span> 3d/compare-eax-and 0/imm32 +<span id="L6639" class="LineNr">6639 </span> 3d/compare-eax-and 0/imm32/false <span id="L6640" class="LineNr">6640 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L6641" class="LineNr">6641 </span> (<a href='../065write-buffered.subx.html#L8'>write-buffered</a> *(ebp+8) <span class="Constant">":loop"</span>) <span id="L6642" class="LineNr">6642 </span> } @@ -6668,7 +6668,7 @@ if ('onhashchange' in window) { <span id="L6823" class="LineNr">6823 </span> <span class="subxComment"># if match(stmt, curr) return curr</span> <span id="L6824" class="LineNr">6824 </span> { <span id="L6825" class="LineNr">6825 </span> (<a href='mu.subx.html#L6887'>mu-stmt-matches-function?</a> *(ebp+0xc) %ecx) <span class="subxComment"># => eax</span> -<span id="L6826" class="LineNr">6826 </span> 3d/compare-eax-and 0/imm32 +<span id="L6826" class="LineNr">6826 </span> 3d/compare-eax-and 0/imm32/false <span id="L6827" class="LineNr">6827 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L6828" class="LineNr">6828 </span> 89/<- %eax 1/r32/ecx <span id="L6829" class="LineNr">6829 </span> eb/jump $find-matching-function:end/disp8 @@ -6709,7 +6709,7 @@ if ('onhashchange' in window) { <span id="L6864" class="LineNr">6864 </span> <span class="subxComment"># if match(curr, stmt) return curr</span> <span id="L6865" class="LineNr">6865 </span> { <span id="L6866" class="LineNr">6866 </span> (<a href='mu.subx.html#L6905'>mu-stmt-matches-primitive?</a> *(ebp+0xc) %ecx) <span class="subxComment"># => eax</span> -<span id="L6867" class="LineNr">6867 </span> 3d/compare-eax-and 0/imm32 +<span id="L6867" class="LineNr">6867 </span> 3d/compare-eax-and 0/imm32/false <span id="L6868" class="LineNr">6868 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L6869" class="LineNr">6869 </span> 89/<- %eax 1/r32/ecx <span id="L6870" class="LineNr">6870 </span> eb/jump $find-matching-primitive:end/disp8 @@ -6770,7 +6770,7 @@ if ('onhashchange' in window) { <span id="L6925" class="LineNr">6925 </span><span class="Constant">$mu-stmt-matches-primitive?:check-name</span>: <span id="L6926" class="LineNr">6926 </span> <span class="subxComment"># if (primitive->name != stmt->operation) return false</span> <span id="L6927" class="LineNr">6927 </span> (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(ecx+4) *edx) <span class="subxComment"># Stmt1-operation, Primitive-name => eax</span> -<span id="L6928" class="LineNr">6928 </span> 3d/compare-eax-and 0/imm32 +<span id="L6928" class="LineNr">6928 </span> 3d/compare-eax-and 0/imm32/false <span id="L6929" class="LineNr">6929 </span> 75/jump-if-!= <span class="Constant">break</span>/disp8 <span id="L6930" class="LineNr">6930 </span> b8/copy-to-eax 0/imm32 <span id="L6931" class="LineNr">6931 </span> e9/jump $mu-stmt-matches-primitive?:end/disp32 @@ -6806,7 +6806,7 @@ if ('onhashchange' in window) { <span id="L6961" class="LineNr">6961 </span> <span class="subxComment"># if (curr != curr2) return false</span> <span id="L6962" class="LineNr">6962 </span> { <span id="L6963" class="LineNr">6963 </span> (<a href='mu.subx.html#L7031'>operand-matches-primitive?</a> *esi *edi) <span class="subxComment"># => eax</span> -<span id="L6964" class="LineNr">6964 </span> 3d/compare-eax-and 0/imm32 +<span id="L6964" class="LineNr">6964 </span> 3d/compare-eax-and 0/imm32/false <span id="L6965" class="LineNr">6965 </span> 75/jump-if-!= <span class="Constant">break</span>/disp8 <span id="L6966" class="LineNr">6966 </span> b8/copy-to-eax 0/imm32/false <span id="L6967" class="LineNr">6967 </span> e9/jump $mu-stmt-matches-primitive?:end/disp32 @@ -6848,7 +6848,7 @@ if ('onhashchange' in window) { <span id="L7003" class="LineNr">7003 </span> <span class="subxComment"># if (curr != curr2) return false</span> <span id="L7004" class="LineNr">7004 </span> { <span id="L7005" class="LineNr">7005 </span> (<a href='mu.subx.html#L7031'>operand-matches-primitive?</a> *esi *edi) <span class="subxComment"># List-value List-value => eax</span> -<span id="L7006" class="LineNr">7006 </span> 3d/compare-eax-and 0/imm32 +<span id="L7006" class="LineNr">7006 </span> 3d/compare-eax-and 0/imm32/false <span id="L7007" class="LineNr">7007 </span> 75/jump-if-!= <span class="Constant">break</span>/disp8 <span id="L7008" class="LineNr">7008 </span> b8/copy-to-eax 0/imm32 <span id="L7009" class="LineNr">7009 </span> e9/jump $mu-stmt-matches-primitive?:end/disp32 @@ -6886,7 +6886,7 @@ if ('onhashchange' in window) { <span id="L7041" class="LineNr">7041 </span> 8b/-> *(ebp+0xc) 7/r32/edi <span id="L7042" class="LineNr">7042 </span> <span class="subxComment"># if (var->type != prim-var->type) return false</span> <span id="L7043" class="LineNr">7043 </span> (<a href='mu.subx.html#L7080'>type-equal?</a> *(esi+4) *(edi+4)) <span class="subxComment"># Var-type, Var-type => eax</span> -<span id="L7044" class="LineNr">7044 </span> 3d/compare-eax-and 0/imm32 +<span id="L7044" class="LineNr">7044 </span> 3d/compare-eax-and 0/imm32/false <span id="L7045" class="LineNr">7045 </span> b8/copy-to-eax 0/imm32/false <span id="L7046" class="LineNr">7046 </span> 74/jump-if-= $operand-matches-primitive?:end/disp8 <span id="L7047" class="LineNr">7047 </span> <span class="subxComment"># return false if var->register doesn't match prim-var->register</span> @@ -6902,12 +6902,12 @@ if ('onhashchange' in window) { <span id="L7057" class="LineNr">7057 </span> 74/jump-if-= $operand-matches-primitive?:end/disp8 <span class="subxComment"># eax goes from meaning var->register to result</span> <span id="L7058" class="LineNr">7058 </span> <span class="subxComment"># if prim-var->register is "*", return true</span> <span id="L7059" class="LineNr">7059 </span> (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(edi+0x10) <span class="Constant">"*"</span>) <span class="subxComment"># Var-register</span> -<span id="L7060" class="LineNr">7060 </span> 3d/compare-eax-and 0/imm32 +<span id="L7060" class="LineNr">7060 </span> 3d/compare-eax-and 0/imm32/false <span id="L7061" class="LineNr">7061 </span> b8/copy-to-eax 1/imm32/true <span id="L7062" class="LineNr">7062 </span> 75/jump-if-!= $operand-matches-primitive?:end/disp8 <span id="L7063" class="LineNr">7063 </span> <span class="subxComment"># if string contents don't match, return false</span> <span id="L7064" class="LineNr">7064 </span> (<a href='../054string-equal.subx.html#L16'>string-equal?</a> *(esi+0x10) *(edi+0x10)) <span class="subxComment"># Var-register Var-register</span> -<span id="L7065" class="LineNr">7065 </span> 3d/compare-eax-and 0/imm32 +<span id="L7065" class="LineNr">7065 </span> 3d/compare-eax-and 0/imm32/false <span id="L7066" class="LineNr">7066 </span> b8/copy-to-eax 0/imm32/false <span id="L7067" class="LineNr">7067 </span> 74/jump-if-= $operand-matches-primitive?:end/disp8 <span id="L7068" class="LineNr">7068 </span> } @@ -6948,7 +6948,7 @@ if ('onhashchange' in window) { <span id="L7103" class="LineNr">7103 </span> 72/jump-if-addr< $type-equal?:end/disp8 <span id="L7104" class="LineNr">7104 </span> <span class="subxComment"># if (!type-equal?(a->left, b->left)) return false</span> <span id="L7105" class="LineNr">7105 </span> (<a href='mu.subx.html#L7080'>type-equal?</a> *ecx *edx) <span class="subxComment"># Tree-left, Tree-left => eax</span> -<span id="L7106" class="LineNr">7106 </span> 3d/compare-eax-and 0/imm32 +<span id="L7106" class="LineNr">7106 </span> 3d/compare-eax-and 0/imm32/false <span id="L7107" class="LineNr">7107 </span> 74/jump-if-= $type-equal?:end/disp8 <span id="L7108" class="LineNr">7108 </span> <span class="subxComment"># return type-equal?(a->right, b->right)</span> <span id="L7109" class="LineNr">7109 </span> (<a href='mu.subx.html#L7080'>type-equal?</a> *(ecx+4) *(edx+4)) <span class="subxComment"># Tree-right, Tree-right => eax</span> |