diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-02-17 15:29:43 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-02-17 15:29:43 -0800 |
commit | c52ae116ace032a3eaa53bd297836b675cd8393e (patch) | |
tree | f7e6f7349db94ec0303ea323957040ca20999081 | |
parent | 6323661c2c588c4fed280f55f20ca3bbc92edb27 (diff) | |
download | mu-c52ae116ace032a3eaa53bd297836b675cd8393e.tar.gz |
6015
27 files changed, 317 insertions, 236 deletions
diff --git a/html/052kernel-string-equal.subx.html b/html/052kernel-string-equal.subx.html index 3a09cf75..9215365d 100644 --- a/html/052kernel-string-equal.subx.html +++ b/html/052kernel-string-equal.subx.html @@ -146,7 +146,7 @@ if ('onhashchange' in window) { <span id="L84" class="LineNr"> 84 </span> <span class="subxComment"># c2 = *s2</span> <span id="L85" class="LineNr"> 85 </span> 8a/copy-byte 0/mod/indirect 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/BL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *esi to BL</span> <span id="L86" class="LineNr"> 86 </span> <span class="subxComment"># if (c1 == 0) return false</span> -<span id="L87" class="LineNr"> 87 </span> 3d/compare-eax-and 0/imm32 +<span id="L87" class="LineNr"> 87 </span> 3d/compare-eax-and 0/imm32/null <span id="L88" class="LineNr"> 88 </span> 74/jump-if-= $kernel-string-equal?:false/disp8 <span id="L89" class="LineNr"> 89 </span> <span class="subxComment"># if (c1 != c2) return false</span> <span id="L90" class="LineNr"> 90 </span> 39/compare 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># compare eax and ebx</span> @@ -161,7 +161,7 @@ if ('onhashchange' in window) { <span id="L99" class="LineNr"> 99 </span><span class="Constant">$kernel-string-equal?:break</span>: <span id="L100" class="LineNr">100 </span> <span class="subxComment"># return *s1 == 0</span> <span id="L101" class="LineNr">101 </span> 8a/copy-byte 0/mod/indirect 7/rm32/edi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/AL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *edi to AL</span> -<span id="L102" class="LineNr">102 </span> 3d/compare-eax-and 0/imm32 +<span id="L102" class="LineNr">102 </span> 3d/compare-eax-and 0/imm32/null <span id="L103" class="LineNr">103 </span> 75/jump-if-!= $kernel-string-equal?:false/disp8 <span id="L104" class="LineNr">104 </span><span class="Constant">$kernel-string-equal?:true</span>: <span id="L105" class="LineNr">105 </span> b8/copy-to-eax 1/imm32 diff --git a/html/066print-int.subx.html b/html/066print-int.subx.html index 9c077c58..c2b71a84 100644 --- a/html/066print-int.subx.html +++ b/html/066print-int.subx.html @@ -414,7 +414,7 @@ if ('onhashchange' in window) { <span id="L353" class="LineNr">353 </span> e8/call <a href='064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L354" class="LineNr">354 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L355" class="LineNr">355 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L356" class="Folded">356 </span><span class="Folded">+-- 18 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L356" class="Folded">356 </span><span class="Folded">+-- 18 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L374" class="LineNr">374 </span> <span class="subxComment"># check-stream-equal(_test-stream, "0x008899aa", msg)</span> <span id="L375" class="LineNr">375 </span> <span class="subxS2Comment"># . . push args</span> <span id="L376" class="LineNr">376 </span> 68/push <span class="Constant">"F - test-print-int32-buffered"</span>/imm32 diff --git a/html/067parse-hex.subx.html b/html/067parse-hex.subx.html index 13b04099..90d53526 100644 --- a/html/067parse-hex.subx.html +++ b/html/067parse-hex.subx.html @@ -125,7 +125,7 @@ if ('onhashchange' in window) { <span id="L65" class="LineNr"> 65 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L66" class="LineNr"> 66 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> <span id="L67" class="LineNr"> 67 </span> <span class="subxComment"># if (eax == false) return false</span> -<span id="L68" class="LineNr"> 68 </span> 3d/compare-eax-and 0/imm32 +<span id="L68" class="LineNr"> 68 </span> 3d/compare-eax-and 0/imm32/false <span id="L69" class="LineNr"> 69 </span> 74/jump-if-= $is-hex-int?:end/disp8 <span id="L70" class="LineNr"> 70 </span> <span class="subxComment"># ++curr</span> <span id="L71" class="LineNr"> 71 </span> 41/increment-ecx diff --git a/html/071read-line.subx.html b/html/071read-line.subx.html index 8f26841f..1dd7df47 100644 --- a/html/071read-line.subx.html +++ b/html/071read-line.subx.html @@ -135,7 +135,7 @@ if ('onhashchange' in window) { <span id="L75" class="LineNr"> 75 </span> <span class="subxComment"># ++s->write</span> <span id="L76" class="LineNr"> 76 </span> 42/increment-edx <span id="L77" class="LineNr"> 77 </span> <span class="subxComment"># if (AL == '\n') return</span> -<span id="L78" class="LineNr"> 78 </span> 3d/compare-eax-and 0xa/imm32 +<span id="L78" class="LineNr"> 78 </span> 3d/compare-eax-and 0xa/imm32/newline <span id="L79" class="LineNr"> 79 </span> 75/jump-if-!= $read-line-buffered:<span class="Constant">loop</span>/disp8 <span id="L80" class="LineNr"> 80 </span><span class="Constant">$read-line-buffered:end</span>: <span id="L81" class="LineNr"> 81 </span> <span class="subxComment"># save f->read</span> @@ -320,7 +320,7 @@ if ('onhashchange' in window) { <span id="L260" class="LineNr">260 </span> <span class="subxComment"># ++s->write</span> <span id="L261" class="LineNr">261 </span> 42/increment-edx <span id="L262" class="LineNr">262 </span> <span class="subxComment"># if (AL == '\n') return</span> -<span id="L263" class="LineNr">263 </span> 3d/compare-eax-and 0xa/imm32 +<span id="L263" class="LineNr">263 </span> 3d/compare-eax-and 0xa/imm32/newline <span id="L264" class="LineNr">264 </span> 0f 85/jump-if-!= $read-line:<span class="Constant">loop</span>/disp32 <span id="L265" class="LineNr">265 </span><span class="Constant">$read-line:end</span>: <span id="L266" class="LineNr">266 </span> <span class="subxComment"># save f->read</span> diff --git a/html/072slice.subx.html b/html/072slice.subx.html index 2de664ab..77105894 100644 --- a/html/072slice.subx.html +++ b/html/072slice.subx.html @@ -1213,7 +1213,7 @@ if ('onhashchange' in window) { <span id="L1152" class="LineNr">1152 </span> e8/call <a href='072slice.subx.html#L1044'>slice-to-string</a>/disp32 <span id="L1153" class="LineNr">1153 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1154" class="LineNr">1154 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L1155" class="Folded">1155 </span><span class="Folded">+-- 26 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L1155" class="Folded">1155 </span><span class="Folded">+-- 26 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1181" class="LineNr">1181 </span> <span class="subxComment"># eax = string-equal?(eax, "Abc")</span> <span id="L1182" class="LineNr">1182 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1183" class="LineNr">1183 </span> 68/push <span class="Constant">"Abc"</span>/imm32 diff --git a/html/075print-int-decimal.subx.html b/html/075print-int-decimal.subx.html index 75271d9a..21f4811e 100644 --- a/html/075print-int-decimal.subx.html +++ b/html/075print-int-decimal.subx.html @@ -297,7 +297,7 @@ if ('onhashchange' in window) { <span id="L236" class="LineNr">236 </span> e8/call <a href='075print-int-decimal.subx.html#L8'>print-int32-decimal</a>/disp32 <span id="L237" class="LineNr">237 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L238" class="LineNr">238 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L239" class="Folded">239 </span><span class="Folded">+-- 26 lines: #? # dump _test-stream ---------------------------------------------------------------------------------------------------------------------</span> +<span id="L239" class="Folded">239 </span><span class="Folded">+-- 26 lines: #? # dump _test-stream ------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L265" class="LineNr">265 </span> <span class="subxComment"># check-stream-equal(_test-stream, "-9", msg)</span> <span id="L266" class="LineNr">266 </span> <span class="subxS2Comment"># . . push args</span> <span id="L267" class="LineNr">267 </span> 68/push <span class="Constant">"F - test-print-int32-decimal-negative"</span>/imm32 diff --git a/html/079emit.subx.html b/html/079emit.subx.html index 67fc7401..4975046a 100644 --- a/html/079emit.subx.html +++ b/html/079emit.subx.html @@ -493,7 +493,7 @@ if ('onhashchange' in window) { <span id="L432" class="LineNr">432 </span> e8/call <a href='064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L433" class="LineNr">433 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L434" class="LineNr">434 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L435" class="Folded">435 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L435" class="Folded">435 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L461" class="LineNr">461 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "abcd/xyz")</span> <span id="L462" class="LineNr">462 </span> <span class="subxS2Comment"># . . push args</span> <span id="L463" class="LineNr">463 </span> 68/push <span class="Constant">"F - test-emit-non-number-with-all-hex-digits"</span>/imm32 diff --git a/html/084emit-hex-array.subx.html b/html/084emit-hex-array.subx.html index d2218bd0..22af54c8 100644 --- a/html/084emit-hex-array.subx.html +++ b/html/084emit-hex-array.subx.html @@ -150,7 +150,7 @@ if ('onhashchange' in window) { <span id="L90" class="LineNr"> 90 </span> e8/call <a href='064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L91" class="LineNr"> 91 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L92" class="LineNr"> 92 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L93" class="Folded"> 93 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L93" class="Folded"> 93 </span><span class="Folded">+-- 33 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L126" class="LineNr">126 </span> <span class="subxComment"># check-next-stream-line-equal(_test-output-stream, "01 02 03 ", msg)</span> <span id="L127" class="LineNr">127 </span> <span class="subxS2Comment"># . . push args</span> <span id="L128" class="LineNr">128 </span> 68/push <span class="Constant">"F - test-emit-hex-array"</span>/imm32 diff --git a/html/apps/assort.subx.html b/html/apps/assort.subx.html index bc77a2c4..565ad9e7 100644 --- a/html/apps/assort.subx.html +++ b/html/apps/assort.subx.html @@ -173,7 +173,7 @@ if ('onhashchange' in window) { <span id="L111" class="LineNr">111 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L112" class="LineNr">112 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> <span id="L113" class="LineNr">113 </span><span class="Constant">$subx-assort:<a href='../060read.subx.html#L48'>read</a></span>: -<span id="L114" class="Folded">114 </span><span class="Folded">+-- 9 lines: #? # print("read\n") -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L114" class="Folded">114 </span><span class="Folded">+-- 9 lines: #? # print("read\n") --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L123" class="LineNr">123 </span> <span class="subxComment"># read-segments(in, table)</span> <span id="L124" class="LineNr">124 </span> <span class="subxS2Comment"># . . push args</span> <span id="L125" class="LineNr">125 </span> 51/push-ecx @@ -183,7 +183,7 @@ if ('onhashchange' in window) { <span id="L129" class="LineNr">129 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L130" class="LineNr">130 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L131" class="LineNr">131 </span><span class="Constant">$subx-assort:<a href='../057write.subx.html#L24'>write</a></span>: -<span id="L132" class="Folded">132 </span><span class="Folded">+-- 9 lines: #? # print("write\n") ----------------------------------------------------------------------------------------------------------------------</span> +<span id="L132" class="Folded">132 </span><span class="Folded">+-- 9 lines: #? # print("write\n") -------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L141" class="LineNr">141 </span> <span class="subxComment"># write-segments(out, table)</span> <span id="L142" class="LineNr">142 </span> <span class="subxS2Comment"># . . push args</span> <span id="L143" class="LineNr">143 </span> 51/push-ecx @@ -386,7 +386,7 @@ if ('onhashchange' in window) { <span id="L340" class="LineNr">340 </span> <span class="subxComment"># 10 11</span> <span id="L341" class="LineNr">341 </span> <span class="subxComment"># == data 0x0a000000</span> <span id="L342" class="LineNr">342 </span> <span class="subxComment"># 4 5/imm32</span> -<span id="L343" class="Folded">343 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L343" class="Folded">343 </span><span class="Folded">+-- 33 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L376" class="LineNr">376 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "== code 0x09000000", msg)</span> <span id="L377" class="LineNr">377 </span> <span class="subxS2Comment"># . . push args</span> <span id="L378" class="LineNr">378 </span> 68/push <span class="Constant">"F - <a href='assort.subx.html#L159'>test-subx-assort</a>/0"</span>/imm32 @@ -540,7 +540,7 @@ if ('onhashchange' in window) { <span id="L526" class="LineNr">526 </span> <span class="subxComment"># if (line->write == 0) break</span> <span id="L527" class="LineNr">527 </span> 81 7/subop/compare 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32 <span class="subxComment"># compare *ecx</span> <span id="L528" class="LineNr">528 </span> 0f 84/jump-if-= $read-segments:<span class="Constant">break</span>/disp32 -<span id="L529" class="Folded">529 </span><span class="Folded">+-- 33 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L529" class="Folded">529 </span><span class="Folded">+-- 33 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L562" class="LineNr">562 </span> <span class="subxComment"># next-word-or-string(line, word-slice)</span> <span id="L563" class="LineNr">563 </span> <span class="subxS2Comment"># . . push args</span> <span id="L564" class="LineNr">564 </span> 52/push-edx @@ -550,7 +550,7 @@ if ('onhashchange' in window) { <span id="L568" class="LineNr">568 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L569" class="LineNr">569 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L570" class="LineNr">570 </span><span class="Constant">$read-segments:check1</span>: -<span id="L571" class="Folded">571 </span><span class="Folded">+-- 9 lines: #? # print("check1\n") ---------------------------------------------------------------------------------------------------------------------</span> +<span id="L571" class="Folded">571 </span><span class="Folded">+-- 9 lines: #? # print("check1\n") ------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L580" class="LineNr">580 </span> <span class="subxComment"># if (slice-empty?(word-slice)) continue</span> <span id="L581" class="LineNr">581 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> <span id="L582" class="LineNr">582 </span> <span class="subxS2Comment"># . . push args</span> @@ -563,7 +563,7 @@ if ('onhashchange' in window) { <span id="L589" class="LineNr">589 </span> 3d/compare-eax-and 0/imm32/false <span id="L590" class="LineNr">590 </span> 0f 85/jump-if-!= $read-segments:<span class="Constant">loop</span>/disp32 <span id="L591" class="LineNr">591 </span><span class="Constant">$read-segments:check-for-comment</span>: -<span id="L592" class="Folded">592 </span><span class="Folded">+-- 9 lines: #? # print("check for comment\n") ----------------------------------------------------------------------------------------------------------</span> +<span id="L592" class="Folded">592 </span><span class="Folded">+-- 9 lines: #? # print("check for comment\n") -------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L601" class="LineNr">601 </span> <span class="subxComment"># if (slice-starts-with?(word-slice, "#")) continue</span> <span id="L602" class="LineNr">602 </span> <span class="subxS1Comment"># . var start/esi: (addr byte) = word-slice->start</span> <span id="L603" class="LineNr">603 </span> 8b/copy 0/mod/indirect 2/rm32/edx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 6/r32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy *ecx to esi</span> @@ -574,8 +574,8 @@ if ('onhashchange' in window) { <span id="L608" class="LineNr">608 </span> 3d/compare-eax-and 0x23/imm32/hash <span id="L609" class="LineNr">609 </span> 0f 84/jump-if-= $read-segments:<span class="Constant">loop</span>/disp32 <span id="L610" class="LineNr">610 </span><span class="Constant">$read-segments:check-for-segment-header</span>: -<span id="L611" class="Folded">611 </span><span class="Folded">+-- 9 lines: #? # print("check for segment header\n") ---------------------------------------------------------------------------------------------------</span> -<span id="L620" class="Folded">620 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L611" class="Folded">611 </span><span class="Folded">+-- 9 lines: #? # print("check for segment header\n") ------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L620" class="Folded">620 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L660" class="LineNr">660 </span> <span class="subxComment"># if !slice-equal?(word-slice, "==") goto next check</span> <span id="L661" class="LineNr">661 </span> <span class="subxS1Comment"># . eax = slice-equal?(word-slice, "==")</span> <span id="L662" class="LineNr">662 </span> <span class="subxS2Comment"># . . push args</span> @@ -596,7 +596,7 @@ if ('onhashchange' in window) { <span id="L677" class="LineNr">677 </span> e8/call <a href='../085next-word-or-string.subx.html#L8'>next-word-or-string</a>/disp32 <span id="L678" class="LineNr">678 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L679" class="LineNr">679 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L680" class="Folded">680 </span><span class="Folded">+-- 40 lines: #? # dump segment name ---------------------------------------------------------------------------------------------------------------------</span> +<span id="L680" class="Folded">680 </span><span class="Folded">+-- 40 lines: #? # dump segment name ------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L720" class="LineNr">720 </span> <span class="subxComment"># var segment-slot/eax: (addr handle stream byte) = leaky-get-or-insert-slice(table, segment-name, row-size=8)</span> <span id="L721" class="LineNr">721 </span> <span class="subxS2Comment"># . . push args</span> <span id="L722" class="LineNr">722 </span> 68/push 8/imm32/row-size @@ -631,8 +631,8 @@ if ('onhashchange' in window) { <span id="L751" class="LineNr">751 </span> 89/copy 0/mod/indirect 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ebx to *eax</span> <span id="L752" class="LineNr">752 </span> <span class="subxComment"># fall through</span> <span id="L753" class="LineNr">753 </span><span class="Constant">$read-segments:regular-line</span>: -<span id="L754" class="Folded">754 </span><span class="Folded">+-- 9 lines: #? # print("regular line\n") ---------------------------------------------------------------------------------------------------------------</span> -<span id="L763" class="Folded">763 </span><span class="Folded">+-- 33 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L754" class="Folded">754 </span><span class="Folded">+-- 9 lines: #? # print("regular line\n") ------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L763" class="Folded">763 </span><span class="Folded">+-- 33 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L796" class="LineNr">796 </span> <span class="subxComment"># rewind-stream(line)</span> <span id="L797" class="LineNr">797 </span> <span class="subxS2Comment"># . . push args</span> <span id="L798" class="LineNr">798 </span> 51/push-ecx @@ -640,7 +640,7 @@ if ('onhashchange' in window) { <span id="L800" class="LineNr">800 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L801" class="LineNr">801 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L802" class="LineNr">802 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L803" class="Folded">803 </span><span class="Folded">+-- 9 lines: #? # print("write stream\n") ---------------------------------------------------------------------------------------------------------------</span> +<span id="L803" class="Folded">803 </span><span class="Folded">+-- 9 lines: #? # print("write stream\n") ------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L812" class="LineNr">812 </span> <span class="subxComment"># write-stream(curr-segment, line)</span> <span id="L813" class="LineNr">813 </span> <span class="subxS2Comment"># . . push args</span> <span id="L814" class="LineNr">814 </span> 51/push-ecx @@ -650,7 +650,7 @@ if ('onhashchange' in window) { <span id="L818" class="LineNr">818 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L819" class="LineNr">819 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L820" class="LineNr">820 </span> <span class="subxComment"># loop</span> -<span id="L821" class="Folded">821 </span><span class="Folded">+-- 9 lines: #? # print("loop\n") -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L821" class="Folded">821 </span><span class="Folded">+-- 9 lines: #? # print("loop\n") --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L830" class="LineNr">830 </span> e9/jump $read-segments:<span class="Constant">loop</span>/disp32 <span id="L831" class="LineNr">831 </span><span class="Constant">$read-segments:break</span>: <span id="L832" class="LineNr">832 </span><span class="Constant">$read-segments:end</span>: diff --git a/html/apps/braces.subx.html b/html/apps/braces.subx.html index 3d33c79e..6c9eef10 100644 --- a/html/apps/braces.subx.html +++ b/html/apps/braces.subx.html @@ -119,7 +119,7 @@ if ('onhashchange' in window) { <span id="L60" class="LineNr"> 60 </span> 7e/jump-if-<= $subx-braces-main:interactive/disp8 <span id="L61" class="LineNr"> 61 </span> <span class="subxComment"># if (argv[1] != "test")) goto interactive</span> <span id="L62" class="LineNr"> 62 </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="L63" class="LineNr"> 63 </span> 3d/compare-eax-and 0/imm32 +<span id="L63" class="LineNr"> 63 </span> 3d/compare-eax-and 0/imm32/false <span id="L64" class="LineNr"> 64 </span> 74/jump-if-= $subx-braces-main:interactive/disp8 <span id="L65" class="LineNr"> 65 </span> <span class="subxComment">#</span> <span id="L66" class="LineNr"> 66 </span> (run-tests) @@ -245,7 +245,7 @@ if ('onhashchange' in window) { <span id="L186" class="LineNr">186 </span><span class="Constant">$subx-braces:check1</span>: <span id="L187" class="LineNr">187 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L188" class="LineNr">188 </span> (<a href='../072slice.subx.html#L9'>slice-empty?</a> %edi) -<span id="L189" class="LineNr">189 </span> 3d/compare-eax-and 0/imm32 +<span id="L189" class="LineNr">189 </span> 3d/compare-eax-and 0/imm32/false <span id="L190" class="LineNr">190 </span> 0f 85/jump-if-!= $subx-braces:next-line/disp32 <span id="L191" class="LineNr">191 </span><span class="Constant">$subx-braces:check-for-comment</span>: <span id="L192" class="LineNr">192 </span> <span class="subxComment"># if (slice-starts-with?(word-slice, "#")) continue</span> @@ -329,7 +329,7 @@ if ('onhashchange' in window) { <span id="L270" class="LineNr">270 </span> (<a href='braces.subx.html#L78'>subx-braces</a> <a href='../061read-byte.subx.html#L313'>_test-input-buffered-file</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>) <span id="L271" class="LineNr">271 </span> <span class="subxComment"># check that the line just passed through</span> <span id="L272" class="LineNr">272 </span> (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>) -<span id="L273" class="Folded">273 </span><span class="Folded">+-- 5 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L273" class="Folded">273 </span><span class="Folded">+-- 5 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L278" class="LineNr">278 </span> (<a href='../058stream-equal.subx.html#L194'>check-stream-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">"== abcd 0x1 \n"</span> <span class="Constant">"F - test-subx-braces-passes-most-words-through"</span>) <span id="L279" class="LineNr">279 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L280" class="LineNr">280 </span> 89/<- %esp 5/r32/ebp @@ -362,7 +362,7 @@ if ('onhashchange' in window) { <span id="L307" class="LineNr">307 </span> (<a href='braces.subx.html#L78'>subx-braces</a> <a href='../061read-byte.subx.html#L313'>_test-input-buffered-file</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>) <span id="L308" class="LineNr">308 </span> <span class="subxComment"># check that the line just passed through</span> <span id="L309" class="LineNr">309 </span> (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>) -<span id="L310" class="Folded">310 </span><span class="Folded">+-- 5 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L310" class="Folded">310 </span><span class="Folded">+-- 5 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L315" class="LineNr">315 </span> (<a href='../058stream-equal.subx.html#L194'>check-stream-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">"_loop0x00000001:\nab _break0x00000001/imm32 \ncd _loop0x00000001/imm32 \n_break0x00000001:\n"</span> <span class="Constant">"F - test-subx-braces-1"</span>) <span id="L316" class="LineNr">316 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L317" class="LineNr">317 </span> 89/<- %esp 5/r32/ebp @@ -399,7 +399,7 @@ if ('onhashchange' in window) { <span id="L348" class="LineNr">348 </span> (<a href='braces.subx.html#L78'>subx-braces</a> <a href='../061read-byte.subx.html#L313'>_test-input-buffered-file</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>) <span id="L349" class="LineNr">349 </span> <span class="subxComment"># check that the line just passed through</span> <span id="L350" class="LineNr">350 </span> (<a href='../064write-byte.subx.html#L81'>flush</a> <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>) -<span id="L351" class="Folded">351 </span><span class="Folded">+-- 5 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L351" class="Folded">351 </span><span class="Folded">+-- 5 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L356" class="LineNr">356 </span> (<a href='../058stream-equal.subx.html#L194'>check-stream-equal</a> <a href='../064write-byte.subx.html#L286'>_test-output-stream</a> <span class="Constant">"_loop0x00000001:\n_loop0x00000002:\nab _break0x00000002/imm32 \n_break0x00000002:\ncd _loop0x00000001/imm32 \n_break0x00000001:\n"</span> <span class="Constant">"F - test-subx-braces-2"</span>) <span id="L357" class="LineNr">357 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L358" class="LineNr">358 </span> 89/<- %esp 5/r32/ebp diff --git a/html/apps/calls.subx.html b/html/apps/calls.subx.html index 50e2d54f..b90d00a6 100644 --- a/html/apps/calls.subx.html +++ b/html/apps/calls.subx.html @@ -333,7 +333,7 @@ if ('onhashchange' in window) { <span id="L272" class="LineNr"> 272 </span> <span class="subxS1Comment"># . if (eax != false) break</span> <span id="L273" class="LineNr"> 273 </span> 3d/compare-eax-and 0/imm32/false <span id="L274" class="LineNr"> 274 </span> 0f 85/jump-if-!= $parse-line:end/disp32 -<span id="L275" class="Folded"> 275 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L275" class="Folded"> 275 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L315" class="LineNr"> 315 </span><span class="Constant">$parse-line:write-word</span>: <span id="L316" class="LineNr"> 316 </span> <span class="subxComment"># write-int(words, word-slice->start)</span> <span id="L317" class="LineNr"> 317 </span> <span class="subxS2Comment"># . . push args</span> @@ -690,7 +690,7 @@ if ('onhashchange' in window) { <span id="L668" class="LineNr"> 668 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L669" class="LineNr"> 669 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L670" class="LineNr"> 670 </span> 81 0/subop/add %esp 4/imm32 -<span id="L671" class="Folded"> 671 </span><span class="Folded">+-- 33 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L671" class="Folded"> 671 </span><span class="Folded">+-- 33 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L704" class="LineNr"> 704 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "# . (foo %eax)", msg)</span> <span id="L705" class="LineNr"> 705 </span> <span class="subxS2Comment"># . . push args</span> <span id="L706" class="LineNr"> 706 </span> 68/push <span class="Constant">"F - <a href='calls.subx.html#L614'>test-subx-calls-processes-calls</a>: comment"</span>/imm32 diff --git a/html/apps/dquotes.subx.html b/html/apps/dquotes.subx.html index 17242e74..43be5025 100644 --- a/html/apps/dquotes.subx.html +++ b/html/apps/dquotes.subx.html @@ -596,7 +596,7 @@ if ('onhashchange' in window) { <span id="L533" class="LineNr"> 533 </span> <span class="subxComment"># == data 0x2</span> <span id="L534" class="LineNr"> 534 </span> <span class="subxComment"># 4 5/imm32</span> <span id="L535" class="LineNr"> 535 </span> <span class="subxComment"># We don't care right now what exactly happens to comments. Trailing spaces are also minor details.</span> -<span id="L536" class="Folded"> 536 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L536" class="Folded"> 536 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L562" class="LineNr"> 562 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "", msg)</span> <span id="L563" class="LineNr"> 563 </span> <span class="subxS2Comment"># . . push args</span> <span id="L564" class="LineNr"> 564 </span> 68/push <span class="Constant">"F - <a href='dquotes.subx.html#L395'>test-subx-dquotes-is-idempotent-by-default</a>/0"</span>/imm32 @@ -773,7 +773,7 @@ if ('onhashchange' in window) { <span id="L735" class="LineNr"> 735 </span> <span class="subxComment"># called. We just want to make sure instructions using string literals</span> <span id="L736" class="LineNr"> 736 </span> <span class="subxComment"># switch to a string variable with the right value.</span> <span id="L737" class="LineNr"> 737 </span> <span class="subxComment"># (Modifying string literals completely off the radar for now.)</span> -<span id="L738" class="Folded"> 738 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L738" class="Folded"> 738 </span><span class="Folded">+-- 33 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L771" class="LineNr"> 771 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "== code 0x1 ", msg)</span> <span id="L772" class="LineNr"> 772 </span> <span class="subxS2Comment"># . . push args</span> <span id="L773" class="LineNr"> 773 </span> 68/push <span class="Constant">"F - <a href='dquotes.subx.html#L648'>test-subx-dquotes-processes-string-literals</a>/0"</span>/imm32 @@ -1087,7 +1087,7 @@ if ('onhashchange' in window) { <span id="L1081" class="LineNr">1081 </span> e8/call <a href='dquotes.subx.html#L849'>emit-string-literal-data</a>/disp32 <span id="L1082" class="LineNr">1082 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1083" class="LineNr">1083 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L1084" class="Folded">1084 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1084" class="Folded">1084 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1110" class="LineNr">1110 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "3/imm32 61/a 62/b 63/c ", msg)</span> <span id="L1111" class="LineNr">1111 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1112" class="LineNr">1112 </span> 68/push <span class="Constant">"F - test-emit-string-literal-data"</span>/imm32 @@ -1126,7 +1126,7 @@ if ('onhashchange' in window) { <span id="L1145" class="LineNr">1145 </span> e8/call <a href='dquotes.subx.html#L849'>emit-string-literal-data</a>/disp32 <span id="L1146" class="LineNr">1146 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1147" class="LineNr">1147 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L1148" class="Folded">1148 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1148" class="Folded">1148 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1174" class="LineNr">1174 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "0/imm32 ", msg)</span> <span id="L1175" class="LineNr">1175 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1176" class="LineNr">1176 </span> 68/push <span class="Constant">"F - test-emit-string-literal-data-empty"</span>/imm32 @@ -1166,7 +1166,7 @@ if ('onhashchange' in window) { <span id="L1210" class="LineNr">1210 </span> e8/call <a href='dquotes.subx.html#L849'>emit-string-literal-data</a>/disp32 <span id="L1211" class="LineNr">1211 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1212" class="LineNr">1212 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L1213" class="Folded">1213 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1213" class="Folded">1213 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1239" class="LineNr">1239 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "3/imm32 61/a 20 62/b ", msg) # ideally we'd like to say '20/space' but that requires managing names for codepoints</span> <span id="L1240" class="LineNr">1240 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1241" class="LineNr">1241 </span> 68/push <span class="Constant">"F - test-emit-string-literal-data-no-metadata-for-non-alphanumerics"</span>/imm32 @@ -1205,7 +1205,7 @@ if ('onhashchange' in window) { <span id="L1274" class="LineNr">1274 </span> e8/call <a href='dquotes.subx.html#L849'>emit-string-literal-data</a>/disp32 <span id="L1275" class="LineNr">1275 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1276" class="LineNr">1276 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L1277" class="Folded">1277 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1277" class="Folded">1277 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1303" class="LineNr">1303 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "3/imm32 61/a 22 62/b ", msg)</span> <span id="L1304" class="LineNr">1304 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1305" class="LineNr">1305 </span> 68/push <span class="Constant">"F - test-emit-string-literal-data-handles-escape-sequences"</span>/imm32 @@ -1244,7 +1244,7 @@ if ('onhashchange' in window) { <span id="L1338" class="LineNr">1338 </span> e8/call <a href='dquotes.subx.html#L849'>emit-string-literal-data</a>/disp32 <span id="L1339" class="LineNr">1339 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1340" class="LineNr">1340 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L1341" class="Folded">1341 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1341" class="Folded">1341 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1367" class="LineNr">1367 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "3/imm32 61/a 0a 62/b ", msg)</span> <span id="L1368" class="LineNr">1368 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1369" class="LineNr">1369 </span> 68/push <span class="Constant">"F - test-emit-string-literal-data-handles-newline-escape"</span>/imm32 @@ -1619,7 +1619,7 @@ if ('onhashchange' in window) { <span id="L1738" class="LineNr">1738 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1739" class="LineNr">1739 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1740" class="LineNr">1740 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1741" class="Folded">1741 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1741" class="Folded">1741 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1767" class="LineNr">1767 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "/ghi", msg) # important that there's no leading space</span> <span id="L1768" class="LineNr">1768 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1769" class="LineNr">1769 </span> 68/push <span class="Constant">"F - test-emit-metadata-in-string-literal"</span>/imm32 diff --git a/html/apps/ex1.mu.html b/html/apps/ex1.mu.html index a404b378..b6b86a75 100644 --- a/html/apps/ex1.mu.html +++ b/html/apps/ex1.mu.html @@ -16,8 +16,9 @@ a { color:inherit; } * { font-size:12pt; font-size: 1em; } .LineNr { } .Comment { color: #005faf; } -.Delimiter { color: #c000c0; } +.Constant { color: #008787; } .Special { color: #ff6060; } +.Delimiter { color: #c000c0; } .PreProc { color: #c000c0; } --> </style> @@ -64,7 +65,7 @@ if ('onhashchange' in window) { <span id="L8" class="LineNr"> 8 </span><span class="Comment"># $ echo $?</span> <span id="L9" class="LineNr"> 9 </span><span class="Comment"># 42</span> <span id="L10" class="LineNr">10 </span> -<span id="L11" class="LineNr">11 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/ebx: int <span class="Delimiter">{</span> +<span id="L11" class="LineNr">11 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span> <span id="L12" class="LineNr">12 </span> result <span class="Special"><-</span> copy 0x2a <span class="Comment"># Mu requires hexadecimal</span> <span id="L13" class="LineNr">13 </span><span class="Delimiter">}</span> </pre> diff --git a/html/apps/ex10.subx.html b/html/apps/ex10.subx.html index d12a00cf..a0a7fd11 100644 --- a/html/apps/ex10.subx.html +++ b/html/apps/ex10.subx.html @@ -103,7 +103,7 @@ if ('onhashchange' in window) { <span id="L44" class="LineNr">44 </span> bb/copy-to-ebx 0/imm32 <span id="L45" class="LineNr">45 </span> 8a/copy-byte 0/mod/indirect 2/rm32/edx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/BL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *edx to BL</span> <span id="L46" class="LineNr">46 </span> <span class="subxComment"># if (c1 == 0) break</span> -<span id="L47" class="LineNr">47 </span> 3d/compare-eax-and 0/imm32 +<span id="L47" class="LineNr">47 </span> 3d/compare-eax-and 0/imm32/null <span id="L48" class="LineNr">48 </span> 74/jump-if-= $argv-equal:<span class="Constant">break</span>/disp8 <span id="L49" class="LineNr">49 </span> <span class="subxComment"># if (c1 != c2) return false</span> <span id="L50" class="LineNr">50 </span> 39/compare 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># compare eax and ebx</span> @@ -115,7 +115,7 @@ if ('onhashchange' in window) { <span id="L56" class="LineNr">56 </span> eb/jump $argv-equal:<span class="Constant">loop</span>/disp8 <span id="L57" class="LineNr">57 </span><span class="Constant">$argv-equal:break</span>: <span id="L58" class="LineNr">58 </span> <span class="subxComment"># if (c2 == 0) return true</span> -<span id="L59" class="LineNr">59 </span> 81 7/subop/compare 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32 <span class="subxComment"># compare ebx</span> +<span id="L59" class="LineNr">59 </span> 81 7/subop/compare 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32/null <span class="subxComment"># compare ebx</span> <span id="L60" class="LineNr">60 </span> 75/jump-if-!= $argv-equal:false/disp8 <span id="L61" class="LineNr">61 </span><span class="Constant">$argv-equal:success</span>: <span id="L62" class="LineNr">62 </span> b8/copy-to-eax 1/imm32 diff --git a/html/apps/ex11.subx.html b/html/apps/ex11.subx.html index ca69cdaa..199ffcff 100644 --- a/html/apps/ex11.subx.html +++ b/html/apps/ex11.subx.html @@ -141,7 +141,7 @@ if ('onhashchange' in window) { <span id="L79" class="LineNr"> 79 </span> <span class="subxComment"># c2 = *s2</span> <span id="L80" class="LineNr"> 80 </span> 8a/copy-byte 0/mod/indirect 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/BL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *esi to BL</span> <span id="L81" class="LineNr"> 81 </span> <span class="subxComment"># if (c1 == 0) return false</span> -<span id="L82" class="LineNr"> 82 </span> 3d/compare-eax-and 0/imm32 +<span id="L82" class="LineNr"> 82 </span> 3d/compare-eax-and 0/imm32/null <span id="L83" class="LineNr"> 83 </span> 74/jump-if-= $kernel-string-equal?:false/disp8 <span id="L84" class="LineNr"> 84 </span> <span class="subxComment"># if (c1 != c2) return false</span> <span id="L85" class="LineNr"> 85 </span> 39/compare 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># compare eax and ebx</span> @@ -156,7 +156,7 @@ if ('onhashchange' in window) { <span id="L94" class="LineNr"> 94 </span><span class="Constant">$kernel-string-equal?:break</span>: <span id="L95" class="LineNr"> 95 </span> <span class="subxComment"># return *s1 == 0</span> <span id="L96" class="LineNr"> 96 </span> 8a/copy-byte 0/mod/indirect 7/rm32/edi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/AL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *edi to AL</span> -<span id="L97" class="LineNr"> 97 </span> 3d/compare-eax-and 0/imm32 +<span id="L97" class="LineNr"> 97 </span> 3d/compare-eax-and 0/imm32/null <span id="L98" class="LineNr"> 98 </span> 75/jump-if-!= $kernel-string-equal?:false/disp8 <span id="L99" class="LineNr"> 99 </span><span class="Constant">$kernel-string-equal?:true</span>: <span id="L100" class="LineNr">100 </span> b8/copy-to-eax 1/imm32 diff --git a/html/apps/ex2.2.mu.html b/html/apps/ex2.2.mu.html index 4d51bb54..711774a2 100644 --- a/html/apps/ex2.2.mu.html +++ b/html/apps/ex2.2.mu.html @@ -15,9 +15,9 @@ body { font-size:12pt; font-family: monospace; color: #000000; background-color: a { color:inherit; } * { font-size:12pt; font-size: 1em; } .LineNr { } -.Delimiter { color: #c000c0; } -.Special { color: #ff6060; } .Constant { color: #008787; } +.Special { color: #ff6060; } +.Delimiter { color: #c000c0; } .PreProc { color: #c000c0; } --> </style> @@ -54,11 +54,11 @@ if ('onhashchange' in window) { <body onload='JumpToLine();'> <a href='https://github.com/akkartik/mu/blob/master/apps/ex2.2.mu'>https://github.com/akkartik/mu/blob/master/apps/ex2.2.mu</a> <pre id='vimCodeElement'> -<span id="L1" class="LineNr"> 1 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/ebx: int <span class="Delimiter">{</span> +<span id="L1" class="LineNr"> 1 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span> <span id="L2" class="LineNr"> 2 </span> result <span class="Special"><-</span> foo <span id="L3" class="LineNr"> 3 </span><span class="Delimiter">}</span> <span id="L4" class="LineNr"> 4 </span> -<span id="L5" class="LineNr"> 5 </span><span class="PreProc">fn</span> foo<span class="PreProc"> -> </span>result/ebx: int <span class="Delimiter">{</span> +<span id="L5" class="LineNr"> 5 </span><span class="PreProc">fn</span> foo<span class="PreProc"> -> </span>result/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span> <span id="L6" class="LineNr"> 6 </span> var n: int <span id="L7" class="LineNr"> 7 </span> copy-to n,<span class="Constant"> 3</span> <span id="L8" class="LineNr"> 8 </span> increment n diff --git a/html/apps/ex2.mu.html b/html/apps/ex2.mu.html index 94429de0..38bb9d76 100644 --- a/html/apps/ex2.mu.html +++ b/html/apps/ex2.mu.html @@ -16,9 +16,9 @@ a { color:inherit; } * { font-size:12pt; font-size: 1em; } .LineNr { } .Comment { color: #005faf; } -.Delimiter { color: #c000c0; } -.Special { color: #ff6060; } .Constant { color: #008787; } +.Special { color: #ff6060; } +.Delimiter { color: #c000c0; } .PreProc { color: #c000c0; } --> </style> @@ -64,11 +64,11 @@ if ('onhashchange' in window) { <span id="L7" class="LineNr"> 7 </span><span class="Comment"># $ echo $?</span> <span id="L8" class="LineNr"> 8 </span><span class="Comment"># 7</span> <span id="L9" class="LineNr"> 9 </span> -<span id="L10" class="LineNr">10 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/ebx: int <span class="Delimiter">{</span> +<span id="L10" class="LineNr">10 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span> <span id="L11" class="LineNr">11 </span> result <span class="Special"><-</span> do-add<span class="Constant"> 3 4</span> <span id="L12" class="LineNr">12 </span><span class="Delimiter">}</span> <span id="L13" class="LineNr">13 </span> -<span id="L14" class="LineNr">14 </span><span class="PreProc">fn</span> do-add a: int, b: int<span class="PreProc"> -> </span>result/ebx: int <span class="Delimiter">{</span> +<span id="L14" class="LineNr">14 </span><span class="PreProc">fn</span> do-add a: int, b: int<span class="PreProc"> -> </span>result/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span> <span id="L15" class="LineNr">15 </span> result <span class="Special"><-</span> copy a <span id="L16" class="LineNr">16 </span> result <span class="Special"><-</span> add b <span id="L17" class="LineNr">17 </span><span class="Delimiter">}</span> diff --git a/html/apps/ex3.mu.html b/html/apps/ex3.mu.html new file mode 100644 index 00000000..5b4a00e3 --- /dev/null +++ b/html/apps/ex3.mu.html @@ -0,0 +1,72 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> +<title>Mu - apps/ex3.mu</title> +<meta name="Generator" content="Vim/8.1"> +<meta name="plugin-version" content="vim8.1_v1"> +<meta name="syntax" content="none"> +<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy="> +<meta name="colorscheme" content="minimal-light"> +<style type="text/css"> +<!-- +pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #c6c6c6; } +body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; } +a { color:inherit; } +* { font-size:12pt; font-size: 1em; } +.LineNr { } +.Constant { color: #008787; } +.Special { color: #ff6060; } +.Identifier { color: #af5f00; } +.Delimiter { color: #c000c0; } +.PreProc { color: #c000c0; } +--> +</style> + +<script type='text/javascript'> +<!-- + +/* function to open any folds containing a jumped-to line before jumping to it */ +function JumpToLine() +{ + var lineNum; + lineNum = window.location.hash; + lineNum = lineNum.substr(1); /* strip off '#' */ + + if (lineNum.indexOf('L') == -1) { + lineNum = 'L'+lineNum; + } + var lineElem = document.getElementById(lineNum); + /* Always jump to new location even if the line was hidden inside a fold, or + * we corrected the raw number to a line ID. + */ + if (lineElem) { + lineElem.scrollIntoView(true); + } + return true; +} +if ('onhashchange' in window) { + window.onhashchange = JumpToLine; +} + +--> +</script> +</head> +<body onload='JumpToLine();'> +<a href='https://github.com/akkartik/mu/blob/master/apps/ex3.mu'>https://github.com/akkartik/mu/blob/master/apps/ex3.mu</a> +<pre id='vimCodeElement'> +<span id="L1" class="LineNr"> 1 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span> +<span id="L2" class="LineNr"> 2 </span> result <span class="Special"><-</span> copy<span class="Constant"> 0</span> +<span id="L3" class="LineNr"> 3 </span> var i/<span class="Constant">eax</span>: int <span class="Special"><-</span> copy<span class="Constant"> 1</span> +<span id="L4" class="LineNr"> 4 </span> <span class="Delimiter">{</span> +<span id="L5" class="LineNr"> 5 </span> compare i, 0xa +<span id="L6" class="LineNr"> 6 </span> break-if-> +<span id="L7" class="LineNr"> 7 </span> result <span class="Special"><-</span> add i +<span id="L8" class="LineNr"> 8 </span> i <span class="Special"><-</span> increment +<span id="L9" class="LineNr"> 9 </span> <span class="Identifier"> loop</span> +<span id="L10" class="LineNr">10 </span> <span class="Delimiter">}</span> +<span id="L11" class="LineNr">11 </span><span class="Delimiter">}</span> +</pre> +</body> +</html> +<!-- vim: set foldmethod=manual : --> diff --git a/html/apps/ex8.subx.html b/html/apps/ex8.subx.html index 4055c3f0..8cf64378 100644 --- a/html/apps/ex8.subx.html +++ b/html/apps/ex8.subx.html @@ -102,7 +102,7 @@ if ('onhashchange' in window) { <span id="L43" class="LineNr">43 </span> <span class="subxComment"># var c/ecx = *s</span> <span id="L44" class="LineNr">44 </span> 8a/copy-byte 0/mod/* 2/rm32/edx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/CL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *edx to CL</span> <span id="L45" class="LineNr">45 </span> <span class="subxComment"># if (c == '\0') break</span> -<span id="L46" class="LineNr">46 </span> 81 7/subop/compare 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32 <span class="subxComment"># compare ecx</span> +<span id="L46" class="LineNr">46 </span> 81 7/subop/compare 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32/null <span class="subxComment"># compare ecx</span> <span id="L47" class="LineNr">47 </span> 74/jump-if-= $ascii-length:end/disp8 <span id="L48" class="LineNr">48 </span> <span class="subxComment"># ++s</span> <span id="L49" class="LineNr">49 </span> 42/increment-edx diff --git a/html/apps/factorial.mu.html b/html/apps/factorial.mu.html index e9f25b90..ce28a765 100644 --- a/html/apps/factorial.mu.html +++ b/html/apps/factorial.mu.html @@ -14,10 +14,11 @@ pre { white-space: pre-wrap; font-family: monospace; color: #000000; background- body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; } a { color:inherit; } * { font-size:12pt; font-size: 1em; } +.CommentedCode { color: #8a8a8a; } .LineNr { } -.Delimiter { color: #c000c0; } -.Special { color: #ff6060; } .Constant { color: #008787; } +.Special { color: #ff6060; } +.Delimiter { color: #c000c0; } .PreProc { color: #c000c0; } --> </style> @@ -54,25 +55,32 @@ if ('onhashchange' in window) { <body onload='JumpToLine();'> <a href='https://github.com/akkartik/mu/blob/master/apps/factorial.mu'>https://github.com/akkartik/mu/blob/master/apps/factorial.mu</a> <pre id='vimCodeElement'> -<span id="L1" class="LineNr"> 1 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a><span class="PreProc"> -> </span>result/ebx: int <span class="Delimiter">{</span> -<span id="L2" class="LineNr"> 2 </span> var tmp/eax: int <span class="Special"><-</span> factorial<span class="Constant"> 5</span> -<span id="L3" class="LineNr"> 3 </span> result <span class="Special"><-</span> copy tmp -<span id="L4" class="LineNr"> 4 </span><span class="Delimiter">}</span> -<span id="L5" class="LineNr"> 5 </span> -<span id="L6" class="LineNr"> 6 </span><span class="PreProc">fn</span> factorial n: int<span class="PreProc"> -> </span>result/eax: int <span class="Delimiter">{</span> -<span id="L7" class="LineNr"> 7 </span> compare n<span class="Constant"> 1</span> -<span id="L8" class="LineNr"> 8 </span> <span class="Delimiter">{</span> -<span id="L9" class="LineNr"> 9 </span> break-if<span class="PreProc">-></span> -<span id="L10" class="LineNr">10 </span> result <span class="Special"><-</span> copy<span class="Constant"> 1</span> -<span id="L11" class="LineNr">11 </span> <span class="Delimiter">}</span> -<span id="L12" class="LineNr">12 </span> <span class="Delimiter">{</span> -<span id="L13" class="LineNr">13 </span> break-if-<= -<span id="L14" class="LineNr">14 </span> var tmp/ecx: int <span class="Special"><-</span> copy n -<span id="L15" class="LineNr">15 </span> tmp <span class="Special"><-</span> decrement -<span id="L16" class="LineNr">16 </span> result <span class="Special"><-</span> factorial tmp -<span id="L17" class="LineNr">17 </span> result <span class="Special"><-</span> multiply n -<span id="L18" class="LineNr">18 </span> <span class="Delimiter">}</span> -<span id="L19" class="LineNr">19 </span><span class="Delimiter">}</span> +<span id="L1" class="LineNr"> 1 </span><span class="PreProc">fn</span> <a href='../mu-init-test.subx.html#L7'>main</a> args: (addr array kernel-string)<span class="PreProc"> -> </span>exit-status/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span> +<span id="L2" class="LineNr"> 2 </span><span class="CommentedCode">#? run-tests</span> +<span id="L3" class="LineNr"> 3 </span><span class="CommentedCode">#? result <- copy 0</span> +<span id="L4" class="LineNr"> 4 </span> var tmp/<span class="Constant">eax</span>: int <span class="Special"><-</span> factorial<span class="Constant"> 5</span> +<span id="L5" class="LineNr"> 5 </span> exit-status <span class="Special"><-</span> copy tmp +<span id="L6" class="LineNr"> 6 </span><span class="Delimiter">}</span> +<span id="L7" class="LineNr"> 7 </span> +<span id="L8" class="LineNr"> 8 </span><span class="PreProc">fn</span> factorial n: int<span class="PreProc"> -> </span>result/<span class="Constant">eax</span>: int <span class="Delimiter">{</span> +<span id="L9" class="LineNr"> 9 </span> compare n<span class="Constant"> 1</span> +<span id="L10" class="LineNr">10 </span> <span class="Delimiter">{</span> +<span id="L11" class="LineNr">11 </span> break-if-> +<span id="L12" class="LineNr">12 </span> result <span class="Special"><-</span> copy<span class="Constant"> 1</span> +<span id="L13" class="LineNr">13 </span> <span class="Delimiter">}</span> +<span id="L14" class="LineNr">14 </span> <span class="Delimiter">{</span> +<span id="L15" class="LineNr">15 </span> break-if-<= +<span id="L16" class="LineNr">16 </span> var tmp/<span class="Constant">ecx</span>: int <span class="Special"><-</span> copy n +<span id="L17" class="LineNr">17 </span> tmp <span class="Special"><-</span> decrement +<span id="L18" class="LineNr">18 </span> result <span class="Special"><-</span> factorial tmp +<span id="L19" class="LineNr">19 </span> result <span class="Special"><-</span> multiply n +<span id="L20" class="LineNr">20 </span> <span class="Delimiter">}</span> +<span id="L21" class="LineNr">21 </span><span class="Delimiter">}</span> +<span id="L22" class="LineNr">22 </span> +<span id="L23" class="LineNr">23 </span><span class="PreProc">fn</span> test-factorial <span class="Delimiter">{</span> +<span id="L24" class="LineNr">24 </span> var result/<span class="Constant">eax</span>: int <span class="Special"><-</span> factorial<span class="Constant"> 5</span> +<span id="L25" class="LineNr">25 </span> <a href='../051test.subx.html#L24'>check-ints-equal</a> result 0x78 <span class="Constant">"F</span> - test-factorial" +<span id="L26" class="LineNr">26 </span><span class="Delimiter">}</span> </pre> </body> </html> diff --git a/html/apps/hex.subx.html b/html/apps/hex.subx.html index dc2e9b88..4018c82f 100644 --- a/html/apps/hex.subx.html +++ b/html/apps/hex.subx.html @@ -578,7 +578,7 @@ if ('onhashchange' in window) { <span id="L517" class="LineNr"> 517 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L518" class="LineNr"> 518 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> <span id="L519" class="LineNr"> 519 </span> <span class="subxS1Comment"># . compare with 'false'</span> -<span id="L520" class="LineNr"> 520 </span> 3d/compare-with-eax 0/imm32 +<span id="L520" class="LineNr"> 520 </span> 3d/compare-with-eax 0/imm32/false <span id="L521" class="LineNr"> 521 </span> <span class="subxS1Comment"># . restore eax (does not affect flags)</span> <span id="L522" class="LineNr"> 522 </span> 58/pop-to-eax <span id="L523" class="LineNr"> 523 </span> <span class="subxS1Comment"># . check whether to return</span> @@ -595,7 +595,7 @@ if ('onhashchange' in window) { <span id="L534" class="LineNr"> 534 </span> 74/jump-if-= $scan-next-byte:<span class="Constant">loop</span>/disp8 <span id="L535" class="LineNr"> 535 </span><span class="Constant">$scan-next-byte:check2</span>: <span id="L536" class="LineNr"> 536 </span> <span class="subxComment"># if (eax == '#') skip-until-newline(in)</span> -<span id="L537" class="LineNr"> 537 </span> 3d/compare-with-eax 0x23/imm32 +<span id="L537" class="LineNr"> 537 </span> 3d/compare-with-eax 0x23/imm32/hash <span id="L538" class="LineNr"> 538 </span> 75/jump-if-!= $scan-next-byte:check3/disp8 <span id="L539" class="LineNr"> 539 </span> <span class="subxS1Comment"># . skip-until-newline(in)</span> <span id="L540" class="LineNr"> 540 </span> <span class="subxS2Comment"># . . push args</span> 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> diff --git a/html/apps/mulisp.subx.html b/html/apps/mulisp.subx.html index 261a40f7..6efa3b01 100644 --- a/html/apps/mulisp.subx.html +++ b/html/apps/mulisp.subx.html @@ -79,7 +79,7 @@ if ('onhashchange' in window) { <span id="L21" class="LineNr"> 21 </span> 7e/jump-if-<= <span class="Constant">break</span>/disp8 <span id="L22" class="LineNr"> 22 </span> <span class="subxComment"># if (argv[1] != "test")) break</span> <span id="L23" class="LineNr"> 23 </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="L24" class="LineNr"> 24 </span> 3d/compare-eax-and 0/imm32 +<span id="L24" class="LineNr"> 24 </span> 3d/compare-eax-and 0/imm32/false <span id="L25" class="LineNr"> 25 </span> 74/jump-if-= <span class="Constant">break</span>/disp8 <span id="L26" class="LineNr"> 26 </span> <span class="subxComment">#</span> <span id="L27" class="LineNr"> 27 </span> (run-tests) diff --git a/html/apps/pack.subx.html b/html/apps/pack.subx.html index 6cba91b4..f33af3e1 100644 --- a/html/apps/pack.subx.html +++ b/html/apps/pack.subx.html @@ -222,7 +222,7 @@ if ('onhashchange' in window) { <span id="L160" class="LineNr"> 160 </span> <span class="subxComment"># if (line->write == 0) break</span> <span id="L161" class="LineNr"> 161 </span> 81 7/subop/compare 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32 <span class="subxComment"># compare *ecx</span> <span id="L162" class="LineNr"> 162 </span> 0f 84/jump-if-= $subx-pack:<span class="Constant">break</span>/disp32 -<span id="L163" class="Folded"> 163 </span><span class="Folded">+-- 26 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L163" class="Folded"> 163 </span><span class="Folded">+-- 26 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L189" class="LineNr"> 189 </span> <span class="subxComment"># next-word(line, word-slice)</span> <span id="L190" class="LineNr"> 190 </span> <span class="subxS2Comment"># . . push args</span> <span id="L191" class="LineNr"> 191 </span> 52/push-edx @@ -244,7 +244,7 @@ if ('onhashchange' in window) { <span id="L207" class="LineNr"> 207 </span> 3d/compare-eax-and 0/imm32/false <span id="L208" class="LineNr"> 208 </span> 0f 85/jump-if-!= $subx-pack:pass-through/disp32 <span id="L209" class="LineNr"> 209 </span><span class="Constant">$subx-pack:check2</span>: -<span id="L210" class="Folded"> 210 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L210" class="Folded"> 210 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L250" class="LineNr"> 250 </span> <span class="subxComment"># if (!slice-equal?(word-slice, "==")) goto next check</span> <span id="L251" class="LineNr"> 251 </span> <span class="subxS1Comment"># . eax = slice-equal?(word-slice, "==")</span> <span id="L252" class="LineNr"> 252 </span> <span class="subxS2Comment"># . . push args</span> @@ -265,7 +265,7 @@ if ('onhashchange' in window) { <span id="L267" class="LineNr"> 267 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L268" class="LineNr"> 268 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L269" class="LineNr"> 269 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L270" class="Folded"> 270 </span><span class="Folded">+-- 40 lines: #? # dump segment name ---------------------------------------------------------------------------------------------------------------------</span> +<span id="L270" class="Folded"> 270 </span><span class="Folded">+-- 40 lines: #? # dump segment name ------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L310" class="LineNr"> 310 </span> <span class="subxComment"># in-code? = slice-equal?(word-slice, "code")</span> <span id="L311" class="LineNr"> 311 </span> <span class="subxS2Comment"># . . push args</span> <span id="L312" class="LineNr"> 312 </span> 68/push <span class="Constant">"code"</span>/imm32 @@ -626,7 +626,7 @@ if ('onhashchange' in window) { <span id="L667" class="LineNr"> 667 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L668" class="LineNr"> 668 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L669" class="LineNr"> 669 </span> <span class="subxComment"># check output</span> -<span id="L670" class="Folded"> 670 </span><span class="Folded">+-- 26 lines: #? # debug print ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L670" class="Folded"> 670 </span><span class="Folded">+-- 26 lines: #? # debug print ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L696" class="LineNr"> 696 </span> <span class="subxS1Comment"># . flush(_test-output-buffered-file)</span> <span id="L697" class="LineNr"> 697 </span> <span class="subxS2Comment"># . . push args</span> <span id="L698" class="LineNr"> 698 </span> 68/push <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>/imm32 @@ -760,7 +760,7 @@ if ('onhashchange' in window) { <span id="L826" class="LineNr"> 826 </span> <span class="subxComment"># 68 20 # 68/push 0x20/imm8</span> <span id="L827" class="LineNr"> 827 </span> <span class="subxComment"># == data 0x2</span> <span id="L828" class="LineNr"> 828 </span> <span class="subxComment"># 03 04 00 00 00</span> -<span id="L829" class="Folded"> 829 </span><span class="Folded">+-- 26 lines: #? # debug print ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L829" class="Folded"> 829 </span><span class="Folded">+-- 26 lines: #? # debug print ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L855" class="LineNr"> 855 </span> <span class="subxS1Comment"># . flush(_test-output-buffered-file)</span> <span id="L856" class="LineNr"> 856 </span> <span class="subxS2Comment"># . . push args</span> <span id="L857" class="LineNr"> 857 </span> 68/push <a href='../064write-byte.subx.html#L360'>_test-output-buffered-file</a>/imm32 @@ -849,7 +849,7 @@ if ('onhashchange' in window) { <span id="L940" class="LineNr"> 940 </span> 68/push 0/imm32/end <span id="L941" class="LineNr"> 941 </span> 68/push 0/imm32/start <span id="L942" class="LineNr"> 942 </span> 89/copy 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to ecx</span> -<span id="L943" class="Folded"> 943 </span><span class="Folded">+-- 26 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L943" class="Folded"> 943 </span><span class="Folded">+-- 26 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L969" class="LineNr"> 969 </span><span class="Constant">$convert-data:loop</span>: <span id="L970" class="LineNr"> 970 </span> <span class="subxComment"># next-word(line, word-slice)</span> <span id="L971" class="LineNr"> 971 </span> <span class="subxS2Comment"># . . push args</span> @@ -859,7 +859,7 @@ if ('onhashchange' in window) { <span id="L975" class="LineNr"> 975 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L976" class="LineNr"> 976 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L977" class="LineNr"> 977 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L978" class="Folded"> 978 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L978" class="Folded"> 978 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1018" class="LineNr">1018 </span><span class="Constant">$convert-data:check0</span>: <span id="L1019" class="LineNr">1019 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L1020" class="LineNr">1020 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> @@ -1022,7 +1022,7 @@ if ('onhashchange' in window) { <span id="L1177" class="LineNr">1177 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1178" class="LineNr">1178 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1179" class="LineNr">1179 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1180" class="Folded">1180 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1180" class="Folded">1180 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1206" class="LineNr">1206 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "# abcd", msg)</span> <span id="L1207" class="LineNr">1207 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1208" class="LineNr">1208 </span> 68/push <span class="Constant">"F - test-convert-data-passes-comments-through"</span>/imm32 @@ -1487,7 +1487,7 @@ if ('onhashchange' in window) { <span id="L1667" class="LineNr">1667 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1668" class="LineNr">1668 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1669" class="LineNr">1669 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1670" class="Folded">1670 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1670" class="Folded">1670 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1696" class="LineNr">1696 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "30 abcd/o 42 e1 00 00 \n", msg)</span> <span id="L1697" class="LineNr">1697 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1698" class="LineNr">1698 </span> 68/push <span class="Constant">"F - test-convert-data-multiple-words"</span>/imm32 @@ -1554,7 +1554,7 @@ if ('onhashchange' in window) { <span id="L1759" class="LineNr">1759 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1760" class="LineNr">1760 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1761" class="LineNr">1761 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1762" class="Folded">1762 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1762" class="Folded">1762 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1788" class="LineNr">1788 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "30 00 00 00 # comment", msg)</span> <span id="L1789" class="LineNr">1789 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1790" class="LineNr">1790 </span> 68/push <span class="Constant">"F - test-convert-data-trailing-comment"</span>/imm32 @@ -2074,7 +2074,7 @@ if ('onhashchange' in window) { <span id="L2304" class="LineNr">2304 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L2305" class="LineNr">2305 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2306" class="LineNr">2306 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L2307" class="Folded">2307 </span><span class="Folded">+-- 33 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2307" class="Folded">2307 </span><span class="Folded">+-- 33 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2340" class="LineNr">2340 </span><span class="Constant">$emit-modrm:loop</span>: <span id="L2341" class="LineNr">2341 </span> <span class="subxComment"># next-word(line, word-slice)</span> <span id="L2342" class="LineNr">2342 </span> <span class="subxS2Comment"># . . push args</span> @@ -2084,7 +2084,7 @@ if ('onhashchange' in window) { <span id="L2346" class="LineNr">2346 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L2347" class="LineNr">2347 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2348" class="LineNr">2348 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L2349" class="Folded">2349 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L2349" class="Folded">2349 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2389" class="LineNr">2389 </span><span class="Constant">$emit-modrm:check0</span>: <span id="L2390" class="LineNr">2390 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L2391" class="LineNr">2391 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> @@ -2320,7 +2320,7 @@ if ('onhashchange' in window) { <span id="L2621" class="LineNr">2621 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2622" class="LineNr">2622 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> <span id="L2623" class="LineNr">2623 </span><span class="Constant">$emit-sib:loop</span>: -<span id="L2624" class="Folded">2624 </span><span class="Folded">+-- 26 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2624" class="Folded">2624 </span><span class="Folded">+-- 26 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2650" class="LineNr">2650 </span> <span class="subxComment"># next-word(line, word-slice)</span> <span id="L2651" class="LineNr">2651 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2652" class="LineNr">2652 </span> 51/push-ecx @@ -2329,7 +2329,7 @@ if ('onhashchange' in window) { <span id="L2655" class="LineNr">2655 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L2656" class="LineNr">2656 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2657" class="LineNr">2657 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L2658" class="Folded">2658 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L2658" class="Folded">2658 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2698" class="LineNr">2698 </span><span class="Constant">$emit-sib:check0</span>: <span id="L2699" class="LineNr">2699 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L2700" class="LineNr">2700 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> @@ -2518,7 +2518,7 @@ if ('onhashchange' in window) { <span id="L2883" class="LineNr">2883 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L2884" class="LineNr">2884 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2885" class="LineNr">2885 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L2886" class="Folded">2886 </span><span class="Folded">+-- 26 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2886" class="Folded">2886 </span><span class="Folded">+-- 26 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2912" class="LineNr">2912 </span><span class="Constant">$emit-disp:loop</span>: <span id="L2913" class="LineNr">2913 </span> <span class="subxComment"># next-word(line, word-slice)</span> <span id="L2914" class="LineNr">2914 </span> <span class="subxS2Comment"># . . push args</span> @@ -2528,7 +2528,7 @@ if ('onhashchange' in window) { <span id="L2918" class="LineNr">2918 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L2919" class="LineNr">2919 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2920" class="LineNr">2920 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L2921" class="Folded">2921 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L2921" class="Folded">2921 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2961" class="LineNr">2961 </span><span class="Constant">$emit-disp:check0</span>: <span id="L2962" class="LineNr">2962 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L2963" class="LineNr">2963 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> @@ -2673,7 +2673,7 @@ if ('onhashchange' in window) { <span id="L3102" class="LineNr">3102 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L3103" class="LineNr">3103 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3104" class="LineNr">3104 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3105" class="Folded">3105 </span><span class="Folded">+-- 26 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3105" class="Folded">3105 </span><span class="Folded">+-- 26 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3131" class="LineNr">3131 </span><span class="Constant">$emit-imm:loop</span>: <span id="L3132" class="LineNr">3132 </span> <span class="subxComment"># next-word(line, word-slice)</span> <span id="L3133" class="LineNr">3133 </span> <span class="subxS2Comment"># . . push args</span> @@ -2683,7 +2683,7 @@ if ('onhashchange' in window) { <span id="L3137" class="LineNr">3137 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L3138" class="LineNr">3138 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3139" class="LineNr">3139 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L3140" class="Folded">3140 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L3140" class="Folded">3140 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3180" class="LineNr">3180 </span><span class="Constant">$emit-imm:check0</span>: <span id="L3181" class="LineNr">3181 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L3182" class="LineNr">3182 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> @@ -3002,7 +3002,7 @@ if ('onhashchange' in window) { <span id="L3495" class="LineNr">3495 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3496" class="LineNr">3496 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3497" class="LineNr">3497 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3498" class="Folded">3498 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3498" class="Folded">3498 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3524" class="LineNr">3524 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab # ab/cd # comment", msg)</span> <span id="L3525" class="LineNr">3525 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3526" class="LineNr">3526 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-single-opcode"</span>/imm32 @@ -3069,7 +3069,7 @@ if ('onhashchange' in window) { <span id="L3587" class="LineNr">3587 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3588" class="LineNr">3588 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3589" class="LineNr">3589 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3590" class="Folded">3590 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3590" class="Folded">3590 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3616" class="LineNr">3616 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "0f ab # 0f/m1 ab/m2 # comment", msg)</span> <span id="L3617" class="LineNr">3617 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3618" class="LineNr">3618 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-0f-opcode"</span>/imm32 @@ -3136,7 +3136,7 @@ if ('onhashchange' in window) { <span id="L3679" class="LineNr">3679 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3680" class="LineNr">3680 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3681" class="LineNr">3681 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3682" class="Folded">3682 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3682" class="Folded">3682 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3708" class="LineNr">3708 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "f2 ab # f2/m1 ab/m2 # comment", msg)</span> <span id="L3709" class="LineNr">3709 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3710" class="LineNr">3710 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-f2-opcode"</span>/imm32 @@ -3203,7 +3203,7 @@ if ('onhashchange' in window) { <span id="L3771" class="LineNr">3771 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3772" class="LineNr">3772 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3773" class="LineNr">3773 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3774" class="Folded">3774 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3774" class="Folded">3774 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3800" class="LineNr">3800 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "f3 ab # f3/m1 ab/m2 # comment", msg)</span> <span id="L3801" class="LineNr">3801 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3802" class="LineNr">3802 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-f3-opcode"</span>/imm32 @@ -3270,7 +3270,7 @@ if ('onhashchange' in window) { <span id="L3863" class="LineNr">3863 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3864" class="LineNr">3864 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3865" class="LineNr">3865 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3866" class="Folded">3866 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3866" class="Folded">3866 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3892" class="LineNr">3892 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "f2 0f ab # f2/m1 0f/m2 ab/m3 # comment", msg)</span> <span id="L3893" class="LineNr">3893 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3894" class="LineNr">3894 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-f2-0f-opcode"</span>/imm32 @@ -3337,7 +3337,7 @@ if ('onhashchange' in window) { <span id="L3955" class="LineNr">3955 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3956" class="LineNr">3956 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3957" class="LineNr">3957 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3958" class="Folded">3958 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3958" class="Folded">3958 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3984" class="LineNr">3984 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "f3 0f ab # f3/m1 0f/m2 ab/m3 # comment", msg)</span> <span id="L3985" class="LineNr">3985 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3986" class="LineNr">3986 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-f3-0f-opcode"</span>/imm32 @@ -3404,7 +3404,7 @@ if ('onhashchange' in window) { <span id="L4047" class="LineNr">4047 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4048" class="LineNr">4048 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4049" class="LineNr">4049 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4050" class="Folded">4050 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4050" class="Folded">4050 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4076" class="LineNr">4076 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab # f3/m1 0f/m2 ab/m3 # comment", msg)</span> <span id="L4077" class="LineNr">4077 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4078" class="LineNr">4078 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-unused-opcodes"</span>/imm32 @@ -3471,7 +3471,7 @@ if ('onhashchange' in window) { <span id="L4139" class="LineNr">4139 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4140" class="LineNr">4140 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4141" class="LineNr">4141 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4142" class="Folded">4142 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4142" class="Folded">4142 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4168" class="LineNr">4168 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "f2 ab # f2/m1 ab/m2 cd/m3 # comment", msg)</span> <span id="L4169" class="LineNr">4169 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4170" class="LineNr">4170 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-unused-second-opcodes"</span>/imm32 @@ -3538,7 +3538,7 @@ if ('onhashchange' in window) { <span id="L4231" class="LineNr">4231 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4232" class="LineNr">4232 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4233" class="LineNr">4233 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4234" class="Folded">4234 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4234" class="Folded">4234 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4260" class="LineNr">4260 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "f3 ab # f3/m1 ab/m2 cd/m3 # comment", msg)</span> <span id="L4261" class="LineNr">4261 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4262" class="LineNr">4262 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-unused-second-opcodes"</span>/imm32 @@ -3605,7 +3605,7 @@ if ('onhashchange' in window) { <span id="L4323" class="LineNr">4323 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4324" class="LineNr">4324 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4325" class="LineNr">4325 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4326" class="Folded">4326 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4326" class="Folded">4326 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4352" class="LineNr">4352 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 0/rm32 1/r32", msg)</span> <span id="L4353" class="LineNr">4353 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4354" class="LineNr">4354 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-modrm-byte"</span>/imm32 @@ -3670,7 +3670,7 @@ if ('onhashchange' in window) { <span id="L4413" class="LineNr">4413 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4414" class="LineNr">4414 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4415" class="LineNr">4415 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4416" class="Folded">4416 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4416" class="Folded">4416 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4442" class="LineNr">4442 </span> <span class="subxComment"># check output</span> <span id="L4443" class="LineNr">4443 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "# abcd", msg)</span> <span id="L4444" class="LineNr">4444 </span> <span class="subxS2Comment"># . . push args</span> @@ -3738,7 +3738,7 @@ if ('onhashchange' in window) { <span id="L4506" class="LineNr">4506 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4507" class="LineNr">4507 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4508" class="LineNr">4508 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4509" class="Folded">4509 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4509" class="Folded">4509 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4535" class="LineNr">4535 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ff 30 # ff 6/subop/push 0/mod 0/rm32", msg)</span> <span id="L4536" class="LineNr">4536 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4537" class="LineNr">4537 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-modrm-byte-from-subop"</span>/imm32 @@ -3805,7 +3805,7 @@ if ('onhashchange' in window) { <span id="L4598" class="LineNr">4598 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4599" class="LineNr">4599 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4600" class="LineNr">4600 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4601" class="Folded">4601 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4601" class="Folded">4601 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4627" class="LineNr">4627 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/rm32 1/r32", msg)</span> <span id="L4628" class="LineNr">4628 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4629" class="LineNr">4629 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-modrm-byte-with-missing-mod"</span>/imm32 @@ -3872,7 +3872,7 @@ if ('onhashchange' in window) { <span id="L4690" class="LineNr">4690 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4691" class="LineNr">4691 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4692" class="LineNr">4692 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4693" class="Folded">4693 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4693" class="Folded">4693 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4719" class="LineNr">4719 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 1/r32", msg)</span> <span id="L4720" class="LineNr">4720 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4721" class="LineNr">4721 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-modrm-byte-with-missing-rm32"</span>/imm32 @@ -3939,7 +3939,7 @@ if ('onhashchange' in window) { <span id="L4782" class="LineNr">4782 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4783" class="LineNr">4783 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4784" class="LineNr">4784 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4785" class="Folded">4785 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4785" class="Folded">4785 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4811" class="LineNr">4811 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 00 # 8b/copy 0/mod 0/rm32", msg)</span> <span id="L4812" class="LineNr">4812 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4813" class="LineNr">4813 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-modrm-byte-with-missing-r32"</span>/imm32 @@ -4006,7 +4006,7 @@ if ('onhashchange' in window) { <span id="L4874" class="LineNr">4874 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4875" class="LineNr">4875 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4876" class="LineNr">4876 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4877" class="Folded">4877 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4877" class="Folded">4877 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4903" class="LineNr">4903 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index 0/scale", msg)</span> <span id="L4904" class="LineNr">4904 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4905" class="LineNr">4905 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-sib-byte"</span>/imm32 @@ -4073,7 +4073,7 @@ if ('onhashchange' in window) { <span id="L4966" class="LineNr">4966 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L4967" class="LineNr">4967 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4968" class="LineNr">4968 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L4969" class="Folded">4969 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4969" class="Folded">4969 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4995" class="LineNr">4995 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 1/index 0/scale", msg)</span> <span id="L4996" class="LineNr">4996 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4997" class="LineNr">4997 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-sib-byte-with-missing-base"</span>/imm32 @@ -4140,7 +4140,7 @@ if ('onhashchange' in window) { <span id="L5058" class="LineNr">5058 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5059" class="LineNr">5059 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5060" class="LineNr">5060 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5061" class="Folded">5061 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5061" class="Folded">5061 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5087" class="LineNr">5087 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 0/scale", msg)</span> <span id="L5088" class="LineNr">5088 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5089" class="LineNr">5089 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-sib-byte-with-missing-index"</span>/imm32 @@ -4207,7 +4207,7 @@ if ('onhashchange' in window) { <span id="L5150" class="LineNr">5150 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5151" class="LineNr">5151 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5152" class="LineNr">5152 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5153" class="Folded">5153 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5153" class="Folded">5153 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5179" class="LineNr">5179 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index", msg)</span> <span id="L5180" class="LineNr">5180 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5181" class="LineNr">5181 </span> 68/push <span class="Constant">"F - test-convert-instruction-emits-sib-byte-with-missing-scale"</span>/imm32 @@ -4274,7 +4274,7 @@ if ('onhashchange' in window) { <span id="L5242" class="LineNr">5242 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5243" class="LineNr">5243 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5244" class="LineNr">5244 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5245" class="Folded">5245 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5245" class="Folded">5245 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5271" class="LineNr">5271 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "e8 20 00 00 00 # e8/call 20/disp32", msg)</span> <span id="L5272" class="LineNr">5272 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5273" class="LineNr">5273 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-disp32-operand"</span>/imm32 @@ -4341,7 +4341,7 @@ if ('onhashchange' in window) { <span id="L5334" class="LineNr">5334 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5335" class="LineNr">5335 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5336" class="LineNr">5336 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5337" class="Folded">5337 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5337" class="Folded">5337 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5363" class="LineNr">5363 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "e8 20 00 # e8/call 20/disp16", msg)</span> <span id="L5364" class="LineNr">5364 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5365" class="LineNr">5365 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-disp16-operand"</span>/imm32 @@ -4408,7 +4408,7 @@ if ('onhashchange' in window) { <span id="L5426" class="LineNr">5426 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5427" class="LineNr">5427 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5428" class="LineNr">5428 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5429" class="Folded">5429 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5429" class="Folded">5429 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5455" class="LineNr">5455 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "eb 20 # eb/jump 20/disp8", msg)</span> <span id="L5456" class="LineNr">5456 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5457" class="LineNr">5457 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-disp8-operand"</span>/imm32 @@ -4475,7 +4475,7 @@ if ('onhashchange' in window) { <span id="L5518" class="LineNr">5518 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5519" class="LineNr">5519 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5520" class="LineNr">5520 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5521" class="Folded">5521 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5521" class="Folded">5521 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5547" class="LineNr">5547 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "eb xyz/disp8 # eb/jump xyz/disp8", msg)</span> <span id="L5548" class="LineNr">5548 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5549" class="LineNr">5549 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-disp8-name"</span>/imm32 @@ -4542,7 +4542,7 @@ if ('onhashchange' in window) { <span id="L5610" class="LineNr">5610 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5611" class="LineNr">5611 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5612" class="LineNr">5612 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5613" class="Folded">5613 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5613" class="Folded">5613 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5639" class="LineNr">5639 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "68 20 00 00 00 # 68/push 0x20/imm32", msg)</span> <span id="L5640" class="LineNr">5640 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5641" class="LineNr">5641 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-imm32-operand"</span>/imm32 @@ -4610,7 +4610,7 @@ if ('onhashchange' in window) { <span id="L5703" class="LineNr">5703 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5704" class="LineNr">5704 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5705" class="LineNr">5705 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5706" class="Folded">5706 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5706" class="Folded">5706 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5732" class="LineNr">5732 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "68 20 00 # 68/push 0x20/imm16", msg)</span> <span id="L5733" class="LineNr">5733 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5734" class="LineNr">5734 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-imm16-operand"</span>/imm32 @@ -4678,7 +4678,7 @@ if ('onhashchange' in window) { <span id="L5796" class="LineNr">5796 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L5797" class="LineNr">5797 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L5798" class="LineNr">5798 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L5799" class="Folded">5799 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L5799" class="Folded">5799 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L5825" class="LineNr">5825 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "68 20 # 68/push 0x20/imm8", msg)</span> <span id="L5826" class="LineNr">5826 </span> <span class="subxS2Comment"># . . push args</span> <span id="L5827" class="LineNr">5827 </span> 68/push <span class="Constant">"F - test-convert-instruction-handles-imm8-operand"</span>/imm32 diff --git a/html/apps/sigils.subx.html b/html/apps/sigils.subx.html index 865a9db3..6bec4179 100644 --- a/html/apps/sigils.subx.html +++ b/html/apps/sigils.subx.html @@ -269,7 +269,7 @@ if ('onhashchange' in window) { <span id="L207" class="LineNr"> 207 </span> 3d/compare-eax-and 0x25/imm32/percent <span id="L208" class="LineNr"> 208 </span> 75/jump-if-!= $subx-sigils:check-for-indirect-mode/disp8 <span id="L209" class="LineNr"> 209 </span><span class="Constant">$subx-sigils:direct-mode</span>: -<span id="L210" class="Folded"> 210 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L210" class="Folded"> 210 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L250" class="LineNr"> 250 </span> <span class="subxComment"># emit-direct-mode(out, word-slice)</span> <span id="L251" class="LineNr"> 251 </span> <span class="subxS2Comment"># . . push args</span> <span id="L252" class="LineNr"> 252 </span> 52/push-edx @@ -511,7 +511,7 @@ if ('onhashchange' in window) { <span id="L488" class="LineNr"> 488 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L489" class="LineNr"> 489 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L490" class="LineNr"> 490 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L491" class="Folded"> 491 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L491" class="Folded"> 491 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L517" class="LineNr"> 517 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "== abcd 0x1 \n", msg)</span> <span id="L518" class="LineNr"> 518 </span> <span class="subxS2Comment"># . . push args</span> <span id="L519" class="LineNr"> 519 </span> 68/push <span class="Constant">"F - test-subx-sigils-passes-most-words-through"</span>/imm32 @@ -584,7 +584,7 @@ if ('onhashchange' in window) { <span id="L586" class="LineNr"> 586 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L587" class="LineNr"> 587 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L588" class="LineNr"> 588 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L589" class="Folded"> 589 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L589" class="Folded"> 589 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L615" class="LineNr"> 615 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab 3/mod/direct 0x00000001/rm32 \n", msg)</span> <span id="L616" class="LineNr"> 616 </span> <span class="subxS2Comment"># . . push args</span> <span id="L617" class="LineNr"> 617 </span> 68/push <span class="Constant">"F - test-subx-sigils-direct-mode"</span>/imm32 @@ -729,7 +729,7 @@ if ('onhashchange' in window) { <span id="L756" class="LineNr"> 756 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L757" class="LineNr"> 757 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L758" class="LineNr"> 758 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L759" class="Folded"> 759 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L759" class="Folded"> 759 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L785" class="LineNr"> 785 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab 0/mod/indirect 0x00000001/rm32 \n", msg)</span> <span id="L786" class="LineNr"> 786 </span> <span class="subxS2Comment"># . . push args</span> <span id="L787" class="LineNr"> 787 </span> 68/push <span class="Constant">"F - test-subx-sigils-register-indirect-mode"</span>/imm32 @@ -874,7 +874,7 @@ if ('onhashchange' in window) { <span id="L926" class="LineNr"> 926 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L927" class="LineNr"> 927 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L928" class="LineNr"> 928 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L929" class="Folded"> 929 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L929" class="Folded"> 929 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L955" class="LineNr"> 955 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab 0/mod/indirect 1/rm32 \n", msg)</span> <span id="L956" class="LineNr"> 956 </span> <span class="subxS2Comment"># . . push args</span> <span id="L957" class="LineNr"> 957 </span> 68/push <span class="Constant">"F - test-subx-sigils-register-indirect-mode-without-displacement"</span>/imm32 @@ -947,7 +947,7 @@ if ('onhashchange' in window) { <span id="L1024" class="LineNr">1024 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1025" class="LineNr">1025 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1026" class="LineNr">1026 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1027" class="Folded">1027 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L1027" class="Folded">1027 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1053" class="LineNr">1053 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab 2/mod/*+disp32 1/rm32 4/disp32 \n", msg)</span> <span id="L1054" class="LineNr">1054 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1055" class="LineNr">1055 </span> 68/push <span class="Constant">"F - test-subx-sigils-register-indirect-mode-with-displacement"</span>/imm32 @@ -1021,7 +1021,7 @@ if ('onhashchange' in window) { <span id="L1123" class="LineNr">1123 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1124" class="LineNr">1124 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1125" class="LineNr">1125 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1126" class="Folded">1126 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L1126" class="Folded">1126 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1152" class="LineNr">1152 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab 2/mod/*+disp32 4/rm32/sib 1/base 2/index 3/scale 4/disp32 \n", msg)</span> <span id="L1153" class="LineNr">1153 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1154" class="LineNr">1154 </span> 68/push <span class="Constant">"F - test-subx-sigils-register-indirect-mode-with-sib-byte"</span>/imm32 @@ -1094,7 +1094,7 @@ if ('onhashchange' in window) { <span id="L1221" class="LineNr">1221 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1222" class="LineNr">1222 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1223" class="LineNr">1223 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1224" class="Folded">1224 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L1224" class="Folded">1224 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1250" class="LineNr">1250 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab 2/mod/*+disp32 4/rm32/sib 1/base 2/index 3/scale -4/disp32 \n", msg)</span> <span id="L1251" class="LineNr">1251 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1252" class="LineNr">1252 </span> 68/push <span class="Constant">"F - test-subx-sigils-register-indirect-mode-with-sib-byte-negative-displacement"</span>/imm32 @@ -1167,7 +1167,7 @@ if ('onhashchange' in window) { <span id="L1319" class="LineNr">1319 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1320" class="LineNr">1320 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1321" class="LineNr">1321 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1322" class="Folded">1322 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream --------------------------------------------------------------------------------------------------------------</span> +<span id="L1322" class="Folded">1322 </span><span class="Folded">+-- 26 lines: #? # dump _test-output-stream -----------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1348" class="LineNr">1348 </span> <span class="subxS1Comment"># . check-stream-equal(_test-output-stream, "ab 0/mod/indirect 5/rm32/.disp32 Foo/disp32 \n", msg)</span> <span id="L1349" class="LineNr">1349 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1350" class="LineNr">1350 </span> 68/push <span class="Constant">"F - test-subx-sigils-indirect-mode-without-register"</span>/imm32 @@ -1293,7 +1293,7 @@ if ('onhashchange' in window) { <span id="L1470" class="LineNr">1470 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1471" class="LineNr">1471 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1472" class="LineNr">1472 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1473" class="Folded">1473 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1473" class="Folded">1473 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1499" class="LineNr">1499 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "3/mod/direct 0/rm32", msg)</span> <span id="L1500" class="LineNr">1500 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1501" class="LineNr">1501 </span> 68/push <span class="Constant">"F - <a href='sigils.subx.html#L1430'>test-emit-direct-mode</a>/0"</span>/imm32 @@ -1351,7 +1351,7 @@ if ('onhashchange' in window) { <span id="L1553" class="LineNr">1553 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L1554" class="LineNr">1554 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1555" class="LineNr">1555 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L1556" class="Folded">1556 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1556" class="Folded">1556 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1582" class="LineNr">1582 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "3/mod/direct 7/rm32", msg)</span> <span id="L1583" class="LineNr">1583 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1584" class="LineNr">1584 </span> 68/push <span class="Constant">"F - <a href='sigils.subx.html#L1430'>test-emit-direct-mode</a>/1"</span>/imm32 @@ -3129,7 +3129,7 @@ if ('onhashchange' in window) { <span id="L3356" class="LineNr">3356 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3357" class="LineNr">3357 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3358" class="LineNr">3358 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3359" class="Folded">3359 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3359" class="Folded">3359 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3385" class="LineNr">3385 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "0/mod/indirect 0/rm32", msg)</span> <span id="L3386" class="LineNr">3386 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3387" class="LineNr">3387 </span> 68/push <span class="Constant">"F - test-emit-indirect-mode"</span>/imm32 @@ -3181,7 +3181,7 @@ if ('onhashchange' in window) { <span id="L3433" class="LineNr">3433 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3434" class="LineNr">3434 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3435" class="LineNr">3435 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3436" class="Folded">3436 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3436" class="Folded">3436 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3462" class="LineNr">3462 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "0/mod/indirect 7/rm32", msg)</span> <span id="L3463" class="LineNr">3463 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3464" class="LineNr">3464 </span> 68/push <span class="Constant">"F - test-emit-indirect-mode-2"</span>/imm32 @@ -3233,7 +3233,7 @@ if ('onhashchange' in window) { <span id="L3510" class="LineNr">3510 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3511" class="LineNr">3511 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3512" class="LineNr">3512 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3513" class="Folded">3513 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3513" class="Folded">3513 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3539" class="LineNr">3539 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "2/mod/*+disp32 6/rm32 4/disp32", msg)</span> <span id="L3540" class="LineNr">3540 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3541" class="LineNr">3541 </span> 68/push <span class="Constant">"F - test-emit-indirect-mode-with-disp"</span>/imm32 @@ -3285,7 +3285,7 @@ if ('onhashchange' in window) { <span id="L3587" class="LineNr">3587 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3588" class="LineNr">3588 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3589" class="LineNr">3589 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3590" class="Folded">3590 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3590" class="Folded">3590 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3616" class="LineNr">3616 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "2/mod/*+disp32 6/rm32 -4/disp32", msg)</span> <span id="L3617" class="LineNr">3617 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3618" class="LineNr">3618 </span> 68/push <span class="Constant">"F - test-emit-indirect-mode-with-disp"</span>/imm32 @@ -3337,7 +3337,7 @@ if ('onhashchange' in window) { <span id="L3664" class="LineNr">3664 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3665" class="LineNr">3665 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3666" class="LineNr">3666 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3667" class="Folded">3667 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3667" class="Folded">3667 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3693" class="LineNr">3693 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "2/mod/indirect 4/rm32/sib 6/base 1/index 2/scale 4/disp", msg)</span> <span id="L3694" class="LineNr">3694 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3695" class="LineNr">3695 </span> 68/push <span class="Constant">"F - test-emit-indirect-mode-with-sib"</span>/imm32 @@ -3389,7 +3389,7 @@ if ('onhashchange' in window) { <span id="L3741" class="LineNr">3741 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3742" class="LineNr">3742 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3743" class="LineNr">3743 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3744" class="Folded">3744 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3744" class="Folded">3744 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3770" class="LineNr">3770 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "2/mod/*+disp32 4/rm32/sib 5/base/ebp 0/index 0/scale 0/disp32", msg)</span> <span id="L3771" class="LineNr">3771 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3772" class="LineNr">3772 </span> 68/push <span class="Constant">"F - test-emit-indirect-mode-ebp"</span>/imm32 @@ -3441,7 +3441,7 @@ if ('onhashchange' in window) { <span id="L3818" class="LineNr">3818 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3819" class="LineNr">3819 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3820" class="LineNr">3820 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3821" class="Folded">3821 </span><span class="Folded">+-- 26 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3821" class="Folded">3821 </span><span class="Folded">+-- 26 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3847" class="LineNr">3847 </span> <span class="subxComment"># check-stream-equal(_test-output-stream, "2/mod/*+disp32 4/rm32/sib 4/base/ebp 0/index 0/scale 0/disp32", msg)</span> <span id="L3848" class="LineNr">3848 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3849" class="LineNr">3849 </span> 68/push <span class="Constant">"F - test-emit-indirect-mode-esp"</span>/imm32 diff --git a/html/apps/survey.subx.html b/html/apps/survey.subx.html index dc442e1f..24b9d9d9 100644 --- a/html/apps/survey.subx.html +++ b/html/apps/survey.subx.html @@ -220,8 +220,8 @@ if ('onhashchange' in window) { <span id="L157" class="LineNr"> 157 </span> <span class="subxS1Comment"># . write</span> <span id="L158" class="LineNr"> 158 </span> 68/push 0/imm32/write <span id="L159" class="LineNr"> 159 </span> 89/copy 3/mod/direct 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to esi</span> -<span id="L160" class="Folded"> 160 </span><span class="Folded">+-- 41 lines: #? # dump labels->write --------------------------------------------------------------------------------------------------------------------</span> -<span id="L201" class="Folded"> 201 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "slurp in\n") ---------------------------------------------------------------------------------------------------------</span> +<span id="L160" class="Folded"> 160 </span><span class="Folded">+-- 41 lines: #? # dump labels->write -----------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L201" class="Folded"> 201 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "slurp in\n") ------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L210" class="LineNr"> 210 </span> <span class="subxComment"># slurp(infile, in)</span> <span id="L211" class="LineNr"> 211 </span> <span class="subxS2Comment"># . . push args</span> <span id="L212" class="LineNr"> 212 </span> 56/push-esi @@ -230,9 +230,9 @@ if ('onhashchange' in window) { <span id="L215" class="LineNr"> 215 </span> e8/call <a href='../082slurp.subx.html#L8'>slurp</a>/disp32 <span id="L216" class="LineNr"> 216 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L217" class="LineNr"> 217 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L218" class="Folded"> 218 </span><span class="Folded">+-- 40 lines: #? # dump labels->write --------------------------------------------------------------------------------------------------------------------</span> -<span id="L258" class="Folded"> 258 </span><span class="Folded">+-- 33 lines: #? # dump in -------------------------------------------------------------------------------------------------------------------------------</span> -<span id="L291" class="Folded"> 291 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-offsets\n") --------------------------------------------------------------------------------------------------</span> +<span id="L218" class="Folded"> 218 </span><span class="Folded">+-- 40 lines: #? # dump labels->write -----------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L258" class="Folded"> 258 </span><span class="Folded">+-- 33 lines: #? # dump in ----------------------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L291" class="Folded"> 291 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-offsets\n") -----------------------------------------------------------------------------------------------------------------------------</span> <span id="L300" class="LineNr"> 300 </span> <span class="subxComment"># compute-offsets(in, segments, labels)</span> <span id="L301" class="LineNr"> 301 </span> <span class="subxS2Comment"># . . push args</span> <span id="L302" class="LineNr"> 302 </span> 52/push-edx @@ -242,7 +242,7 @@ if ('onhashchange' in window) { <span id="L306" class="LineNr"> 306 </span> e8/call <a href='survey.subx.html#L621'>compute-offsets</a>/disp32 <span id="L307" class="LineNr"> 307 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L308" class="LineNr"> 308 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0xc/imm32 <span class="subxComment"># add to esp</span> -<span id="L309" class="Folded"> 309 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-addresses\n") ------------------------------------------------------------------------------------------------</span> +<span id="L309" class="Folded"> 309 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-addresses\n") ---------------------------------------------------------------------------------------------------------------------------</span> <span id="L318" class="LineNr"> 318 </span> <span class="subxComment"># compute-addresses(segments, labels)</span> <span id="L319" class="LineNr"> 319 </span> <span class="subxS2Comment"># . . push args</span> <span id="L320" class="LineNr"> 320 </span> 52/push-edx @@ -258,9 +258,9 @@ if ('onhashchange' in window) { <span id="L330" class="LineNr"> 330 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L331" class="LineNr"> 331 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L332" class="LineNr"> 332 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L333" class="Folded"> 333 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-output\n") ------------------------------------------------------------------------------------------------------</span> -<span id="L342" class="Folded"> 342 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> -<span id="L368" class="Folded"> 368 </span><span class="Folded">+-- 40 lines: #? # dump labels->write --------------------------------------------------------------------------------------------------------------------</span> +<span id="L333" class="Folded"> 333 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-output\n") ---------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L342" class="Folded"> 342 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L368" class="Folded"> 368 </span><span class="Folded">+-- 40 lines: #? # dump labels->write -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L408" class="LineNr"> 408 </span> <span class="subxComment"># emit-output(in, out, segments, labels)</span> <span id="L409" class="LineNr"> 409 </span> <span class="subxS2Comment"># . . push args</span> <span id="L410" class="LineNr"> 410 </span> 52/push-edx @@ -395,7 +395,7 @@ if ('onhashchange' in window) { <span id="L539" class="LineNr"> 539 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L540" class="LineNr"> 540 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L541" class="LineNr"> 541 </span> <span class="subxComment"># check trace</span> -<span id="L542" class="Folded"> 542 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L542" class="Folded"> 542 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L568" class="LineNr"> 568 </span> <span class="subxS1Comment"># . check-trace-contains("label 'x' is at address 0x00001079.", msg)</span> <span id="L569" class="LineNr"> 569 </span> <span class="subxS2Comment"># . . push args</span> <span id="L570" class="LineNr"> 570 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L437'>test-subx-survey-computes-addresses</a>/0"</span>/imm32 @@ -541,7 +541,7 @@ if ('onhashchange' in window) { <span id="L710" class="LineNr"> 710 </span> 8b/copy 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy *ecx to eax</span> <span id="L711" class="LineNr"> 711 </span> 3d/compare-eax-and 0/imm32 <span id="L712" class="LineNr"> 712 </span> 0f 84/jump-if-= $compute-offsets:break-line-loop/disp32 -<span id="L713" class="Folded"> 713 </span><span class="Folded">+-- 33 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L713" class="Folded"> 713 </span><span class="Folded">+-- 33 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L746" class="LineNr"> 746 </span><span class="Constant">$compute-offsets:word-loop</span>: <span id="L747" class="LineNr"> 747 </span> <span class="subxComment"># edx = word-slice</span> <span id="L748" class="LineNr"> 748 </span> ba/copy-to-edx <a href='survey.subx.html#L621'>compute-offsets</a>:word-slice/imm32 @@ -551,7 +551,7 @@ if ('onhashchange' in window) { <span id="L752" class="LineNr"> 752 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L753" class="LineNr"> 753 </span> <span class="subxS1Comment"># . discard args</span> <span id="L754" class="LineNr"> 754 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L755" class="Folded"> 755 </span><span class="Folded">+-- 74 lines: #? # dump word-slice and maybe curr-segment-name -------------------------------------------------------------------------------------------</span> +<span id="L755" class="Folded"> 755 </span><span class="Folded">+-- 74 lines: #? # dump word-slice and maybe curr-segment-name ----------------------------------------------------------------------------------------------------------------------</span> <span id="L829" class="LineNr"> 829 </span><span class="Constant">$compute-offsets:case-empty</span>: <span id="L830" class="LineNr"> 830 </span> <span class="subxComment"># if slice-empty?(word/edx) break</span> <span id="L831" class="LineNr"> 831 </span> <span class="subxS1Comment"># . eax = slice-empty?(word/edx)</span> @@ -626,7 +626,7 @@ if ('onhashchange' in window) { <span id="L900" class="LineNr"> 900 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L901" class="LineNr"> 901 </span> <span class="subxS1Comment"># . discard args</span> <span id="L902" class="LineNr"> 902 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L903" class="Folded"> 903 </span><span class="Folded">+-- 45 lines: #? # dump curr-segment-name if not null (clobbering eax) -----------------------------------------------------------------------------------</span> +<span id="L903" class="Folded"> 903 </span><span class="Folded">+-- 45 lines: #? # dump curr-segment-name if not null (clobbering eax) --------------------------------------------------------------------------------------------------------------</span> <span id="L948" class="LineNr"> 948 </span><span class="Constant">$compute-offsets:update-curr-segment-name</span>: <span id="L949" class="LineNr"> 949 </span> <span class="subxComment"># curr-segment-name = slice-to-string(segment-tmp)</span> <span id="L950" class="LineNr"> 950 </span> <span class="subxS1Comment"># . eax = slice-to-string(Heap, segment-tmp)</span> @@ -766,7 +766,7 @@ if ('onhashchange' in window) { <span id="L1084" class="LineNr">1084 </span> 01/add 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <a href='survey.subx.html#L621'>compute-offsets</a>:segment-offset/disp32 <span class="subxComment"># add eax to *segment-offset</span> <span id="L1085" class="LineNr">1085 </span> <span class="subxComment"># file-offset += width</span> <span id="L1086" class="LineNr">1086 </span> 01/add 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <a href='survey.subx.html#L621'>compute-offsets</a>:file-offset/disp32 <span class="subxComment"># add eax to *file-offset</span> -<span id="L1087" class="Folded">1087 </span><span class="Folded">+-- 41 lines: #? # dump segment-offset -------------------------------------------------------------------------------------------------------------------</span> +<span id="L1087" class="Folded">1087 </span><span class="Folded">+-- 41 lines: #? # dump segment-offset ----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1128" class="LineNr">1128 </span> e9/jump $compute-offsets:word-loop/disp32 <span id="L1129" class="LineNr">1129 </span><span class="Constant">$compute-offsets:break-line-loop</span>: <span id="L1130" class="LineNr">1130 </span> <span class="subxComment"># seg/eax = get-or-insert(segments, curr-segment-name, row-size=16)</span> @@ -931,7 +931,7 @@ if ('onhashchange' in window) { <span id="L1289" class="LineNr">1289 </span> e8/call <a href='survey.subx.html#L621'>compute-offsets</a>/disp32 <span id="L1290" class="LineNr">1290 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1291" class="LineNr">1291 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0xc/imm32 <span class="subxComment"># add to esp</span> -<span id="L1292" class="Folded">1292 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L1292" class="Folded">1292 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1318" class="LineNr">1318 </span> <span class="subxComment"># check trace</span> <span id="L1319" class="LineNr">1319 </span> <span class="subxS1Comment"># . check-trace-contains("segment 'code' is at file offset 0x00000000.", msg)</span> <span id="L1320" class="LineNr">1320 </span> <span class="subxS2Comment"># . . push args</span> @@ -1076,7 +1076,7 @@ if ('onhashchange' in window) { <span id="L1459" class="LineNr">1459 </span> 05/add-to-eax 0x10/imm32 <span id="L1460" class="LineNr">1460 </span> eb/jump $compute-addresses:segment-loop/disp8 <span id="L1461" class="LineNr">1461 </span><span class="Constant">$compute-addresses:segment-break</span>: -<span id="L1462" class="Folded">1462 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L1462" class="Folded">1462 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1488" class="LineNr">1488 </span> <span class="subxComment"># esi = labels</span> <span id="L1489" class="LineNr">1489 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 6/r32/esi 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+12) to esi</span> <span id="L1490" class="LineNr">1490 </span> <span class="subxComment"># lrow/eax = labels->data</span> @@ -1088,10 +1088,10 @@ if ('onhashchange' in window) { <span id="L1496" class="LineNr">1496 </span> <span class="subxComment"># if (lrow >= max) break</span> <span id="L1497" class="LineNr">1497 </span> 39/compare 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># compare eax with ecx</span> <span id="L1498" class="LineNr">1498 </span> 0f 83/jump-if-addr>= $compute-addresses:end/disp32 -<span id="L1499" class="Folded">1499 </span><span class="Folded">+-- 26 lines: #? # dump lrow->key ------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1499" class="Folded">1499 </span><span class="Folded">+-- 26 lines: #? # dump lrow->key ---------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1525" class="LineNr">1525 </span> <span class="subxComment"># var seg-name/edx: (addr array byte) = lrow->segment-name</span> <span id="L1526" class="LineNr">1526 </span> 8b/copy 1/mod/*+disp8 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *eax to edx</span> -<span id="L1527" class="Folded">1527 </span><span class="Folded">+-- 26 lines: #? # dump seg-name -------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1527" class="Folded">1527 </span><span class="Folded">+-- 26 lines: #? # dump seg-name ----------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1553" class="LineNr">1553 </span> <span class="subxComment"># var label-seg/edx: (addr segment-info) = get(segments, seg-name, row-size=16, "segment table")</span> <span id="L1554" class="LineNr">1554 </span> <span class="subxS1Comment"># . save eax</span> <span id="L1555" class="LineNr">1555 </span> 50/push-eax @@ -1235,7 +1235,7 @@ if ('onhashchange' in window) { <span id="L1693" class="LineNr">1693 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1694" class="LineNr">1694 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L1695" class="LineNr">1695 </span> <span class="subxComment"># checks</span> -<span id="L1696" class="Folded">1696 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L1696" class="Folded">1696 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1722" class="LineNr">1722 </span> <span class="subxS1Comment"># . check-trace-contains("segment 'a' starts at address 0x00001094.", msg)</span> <span id="L1723" class="LineNr">1723 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1724" class="LineNr">1724 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L1603'>test-compute-addresses</a>/0"</span>/imm32 @@ -1396,7 +1396,7 @@ if ('onhashchange' in window) { <span id="L1879" class="LineNr">1879 </span> <span class="subxS1Comment"># . prologue</span> <span id="L1880" class="LineNr">1880 </span> 55/push-ebp <span id="L1881" class="LineNr">1881 </span> 89/copy 3/mod/direct 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to ebp</span> -<span id="L1882" class="Folded">1882 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-headers\n") -----------------------------------------------------------------------------------------------------</span> +<span id="L1882" class="Folded">1882 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-headers\n") --------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1891" class="LineNr">1891 </span> <span class="subxComment"># emit-headers(out, segments, labels)</span> <span id="L1892" class="LineNr">1892 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1893" class="LineNr">1893 </span> ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+20)</span> @@ -1406,7 +1406,7 @@ if ('onhashchange' in window) { <span id="L1897" class="LineNr">1897 </span> e8/call <a href='survey.subx.html#L3176'>emit-headers</a>/disp32 <span id="L1898" class="LineNr">1898 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1899" class="LineNr">1899 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0xc/imm32 <span class="subxComment"># add to esp</span> -<span id="L1900" class="Folded">1900 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segments\n") ----------------------------------------------------------------------------------------------------</span> +<span id="L1900" class="Folded">1900 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segments\n") -------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1909" class="LineNr">1909 </span> <span class="subxComment"># emit-segments(in, out, segments, labels)</span> <span id="L1910" class="LineNr">1910 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1911" class="LineNr">1911 </span> ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+20)</span> @@ -1520,7 +1520,7 @@ if ('onhashchange' in window) { <span id="L2019" class="LineNr">2019 </span> e8/call <a href='../071read-line.subx.html#L219'>read-line</a>/disp32 <span id="L2020" class="LineNr">2020 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2021" class="LineNr">2021 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L2022" class="Folded">2022 </span><span class="Folded">+-- 33 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2022" class="Folded">2022 </span><span class="Folded">+-- 33 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2055" class="LineNr">2055 </span><span class="Constant">$emit-segments:check-for-end-of-input</span>: <span id="L2056" class="LineNr">2056 </span> <span class="subxComment"># if (line->write == 0) break</span> <span id="L2057" class="LineNr">2057 </span> 81 7/subop/compare 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32 <span class="subxComment"># compare *ecx</span> @@ -1544,7 +1544,7 @@ if ('onhashchange' in window) { <span id="L2075" class="LineNr">2075 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L2076" class="LineNr">2076 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2077" class="LineNr">2077 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L2078" class="Folded">2078 </span><span class="Folded">+-- 33 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L2078" class="Folded">2078 </span><span class="Folded">+-- 33 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2111" class="LineNr">2111 </span><span class="Constant">$emit-segments:check-for-end-of-line</span>: <span id="L2112" class="LineNr">2112 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L2113" class="LineNr">2113 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> @@ -1555,7 +1555,7 @@ if ('onhashchange' in window) { <span id="L2118" class="LineNr">2118 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2119" class="LineNr">2119 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> <span id="L2120" class="LineNr">2120 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> -<span id="L2121" class="LineNr">2121 </span> 3d/compare-eax-and 0/imm32 +<span id="L2121" class="LineNr">2121 </span> 3d/compare-eax-and 0/imm32/false <span id="L2122" class="LineNr">2122 </span> 0f 85/jump-if-!= $emit-segments:next-line/disp32 <span id="L2123" class="LineNr">2123 </span><span class="Constant">$emit-segments:check-for-comment</span>: <span id="L2124" class="LineNr">2124 </span> <span class="subxComment"># if (slice-starts-with?(word-slice, "#")) break</span> @@ -1630,7 +1630,7 @@ if ('onhashchange' in window) { <span id="L2193" class="LineNr">2193 </span> e8/call <a href='../073next-token.subx.html#L163'>next-token-from-slice</a>/disp32 <span id="L2194" class="LineNr">2194 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2195" class="LineNr">2195 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x10/imm32 <span class="subxComment"># add to esp</span> -<span id="L2196" class="Folded">2196 </span><span class="Folded">+-- 33 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L2196" class="Folded">2196 </span><span class="Folded">+-- 33 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2229" class="LineNr">2229 </span> <span class="subxComment"># info/esi = get-slice(labels, datum, row-size=16, "label table")</span> <span id="L2230" class="LineNr">2230 </span> <span class="subxS1Comment"># . eax = get-slice(labels, datum, row-size=16, "label table")</span> <span id="L2231" class="LineNr">2231 </span> <span class="subxS2Comment"># . . push args</span> @@ -1645,7 +1645,7 @@ if ('onhashchange' in window) { <span id="L2240" class="LineNr">2240 </span> <span class="subxS1Comment"># . esi = eax</span> <span id="L2241" class="LineNr">2241 </span> 89/copy 3/mod/direct 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy eax to esi</span> <span id="L2242" class="LineNr">2242 </span><span class="Constant">$emit-segments:check-global-variable</span>: -<span id="L2243" class="Folded">2243 </span><span class="Folded">+-- 26 lines: #? # dump info->segment-name ---------------------------------------------------------------------------------------------------------------</span> +<span id="L2243" class="Folded">2243 </span><span class="Folded">+-- 26 lines: #? # dump info->segment-name ------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2269" class="LineNr">2269 </span> <span class="subxComment"># if string-equal?(info->segment-name, "code") goto code label checks</span> <span id="L2270" class="LineNr">2270 </span> <span class="subxS1Comment"># . eax = string-equal?(info->segment-name, "code")</span> <span id="L2271" class="LineNr">2271 </span> <span class="subxS2Comment"># . . push args</span> @@ -1720,9 +1720,9 @@ if ('onhashchange' in window) { <span id="L2340" class="LineNr">2340 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2341" class="LineNr">2341 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> <span id="L2342" class="LineNr">2342 </span> <span class="subxS1Comment"># . if (eax == false) goto next check</span> -<span id="L2343" class="LineNr">2343 </span> 3d/compare-eax-and 0/imm32 +<span id="L2343" class="LineNr">2343 </span> 3d/compare-eax-and 0/imm32/false <span id="L2344" class="LineNr">2344 </span> 74/jump-if-= $emit-segments:check-code-label-for-disp8/disp8 -<span id="L2345" class="Folded">2345 </span><span class="Folded">+-- 33 lines: #? # dump info->address --------------------------------------------------------------------------------------------------------------------</span> +<span id="L2345" class="Folded">2345 </span><span class="Folded">+-- 33 lines: #? # dump info->address -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2378" class="LineNr">2378 </span><span class="Constant">$emit-segments:emit-code-label-imm32</span>: <span id="L2379" class="LineNr">2379 </span> <span class="subxComment"># emit-hex(out, info->address, 4)</span> <span id="L2380" class="LineNr">2380 </span> <span class="subxS2Comment"># . . push args</span> @@ -2043,7 +2043,7 @@ if ('onhashchange' in window) { <span id="L2695" class="LineNr">2695 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L2696" class="LineNr">2696 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2697" class="LineNr">2697 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L2698" class="Folded">2698 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2698" class="Folded">2698 </span><span class="Folded">+-- 33 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2731" class="LineNr">2731 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ab cd ef gh ", msg)</span> <span id="L2732" class="LineNr">2732 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2733" class="LineNr">2733 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L2531'>test-emit-segments-global-variable</a>/0"</span>/imm32 @@ -2222,7 +2222,7 @@ if ('onhashchange' in window) { <span id="L2906" class="LineNr">2906 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L2907" class="LineNr">2907 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2908" class="LineNr">2908 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L2909" class="Folded">2909 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2909" class="Folded">2909 </span><span class="Folded">+-- 33 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2942" class="LineNr">2942 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ab cd ", msg)</span> <span id="L2943" class="LineNr">2943 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2944" class="LineNr">2944 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L2772'>test-emit-segments-code-label</a>/0"</span>/imm32 @@ -2392,7 +2392,7 @@ if ('onhashchange' in window) { <span id="L3108" class="LineNr">3108 </span> e8/call <a href='../064write-byte.subx.html#L81'>flush</a>/disp32 <span id="L3109" class="LineNr">3109 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3110" class="LineNr">3110 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/imm32 <span class="subxComment"># add to esp</span> -<span id="L3111" class="Folded">3111 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3111" class="Folded">3111 </span><span class="Folded">+-- 33 lines: #? # dump output ------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3144" class="LineNr">3144 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ab cd ", msg)</span> <span id="L3145" class="LineNr">3145 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3146" class="LineNr">3146 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L2974'>test-emit-segments-code-label-absolute</a>/0"</span>/imm32 @@ -2441,7 +2441,7 @@ if ('onhashchange' in window) { <span id="L3189" class="LineNr">3189 </span> <span class="subxS1Comment"># . save registers</span> <span id="L3190" class="LineNr">3190 </span> 50/push-eax <span id="L3191" class="LineNr">3191 </span> 51/push-ecx -<span id="L3192" class="Folded">3192 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-elf-header\n") --------------------------------------------------------------------------------------------------</span> +<span id="L3192" class="Folded">3192 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-elf-header\n") -----------------------------------------------------------------------------------------------------------------------------</span> <span id="L3201" class="LineNr">3201 </span> <span class="subxComment"># emit-elf-header(out, segments, labels)</span> <span id="L3202" class="LineNr">3202 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3203" class="LineNr">3203 </span> ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x10/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+16)</span> @@ -2463,8 +2463,8 @@ if ('onhashchange' in window) { <span id="L3219" class="LineNr">3219 </span> <span class="subxComment"># if (curr-segment >= max) break</span> <span id="L3220" class="LineNr">3220 </span> 39/compare 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># compare eax with ecx</span> <span id="L3221" class="LineNr">3221 </span> 0f 83/jump-if-addr>= $emit-headers:end/disp32 -<span id="L3222" class="Folded">3222 </span><span class="Folded">+-- 63 lines: #? # dump curr-segment->name ---------------------------------------------------------------------------------------------------------------</span> -<span id="L3285" class="Folded">3285 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segment-header\n") ----------------------------------------------------------------------------------------------</span> +<span id="L3222" class="Folded">3222 </span><span class="Folded">+-- 63 lines: #? # dump curr-segment->name ------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3285" class="Folded">3285 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segment-header\n") -------------------------------------------------------------------------------------------------------------------------</span> <span id="L3294" class="LineNr">3294 </span> <span class="subxComment"># emit-elf-program-header-entry(out, curr-segment)</span> <span id="L3295" class="LineNr">3295 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3296" class="LineNr">3296 </span> 50/push-eax @@ -2796,7 +2796,7 @@ if ('onhashchange' in window) { <span id="L3622" class="LineNr">3622 </span> e8/call <a href='survey.subx.html#L3557'>trace-sssns</a>/disp32 <span id="L3623" class="LineNr">3623 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3624" class="LineNr">3624 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L3625" class="Folded">3625 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L3625" class="Folded">3625 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3651" class="LineNr">3651 </span> <span class="subxComment"># check-trace-contains("Abc 0x00000003 e")</span> <span id="L3652" class="LineNr">3652 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3653" class="LineNr">3653 </span> 68/push <span class="Constant">"F - test-trace-sssns"</span>/imm32 @@ -2878,7 +2878,7 @@ if ('onhashchange' in window) { <span id="L3729" class="LineNr">3729 </span> e8/call <a href='survey.subx.html#L3664'>trace-snsns</a>/disp32 <span id="L3730" class="LineNr">3730 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3731" class="LineNr">3731 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L3732" class="Folded">3732 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L3732" class="Folded">3732 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3758" class="LineNr">3758 </span> <span class="subxComment"># check-trace-contains("Abc 0x00000003 e")</span> <span id="L3759" class="LineNr">3759 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3760" class="LineNr">3760 </span> 68/push <span class="Constant">"F - test-trace-snsns"</span>/imm32 @@ -2978,7 +2978,7 @@ if ('onhashchange' in window) { <span id="L3854" class="LineNr">3854 </span> e8/call <a href='survey.subx.html#L3771'>trace-slsls</a>/disp32 <span id="L3855" class="LineNr">3855 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3856" class="LineNr">3856 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L3857" class="Folded">3857 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L3857" class="Folded">3857 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3883" class="LineNr">3883 </span> <span class="subxComment"># check-trace-contains("Abcde")</span> <span id="L3884" class="LineNr">3884 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3885" class="LineNr">3885 </span> 68/push <span class="Constant">"F - test-trace-slsls"</span>/imm32 @@ -3069,7 +3069,7 @@ if ('onhashchange' in window) { <span id="L3970" class="LineNr">3970 </span> e8/call <a href='survey.subx.html#L3896'>trace-slsns</a>/disp32 <span id="L3971" class="LineNr">3971 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3972" class="LineNr">3972 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L3973" class="Folded">3973 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L3973" class="Folded">3973 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3999" class="LineNr">3999 </span> <span class="subxComment"># check-trace-contains("Abc 0x00000003 e")</span> <span id="L4000" class="LineNr">4000 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4001" class="LineNr">4001 </span> 68/push <span class="Constant">"F - test-trace-slsls"</span>/imm32 @@ -3160,7 +3160,7 @@ if ('onhashchange' in window) { <span id="L4086" class="LineNr">4086 </span> e8/call <a href='survey.subx.html#L4012'>trace-slsss</a>/disp32 <span id="L4087" class="LineNr">4087 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4088" class="LineNr">4088 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L4089" class="Folded">4089 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L4089" class="Folded">4089 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream -----------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4115" class="LineNr">4115 </span> <span class="subxComment"># check-trace-contains("Abcde")</span> <span id="L4116" class="LineNr">4116 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4117" class="LineNr">4117 </span> 68/push <span class="Constant">"F - test-trace-slsss"</span>/imm32 @@ -3203,7 +3203,7 @@ if ('onhashchange' in window) { <span id="L4154" class="LineNr">4154 </span> 68/push 0/imm32/end <span id="L4155" class="LineNr">4155 </span> 68/push 0/imm32/start <span id="L4156" class="LineNr">4156 </span> 89/copy 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to ecx</span> -<span id="L4157" class="Folded">4157 </span><span class="Folded">+-- 26 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4157" class="Folded">4157 </span><span class="Folded">+-- 26 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4183" class="LineNr">4183 </span> <span class="subxS1Comment"># . rewind-stream(line)</span> <span id="L4184" class="LineNr">4184 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4185" class="LineNr">4185 </span> ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+8)</span> @@ -3220,7 +3220,7 @@ if ('onhashchange' in window) { <span id="L4196" class="LineNr">4196 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L4197" class="LineNr">4197 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4198" class="LineNr">4198 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 8/imm32 <span class="subxComment"># add to esp</span> -<span id="L4199" class="Folded">4199 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L4199" class="Folded">4199 </span><span class="Folded">+-- 40 lines: #? # dump word-slice --------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4239" class="LineNr">4239 </span><span class="Constant">$num-bytes:check0</span>: <span id="L4240" class="LineNr">4240 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L4241" class="LineNr">4241 </span> <span class="subxS1Comment"># . save result</span> diff --git a/html/mu-init.subx.html b/html/mu-init.subx.html index e9fa6bab..324210e4 100644 --- a/html/mu-init.subx.html +++ b/html/mu-init.subx.html @@ -57,9 +57,9 @@ if ('onhashchange' in window) { <span id="L3" class="LineNr"> 3 </span><span class="subxComment"># See translate_mu for how this file is used.</span> <span id="L4" class="LineNr"> 4 </span><span class="subxComment">#</span> <span id="L5" class="LineNr"> 5 </span><span class="subxComment"># Mu programs start at a function called 'main' with this signature:</span> -<span id="L6" class="LineNr"> 6 </span><span class="subxComment"># fn main args: (address array kernel-string) -> exit_status/ebx: int</span> +<span id="L6" class="LineNr"> 6 </span><span class="subxComment"># fn main args: (addr array kernel-string) -> exit-status/ebx: int</span> <span id="L7" class="LineNr"> 7 </span><span class="subxComment"># If your program doesn't need commandline arguments you can drop it:</span> -<span id="L8" class="LineNr"> 8 </span><span class="subxComment"># fn main -> exit_status/ebx: int</span> +<span id="L8" class="LineNr"> 8 </span><span class="subxComment"># fn main -> exit-status/ebx: int</span> <span id="L9" class="LineNr"> 9 </span><span class="subxComment">#</span> <span id="L10" class="LineNr">10 </span><span class="subxComment"># Notice that the output must be in ebx, so that the exit() syscall can pick</span> <span id="L11" class="LineNr">11 </span><span class="subxComment"># it up.</span> @@ -69,7 +69,7 @@ if ('onhashchange' in window) { <span id="L15" class="LineNr">15 </span><span class="SpecialChar">Entry</span>: <span id="L16" class="LineNr">16 </span> <span class="subxComment"># we don't use ebp in Entry; just initialize it</span> <span id="L17" class="LineNr">17 </span> bd/copy-to-ebp 0/imm32 -<span id="L18" class="LineNr">18 </span> <span class="subxComment"># var args/eax: (address array kernel-string)</span> +<span id="L18" class="LineNr">18 </span> <span class="subxComment"># var args/eax: (addr array kernel-string)</span> <span id="L19" class="LineNr">19 </span> 89/<- %eax 4/r32/esp <span id="L20" class="LineNr">20 </span> <span class="subxComment"># initialize the heap</span> <span id="L21" class="LineNr">21 </span> (<a href='053new-segment.subx.html#L41'>new-segment</a> *<span class="SpecialChar"><a href='069allocate.subx.html#L29'>Heap-size</a></span> <span class="SpecialChar"><a href='069allocate.subx.html#L22'>Heap</a></span>) |