diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-12-09 01:26:58 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-12-09 01:26:58 -0800 |
commit | 8aeb85f04ee68b960a6d326aca1a17dec2f6d019 (patch) | |
tree | 26f861361c28ca77fb8298b21a905dc6e06c91ef /html/apps/survey.subx.html | |
parent | 2249e605c19f0dbe0c34c1c4f635b802f56dc535 (diff) | |
download | mu-8aeb85f04ee68b960a6d326aca1a17dec2f6d019.tar.gz |
5806
Diffstat (limited to 'html/apps/survey.subx.html')
-rw-r--r-- | html/apps/survey.subx.html | 494 |
1 files changed, 247 insertions, 247 deletions
diff --git a/html/apps/survey.subx.html b/html/apps/survey.subx.html index 7bb37e2c..1f682cd4 100644 --- a/html/apps/survey.subx.html +++ b/html/apps/survey.subx.html @@ -134,11 +134,11 @@ if ('onhashchange' in window) { <span id="L71" class="LineNr"> 71 </span> 68/push <span class="Constant">"test"</span>/imm32 <span id="L72" class="LineNr"> 72 </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> <span id="L73" class="LineNr"> 73 </span> <span class="subxS2Comment"># . . call</span> -<span id="L74" class="LineNr"> 74 </span> e8/call <a href='../052kernel-string-equal.subx.html#L31'>kernel-string-equal?</a>/disp32 +<span id="L74" class="LineNr"> 74 </span> e8/call <a href='../052kernel-string-equal.subx.html#L33'>kernel-string-equal?</a>/disp32 <span id="L75" class="LineNr"> 75 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L76" class="LineNr"> 76 </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="L77" class="LineNr"> 77 </span> <span class="subxS1Comment"># . if (eax == 0) goto interactive</span> -<span id="L78" class="LineNr"> 78 </span> 3d/compare-eax-and 0/imm32 +<span id="L77" class="LineNr"> 77 </span> <span class="subxS1Comment"># . if (eax == false) goto interactive</span> +<span id="L78" class="LineNr"> 78 </span> 3d/compare-eax-and 0/imm32/false <span id="L79" class="LineNr"> 79 </span> 74/jump-if-equal $subx-survey-main:interactive/disp8 <span id="L80" class="LineNr"> 80 </span> <span class="subxComment"># run-tests()</span> <span id="L81" class="LineNr"> 81 </span> e8/call run-tests/disp32 @@ -178,9 +178,9 @@ if ('onhashchange' in window) { <span id="L115" class="LineNr"> 115 </span> <span id="L116" class="LineNr"> 116 </span><span class="subxFunction">subx-survey</span>: <span class="subxComment"># infile : (address buffered-file), out : (address buffered-file)</span> <span id="L117" class="LineNr"> 117 </span> <span class="subxComment"># pseudocode</span> -<span id="L118" class="LineNr"> 118 </span> <span class="subxComment"># var in : (address stream byte) = stream(4096)</span> +<span id="L118" class="LineNr"> 118 </span> <span class="subxComment"># var in : (ref stream byte 4096)</span> <span id="L119" class="LineNr"> 119 </span> <span class="subxComment"># slurp(infile, in)</span> -<span id="L120" class="LineNr"> 120 </span> <span class="subxComment"># var segments : (stream segment-info 10)</span> +<span id="L120" class="LineNr"> 120 </span> <span class="subxComment"># var segments : (stream segment-info)</span> <span id="L121" class="LineNr"> 121 </span> <span class="subxComment"># var labels : (stream label-info Max-labels)</span> <span id="L122" class="LineNr"> 122 </span> <span class="subxComment"># compute-offsets(in, segments, labels)</span> <span id="L123" class="LineNr"> 123 </span> <span class="subxComment"># compute-addresses(segments, labels)</span> @@ -194,13 +194,13 @@ if ('onhashchange' in window) { <span id="L131" class="LineNr"> 131 </span> 51/push-ecx <span id="L132" class="LineNr"> 132 </span> 52/push-edx <span id="L133" class="LineNr"> 133 </span> 56/push-esi -<span id="L134" class="LineNr"> 134 </span> <span class="subxComment"># var segments/ecx = stream(10 * 16)</span> +<span id="L134" class="LineNr"> 134 </span> <span class="subxComment"># var segments/ecx : (ref stream {string, segment-info} 160) # 10 rows * 16 bytes/row</span> <span id="L135" class="LineNr"> 135 </span> 81 5/subop/subtract 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> 0xa0/imm32 <span class="subxComment"># subtract from esp</span> <span id="L136" class="LineNr"> 136 </span> 68/push 0xa0/imm32/length <span id="L137" class="LineNr"> 137 </span> 68/push 0/imm32/read <span id="L138" class="LineNr"> 138 </span> 68/push 0/imm32/write <span id="L139" class="LineNr"> 139 </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="L140" class="LineNr"> 140 </span> <span class="subxComment"># var labels/edx = stream(Max-labels * 16)</span> +<span id="L140" class="LineNr"> 140 </span> <span class="subxComment"># var labels/edx : (ref stream label-info Max-labels*16)</span> <span id="L141" class="LineNr"> 141 </span> <span class="subxS1Comment"># . data</span> <span id="L142" class="LineNr"> 142 </span> 2b/subtract 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="SpecialChar">Max-labels</span>/disp32 <span class="subxComment"># subtract *Max-labels from esp</span> <span id="L143" class="LineNr"> 143 </span> <span class="subxS1Comment"># . length</span> @@ -210,7 +210,7 @@ if ('onhashchange' in window) { <span id="L147" class="LineNr"> 147 </span> <span class="subxS1Comment"># . write</span> <span id="L148" class="LineNr"> 148 </span> 68/push 0/imm32/write <span id="L149" class="LineNr"> 149 </span> 89/copy 3/mod/direct 2/rm32/edx <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 edx</span> -<span id="L150" class="LineNr"> 150 </span> <span class="subxComment"># var in/esi = stream(Input-size * 1)</span> +<span id="L150" class="LineNr"> 150 </span> <span class="subxComment"># var in/esi : (ref stream byte Input-size)</span> <span id="L151" class="LineNr"> 151 </span> <span class="subxS1Comment"># . data</span> <span id="L152" class="LineNr"> 152 </span> 2b/subtract 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="SpecialChar">Input-size</span>/disp32 <span class="subxComment"># subtract *Input-size from esp</span> <span id="L153" class="LineNr"> 153 </span> <span class="subxS1Comment"># . length</span> @@ -311,14 +311,14 @@ if ('onhashchange' in window) { <span id="L455" class="LineNr"> 455 </span> <span class="subxComment"># setup</span> <span id="L456" class="LineNr"> 456 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L457" class="LineNr"> 457 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L458" class="LineNr"> 458 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L458" class="LineNr"> 458 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L459" class="LineNr"> 459 </span> <span class="subxS2Comment"># . . call</span> <span id="L460" class="LineNr"> 460 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L461" class="LineNr"> 461 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L462" class="LineNr"> 462 </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="L463" class="LineNr"> 463 </span> <span class="subxS1Comment"># . clear-stream(_test-input-buffered-file->buffer)</span> +<span id="L463" class="LineNr"> 463 </span> <span class="subxS1Comment"># . clear-stream($_test-input-buffered-file->buffer)</span> <span id="L464" class="LineNr"> 464 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L465" class="LineNr"> 465 </span> 68/push <a href='../061read-byte.subx.html#L317'>_test-input-buffered-file->buffer</a>/imm32 +<span id="L465" class="LineNr"> 465 </span> 68/push $_test-input-buffered-file->buffer/imm32 <span id="L466" class="LineNr"> 466 </span> <span class="subxS2Comment"># . . call</span> <span id="L467" class="LineNr"> 467 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L468" class="LineNr"> 468 </span> <span class="subxS2Comment"># . . discard args</span> @@ -330,9 +330,9 @@ if ('onhashchange' in window) { <span id="L474" class="LineNr"> 474 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L475" class="LineNr"> 475 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L476" class="LineNr"> 476 </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="L477" class="LineNr"> 477 </span> <span class="subxS1Comment"># . clear-stream(_test-output-buffered-file->buffer)</span> +<span id="L477" class="LineNr"> 477 </span> <span class="subxS1Comment"># . clear-stream($_test-output-buffered-file->buffer)</span> <span id="L478" class="LineNr"> 478 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L479" class="LineNr"> 479 </span> 68/push <a href='../064write-byte.subx.html#L331'>_test-output-buffered-file->buffer</a>/imm32 +<span id="L479" class="LineNr"> 479 </span> 68/push $_test-output-buffered-file->buffer/imm32 <span id="L480" class="LineNr"> 480 </span> <span class="subxS2Comment"># . . call</span> <span id="L481" class="LineNr"> 481 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L482" class="LineNr"> 482 </span> <span class="subxS2Comment"># . . discard args</span> @@ -341,7 +341,7 @@ if ('onhashchange' in window) { <span id="L485" class="LineNr"> 485 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== code 0x1\n")</span> <span id="L486" class="LineNr"> 486 </span> <span class="subxS2Comment"># . . push args</span> <span id="L487" class="LineNr"> 487 </span> 68/push <span class="Constant">"== code 0x1\n"</span>/imm32 -<span id="L488" class="LineNr"> 488 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L488" class="LineNr"> 488 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L489" class="LineNr"> 489 </span> <span class="subxS2Comment"># . . call</span> <span id="L490" class="LineNr"> 490 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L491" class="LineNr"> 491 </span> <span class="subxS2Comment"># . . discard args</span> @@ -349,7 +349,7 @@ if ('onhashchange' in window) { <span id="L493" class="LineNr"> 493 </span> <span class="subxS1Comment"># . write(_test-input-stream, "Entry:\n")</span> <span id="L494" class="LineNr"> 494 </span> <span class="subxS2Comment"># . . push args</span> <span id="L495" class="LineNr"> 495 </span> 68/push <span class="Constant">"Entry:\n"</span>/imm32 -<span id="L496" class="LineNr"> 496 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L496" class="LineNr"> 496 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L497" class="LineNr"> 497 </span> <span class="subxS2Comment"># . . call</span> <span id="L498" class="LineNr"> 498 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L499" class="LineNr"> 499 </span> <span class="subxS2Comment"># . . discard args</span> @@ -357,7 +357,7 @@ if ('onhashchange' in window) { <span id="L501" class="LineNr"> 501 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab x/imm32\n")</span> <span id="L502" class="LineNr"> 502 </span> <span class="subxS2Comment"># . . push args</span> <span id="L503" class="LineNr"> 503 </span> 68/push <span class="Constant">"ab x/imm32\n"</span>/imm32 -<span id="L504" class="LineNr"> 504 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L504" class="LineNr"> 504 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L505" class="LineNr"> 505 </span> <span class="subxS2Comment"># . . call</span> <span id="L506" class="LineNr"> 506 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L507" class="LineNr"> 507 </span> <span class="subxS2Comment"># . . discard args</span> @@ -365,7 +365,7 @@ if ('onhashchange' in window) { <span id="L509" class="LineNr"> 509 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== data 0x1000\n")</span> <span id="L510" class="LineNr"> 510 </span> <span class="subxS2Comment"># . . push args</span> <span id="L511" class="LineNr"> 511 </span> 68/push <span class="Constant">"== data 0x1000\n"</span>/imm32 -<span id="L512" class="LineNr"> 512 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L512" class="LineNr"> 512 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L513" class="LineNr"> 513 </span> <span class="subxS2Comment"># . . call</span> <span id="L514" class="LineNr"> 514 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L515" class="LineNr"> 515 </span> <span class="subxS2Comment"># . . discard args</span> @@ -373,7 +373,7 @@ if ('onhashchange' in window) { <span id="L517" class="LineNr"> 517 </span> <span class="subxS1Comment"># . write(_test-input-stream, "x:\n")</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">"x:\n"</span>/imm32 -<span id="L520" class="LineNr"> 520 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L520" class="LineNr"> 520 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L521" class="LineNr"> 521 </span> <span class="subxS2Comment"># . . call</span> <span id="L522" class="LineNr"> 522 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L523" class="LineNr"> 523 </span> <span class="subxS2Comment"># . . discard args</span> @@ -381,7 +381,7 @@ if ('onhashchange' in window) { <span id="L525" class="LineNr"> 525 </span> <span class="subxS1Comment"># . write(_test-input-stream, "01\n")</span> <span id="L526" class="LineNr"> 526 </span> <span class="subxS2Comment"># . . push args</span> <span id="L527" class="LineNr"> 527 </span> 68/push <span class="Constant">"01\n"</span>/imm32 -<span id="L528" class="LineNr"> 528 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L528" class="LineNr"> 528 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L529" class="LineNr"> 529 </span> <span class="subxS2Comment"># . . call</span> <span id="L530" class="LineNr"> 530 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L531" class="LineNr"> 531 </span> <span class="subxS2Comment"># . . discard args</span> @@ -389,7 +389,7 @@ if ('onhashchange' in window) { <span id="L533" class="LineNr"> 533 </span> <span class="subxComment"># subx-survey(_test-input-buffered-file, _test-output-buffered-file)</span> <span id="L534" class="LineNr"> 534 </span> <span class="subxS2Comment"># . . push args</span> <span id="L535" class="LineNr"> 535 </span> 68/push <a href='../064write-byte.subx.html#L328'>_test-output-buffered-file</a>/imm32 -<span id="L536" class="LineNr"> 536 </span> 68/push <a href='../061read-byte.subx.html#L314'>_test-input-buffered-file</a>/imm32 +<span id="L536" class="LineNr"> 536 </span> 68/push <a href='../061read-byte.subx.html#L313'>_test-input-buffered-file</a>/imm32 <span id="L537" class="LineNr"> 537 </span> <span class="subxS2Comment"># . . call</span> <span id="L538" class="LineNr"> 538 </span> e8/call <a href='survey.subx.html#L116'>subx-survey</a>/disp32 <span id="L539" class="LineNr"> 539 </span> <span class="subxS2Comment"># . . discard args</span> @@ -449,7 +449,7 @@ if ('onhashchange' in window) { <span id="L618" class="LineNr"> 618 </span> <span id="L619" class="LineNr"> 619 </span>== code <span id="L620" class="LineNr"> 620 </span> -<span id="L621" class="LineNr"> 621 </span><span class="subxFunction">compute-offsets</span>: <span class="subxComment"># in : (address stream), segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> +<span id="L621" class="LineNr"> 621 </span><span class="subxFunction">compute-offsets</span>: <span class="subxComment"># in : (address stream byte), segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> <span id="L622" class="LineNr"> 622 </span> <span class="subxComment"># skeleton:</span> <span id="L623" class="LineNr"> 623 </span> <span class="subxComment"># for lines in 'in'</span> <span id="L624" class="LineNr"> 624 </span> <span class="subxComment"># for words in line</span> @@ -559,18 +559,18 @@ if ('onhashchange' in window) { <span id="L833" class="LineNr"> 833 </span> e8/call <a href='../072slice.subx.html#L9'>slice-empty?</a>/disp32 <span id="L834" class="LineNr"> 834 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L835" class="LineNr"> 835 </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="L836" class="LineNr"> 836 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> -<span id="L837" class="LineNr"> 837 </span> 3d/compare-eax-and 0/imm32 +<span id="L836" class="LineNr"> 836 </span> <span class="subxS1Comment"># . if (eax != false) break</span> +<span id="L837" class="LineNr"> 837 </span> 3d/compare-eax-and 0/imm32/false <span id="L838" class="LineNr"> 838 </span> 0f 85/jump-if-not-equal $compute-offsets:line-loop/disp32 <span id="L839" class="LineNr"> 839 </span><span class="Constant">$compute-offsets:case-comment</span>: <span id="L840" class="LineNr"> 840 </span> <span class="subxComment"># if slice-starts-with?(word-slice, "#") continue</span> <span id="L841" class="LineNr"> 841 </span> 68/push <span class="Constant">"#"</span>/imm32 <span id="L842" class="LineNr"> 842 </span> 52/push-edx -<span id="L843" class="LineNr"> 843 </span> e8/call <a href='../072slice.subx.html#L457'>slice-starts-with?</a>/disp32 +<span id="L843" class="LineNr"> 843 </span> e8/call <a href='../072slice.subx.html#L458'>slice-starts-with?</a>/disp32 <span id="L844" class="LineNr"> 844 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L845" class="LineNr"> 845 </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="L846" class="LineNr"> 846 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> -<span id="L847" class="LineNr"> 847 </span> 3d/compare-eax-and 0/imm32 +<span id="L846" class="LineNr"> 846 </span> <span class="subxS1Comment"># . if (eax != false) break</span> +<span id="L847" class="LineNr"> 847 </span> 3d/compare-eax-and 0/imm32/false <span id="L848" class="LineNr"> 848 </span> 0f 85/jump-if-not-equal $compute-offsets:line-loop/disp32 <span id="L849" class="LineNr"> 849 </span><span class="Constant">$compute-offsets:case-segment-header</span>: <span id="L850" class="LineNr"> 850 </span> <span class="subxComment"># if (!slice-equal?(word-slice/edx, "==")) goto next case</span> @@ -580,8 +580,8 @@ if ('onhashchange' in window) { <span id="L854" class="LineNr"> 854 </span> e8/call <a href='../072slice.subx.html#L91'>slice-equal?</a>/disp32 <span id="L855" class="LineNr"> 855 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L856" class="LineNr"> 856 </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="L857" class="LineNr"> 857 </span> <span class="subxS1Comment"># . if (eax == 0) goto next case</span> -<span id="L858" class="LineNr"> 858 </span> 3d/compare-eax-and 0/imm32 +<span id="L857" class="LineNr"> 857 </span> <span class="subxS1Comment"># . if (eax == false) goto next case</span> +<span id="L858" class="LineNr"> 858 </span> 3d/compare-eax-and 0/imm32/false <span id="L859" class="LineNr"> 859 </span> 0f 84/jump-if-equal $compute-offsets:case-label/disp32 <span id="L860" class="LineNr"> 860 </span> <span class="subxComment"># if (curr-segment-name == 0) goto construct-next-segment</span> <span id="L861" class="LineNr"> 861 </span> 81 7/subop/compare 3/mod/direct 6/rm32/esi <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 esi</span> @@ -592,7 +592,7 @@ if ('onhashchange' in window) { <span id="L866" class="LineNr"> 866 </span> 56/push-esi <span id="L867" class="LineNr"> 867 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> <span id="L868" class="LineNr"> 868 </span> <span class="subxS2Comment"># . . call</span> -<span id="L869" class="LineNr"> 869 </span> e8/call <a href='../081table.subx.html#L403'>get-or-insert</a>/disp32 +<span id="L869" class="LineNr"> 869 </span> e8/call <a href='../081table.subx.html#L404'>get-or-insert</a>/disp32 <span id="L870" class="LineNr"> 870 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L871" class="LineNr"> 871 </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="L872" class="LineNr"> 872 </span> <span class="subxComment"># seg->size = file-offset - seg->file-offset</span> @@ -634,7 +634,7 @@ if ('onhashchange' in window) { <span id="L952" class="LineNr"> 952 </span> 68/push <a href='survey.subx.html#L621'>compute-offsets</a>:segment-tmp/imm32 <span id="L953" class="LineNr"> 953 </span> 68/push <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span>/imm32 <span id="L954" class="LineNr"> 954 </span> <span class="subxS2Comment"># . . call</span> -<span id="L955" class="LineNr"> 955 </span> e8/call <a href='../072slice.subx.html#L1013'>slice-to-string</a>/disp32 +<span id="L955" class="LineNr"> 955 </span> e8/call <a href='../072slice.subx.html#L1015'>slice-to-string</a>/disp32 <span id="L956" class="LineNr"> 956 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L957" class="LineNr"> 957 </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="L958" class="LineNr"> 958 </span> <span class="subxS1Comment"># . curr-segment-name = eax</span> @@ -655,8 +655,8 @@ if ('onhashchange' in window) { <span id="L973" class="LineNr"> 973 </span> e8/call <a href='../072slice.subx.html#L9'>slice-empty?</a>/disp32 <span id="L974" class="LineNr"> 974 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L975" class="LineNr"> 975 </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="L976" class="LineNr"> 976 </span> <span class="subxS1Comment"># . if (eax != 0) abort</span> -<span id="L977" class="LineNr"> 977 </span> 3d/compare-eax-and 0/imm32 +<span id="L976" class="LineNr"> 976 </span> <span class="subxS1Comment"># . if (eax != false) abort</span> +<span id="L977" class="LineNr"> 977 </span> 3d/compare-eax-and 0/imm32/false <span id="L978" class="LineNr"> 978 </span> 0f 85/jump-if-not-equal $compute-offsets:abort/disp32 <span id="L979" class="LineNr"> 979 </span> <span class="subxComment"># seg/ebx = get-or-insert(segments, curr-segment-name, row-size=16)</span> <span id="L980" class="LineNr"> 980 </span> <span class="subxS2Comment"># . . push args</span> @@ -664,7 +664,7 @@ if ('onhashchange' in window) { <span id="L982" class="LineNr"> 982 </span> 56/push-esi <span id="L983" class="LineNr"> 983 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> <span id="L984" class="LineNr"> 984 </span> <span class="subxS2Comment"># . . call</span> -<span id="L985" class="LineNr"> 985 </span> e8/call <a href='../081table.subx.html#L403'>get-or-insert</a>/disp32 +<span id="L985" class="LineNr"> 985 </span> e8/call <a href='../081table.subx.html#L404'>get-or-insert</a>/disp32 <span id="L986" class="LineNr"> 986 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L987" class="LineNr"> 987 </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="L988" class="LineNr"> 988 </span> <span class="subxS1Comment"># . ebx = eax</span> @@ -701,11 +701,11 @@ if ('onhashchange' in window) { <span id="L1019" class="LineNr">1019 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1020" class="LineNr">1020 </span> 52/push-edx <span id="L1021" class="LineNr">1021 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1022" class="LineNr">1022 </span> e8/call <a href='../077subx-words.subx.html#L542'>is-label?</a>/disp32 +<span id="L1022" class="LineNr">1022 </span> e8/call <a href='../077subx-words.subx.html#L535'>is-label?</a>/disp32 <span id="L1023" class="LineNr">1023 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1024" class="LineNr">1024 </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="L1025" class="LineNr">1025 </span> <span class="subxS1Comment"># . if (eax == 0) goto next case</span> -<span id="L1026" class="LineNr">1026 </span> 3d/compare-eax-and 0/imm32 +<span id="L1025" class="LineNr">1025 </span> <span class="subxS1Comment"># . if (eax == false) goto next case</span> +<span id="L1026" class="LineNr">1026 </span> 3d/compare-eax-and 0/imm32/false <span id="L1027" class="LineNr">1027 </span> 74/jump-if-equal $compute-offsets:case-default/disp8 <span id="L1028" class="LineNr">1028 </span> <span class="subxComment"># strip trailing ':' from word-slice</span> <span id="L1029" class="LineNr">1029 </span> ff 1/subop/decrement 1/mod/*+disp8 2/rm32/edx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># decrement *(edx+4)</span> @@ -715,7 +715,7 @@ if ('onhashchange' in window) { <span id="L1033" class="LineNr">1033 </span> 52/push-edx <span id="L1034" class="LineNr">1034 </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> <span id="L1035" class="LineNr">1035 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1036" class="LineNr">1036 </span> e8/call <a href='../081table.subx.html#L654'>leaky-get-or-insert-slice</a>/disp32 +<span id="L1036" class="LineNr">1036 </span> e8/call <a href='../081table.subx.html#L655'>leaky-get-or-insert-slice</a>/disp32 <span id="L1037" class="LineNr">1037 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1038" class="LineNr">1038 </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="L1039" class="LineNr">1039 </span><span class="Constant">$compute-offsets:save-label-offset</span>: @@ -759,7 +759,7 @@ if ('onhashchange' in window) { <span id="L1077" class="LineNr">1077 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1078" class="LineNr">1078 </span> 52/push-edx <span id="L1079" class="LineNr">1079 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1080" class="LineNr">1080 </span> e8/call <a href='../083subx-widths.subx.html#L40'>compute-width-of-slice</a>/disp32 +<span id="L1080" class="LineNr">1080 </span> e8/call <a href='../083subx-widths.subx.html#L45'>compute-width-of-slice</a>/disp32 <span id="L1081" class="LineNr">1081 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1082" class="LineNr">1082 </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="L1083" class="LineNr">1083 </span> <span class="subxComment"># segment-offset += width</span> @@ -775,7 +775,7 @@ if ('onhashchange' in window) { <span id="L1133" class="LineNr">1133 </span> 56/push-esi <span id="L1134" class="LineNr">1134 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> <span id="L1135" class="LineNr">1135 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1136" class="LineNr">1136 </span> e8/call <a href='../081table.subx.html#L403'>get-or-insert</a>/disp32 +<span id="L1136" class="LineNr">1136 </span> e8/call <a href='../081table.subx.html#L404'>get-or-insert</a>/disp32 <span id="L1137" class="LineNr">1137 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1138" class="LineNr">1138 </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="L1139" class="LineNr">1139 </span> <span class="subxComment"># seg->size = file-offset - seg->file-offset</span> @@ -824,7 +824,7 @@ if ('onhashchange' in window) { <span id="L1182" class="LineNr">1182 </span> 68/push <span class="Constant">"'==' must be followed by segment name and segment-start\n"</span>/imm32 <span id="L1183" class="LineNr">1183 </span> 68/push 2/imm32/stderr <span id="L1184" class="LineNr">1184 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1185" class="LineNr">1185 </span> e8/call <a href='../050_write.subx.html#L14'>_write</a>/disp32 +<span id="L1185" class="LineNr">1185 </span> e8/call <a href='../050_write.subx.html#L34'>_write</a>/disp32 <span id="L1186" class="LineNr">1186 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1187" class="LineNr">1187 </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="L1188" class="LineNr">1188 </span> <span class="subxS1Comment"># . syscall(exit, 1)</span> @@ -856,18 +856,18 @@ if ('onhashchange' in window) { <span id="L1214" class="LineNr">1214 </span> <span class="subxComment"># setup</span> <span id="L1215" class="LineNr">1215 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L1216" class="LineNr">1216 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L1217" class="LineNr">1217 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1217" class="LineNr">1217 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1218" class="LineNr">1218 </span> <span class="subxS2Comment"># . . call</span> <span id="L1219" class="LineNr">1219 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L1220" class="LineNr">1220 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1221" class="LineNr">1221 </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="L1222" class="LineNr">1222 </span> <span class="subxComment"># var segments/ecx = stream(2 * 16)</span> +<span id="L1222" class="LineNr">1222 </span> <span class="subxComment"># var segments/ecx : (ref stream byte 2*16)</span> <span id="L1223" class="LineNr">1223 </span> 81 5/subop/subtract 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> 0x20/imm32 <span class="subxComment"># subtract from esp</span> <span id="L1224" class="LineNr">1224 </span> 68/push 0x20/imm32/length <span id="L1225" class="LineNr">1225 </span> 68/push 0/imm32/read <span id="L1226" class="LineNr">1226 </span> 68/push 0/imm32/write <span id="L1227" class="LineNr">1227 </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="L1228" class="LineNr">1228 </span> <span class="subxComment"># var labels/edx = stream(2 * 16)</span> +<span id="L1228" class="LineNr">1228 </span> <span class="subxComment"># var labels/edx : (ref stream byte 2*16)</span> <span id="L1229" class="LineNr">1229 </span> 81 5/subop/subtract 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> 0x20/imm32 <span class="subxComment"># subtract from esp</span> <span id="L1230" class="LineNr">1230 </span> 68/push 0x20/imm32/length <span id="L1231" class="LineNr">1231 </span> 68/push 0/imm32/read @@ -877,7 +877,7 @@ if ('onhashchange' in window) { <span id="L1235" class="LineNr">1235 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== code 0x1\n")</span> <span id="L1236" class="LineNr">1236 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1237" class="LineNr">1237 </span> 68/push <span class="Constant">"== code 0x1\n"</span>/imm32 -<span id="L1238" class="LineNr">1238 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1238" class="LineNr">1238 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1239" class="LineNr">1239 </span> <span class="subxS2Comment"># . . call</span> <span id="L1240" class="LineNr">1240 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L1241" class="LineNr">1241 </span> <span class="subxS2Comment"># . . discard args</span> @@ -885,7 +885,7 @@ if ('onhashchange' in window) { <span id="L1243" class="LineNr">1243 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab x/imm32 # skip comment\n")</span> <span id="L1244" class="LineNr">1244 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1245" class="LineNr">1245 </span> 68/push <span class="Constant">"ab x/imm32 # skip comment\n"</span>/imm32 -<span id="L1246" class="LineNr">1246 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1246" class="LineNr">1246 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1247" class="LineNr">1247 </span> <span class="subxS2Comment"># . . call</span> <span id="L1248" class="LineNr">1248 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L1249" class="LineNr">1249 </span> <span class="subxS2Comment"># . . discard args</span> @@ -893,7 +893,7 @@ if ('onhashchange' in window) { <span id="L1251" class="LineNr">1251 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== data 0x1000\n")</span> <span id="L1252" class="LineNr">1252 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1253" class="LineNr">1253 </span> 68/push <span class="Constant">"== data 0x1000\n"</span>/imm32 -<span id="L1254" class="LineNr">1254 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1254" class="LineNr">1254 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1255" class="LineNr">1255 </span> <span class="subxS2Comment"># . . call</span> <span id="L1256" class="LineNr">1256 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L1257" class="LineNr">1257 </span> <span class="subxS2Comment"># . . discard args</span> @@ -901,7 +901,7 @@ if ('onhashchange' in window) { <span id="L1259" class="LineNr">1259 </span> <span class="subxS1Comment"># . write(_test-input-stream, "00\n")</span> <span id="L1260" class="LineNr">1260 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1261" class="LineNr">1261 </span> 68/push <span class="Constant">"00\n"</span>/imm32 -<span id="L1262" class="LineNr">1262 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1262" class="LineNr">1262 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1263" class="LineNr">1263 </span> <span class="subxS2Comment"># . . call</span> <span id="L1264" class="LineNr">1264 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L1265" class="LineNr">1265 </span> <span class="subxS2Comment"># . . discard args</span> @@ -909,7 +909,7 @@ if ('onhashchange' in window) { <span id="L1267" class="LineNr">1267 </span> <span class="subxS1Comment"># . write(_test-input-stream, "x:\n")</span> <span id="L1268" class="LineNr">1268 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1269" class="LineNr">1269 </span> 68/push <span class="Constant">"x:\n"</span>/imm32 -<span id="L1270" class="LineNr">1270 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1270" class="LineNr">1270 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1271" class="LineNr">1271 </span> <span class="subxS2Comment"># . . call</span> <span id="L1272" class="LineNr">1272 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L1273" class="LineNr">1273 </span> <span class="subxS2Comment"># . . discard args</span> @@ -917,7 +917,7 @@ if ('onhashchange' in window) { <span id="L1275" class="LineNr">1275 </span> <span class="subxS1Comment"># . write(_test-input-stream, "34\n")</span> <span id="L1276" class="LineNr">1276 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1277" class="LineNr">1277 </span> 68/push <span class="Constant">"34\n"</span>/imm32 -<span id="L1278" class="LineNr">1278 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1278" class="LineNr">1278 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1279" class="LineNr">1279 </span> <span class="subxS2Comment"># . . call</span> <span id="L1280" class="LineNr">1280 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L1281" class="LineNr">1281 </span> <span class="subxS2Comment"># . . discard args</span> @@ -926,7 +926,7 @@ if ('onhashchange' in window) { <span id="L1284" class="LineNr">1284 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1285" class="LineNr">1285 </span> 52/push-edx <span id="L1286" class="LineNr">1286 </span> 51/push-ecx -<span id="L1287" class="LineNr">1287 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L1287" class="LineNr">1287 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L1288" class="LineNr">1288 </span> <span class="subxS2Comment"># . . call</span> <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> @@ -998,7 +998,7 @@ if ('onhashchange' in window) { <span id="L1381" class="LineNr">1381 </span><span class="subxFunction">compute-addresses</span>: <span class="subxComment"># segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> <span id="L1382" class="LineNr">1382 </span> <span class="subxComment"># pseudocode:</span> <span id="L1383" class="LineNr">1383 </span> <span class="subxComment"># srow : (address segment-info) = segments->data</span> -<span id="L1384" class="LineNr">1384 </span> <span class="subxComment"># max = segments->data + segments->write</span> +<span id="L1384" class="LineNr">1384 </span> <span class="subxComment"># max = &segments->data[segments->write]</span> <span id="L1385" class="LineNr">1385 </span> <span class="subxComment"># num-segments = segments->write / 16</span> <span id="L1386" class="LineNr">1386 </span> <span class="subxComment"># starting-offset = 0x34 + (num-segments * 0x20)</span> <span id="L1387" class="LineNr">1387 </span> <span class="subxComment"># while true</span> @@ -1009,7 +1009,7 @@ if ('onhashchange' in window) { <span id="L1392" class="LineNr">1392 </span> <span class="subxComment"># trace-sssns("segment " s->key " starts at address " s->address)</span> <span id="L1393" class="LineNr">1393 </span> <span class="subxComment"># srow += 16 # row-size</span> <span id="L1394" class="LineNr">1394 </span> <span class="subxComment"># lrow : (address label-info) = labels->data</span> -<span id="L1395" class="LineNr">1395 </span> <span class="subxComment"># max = labels->data + labels->write</span> +<span id="L1395" class="LineNr">1395 </span> <span class="subxComment"># max = &labels->data[labels->write]</span> <span id="L1396" class="LineNr">1396 </span> <span class="subxComment"># while true</span> <span id="L1397" class="LineNr">1397 </span> <span class="subxComment"># if (lrow >= max) break</span> <span id="L1398" class="LineNr">1398 </span> <span class="subxComment"># seg-name : (address string) = lrow->segment-name</span> @@ -1039,7 +1039,7 @@ if ('onhashchange' in window) { <span id="L1422" class="LineNr">1422 </span> 81 0/subop/add 3/mod/direct 7/rm32/edi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x34/imm32 <span class="subxComment"># add to edi</span> <span id="L1423" class="LineNr">1423 </span> <span class="subxComment"># srow/eax = segments->data</span> <span id="L1424" class="LineNr">1424 </span> 8d/copy-address 1/mod/*+disp8 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy esi+12 to eax</span> -<span id="L1425" class="LineNr">1425 </span> <span class="subxComment"># max/ecx = segments->data + segments->write</span> +<span id="L1425" class="LineNr">1425 </span> <span class="subxComment"># max/ecx = &segments->data[segments->write]</span> <span id="L1426" class="LineNr">1426 </span> 8b/copy 0/mod/indirect 6/rm32/esi <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"># copy *esi to ecx</span> <span id="L1427" class="LineNr">1427 </span> 01/add 3/mod/direct 1/rm32/ecx <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"># add esi to ecx</span> <span id="L1428" class="LineNr">1428 </span><span class="Constant">$compute-addresses:segment-loop</span>: @@ -1081,7 +1081,7 @@ if ('onhashchange' in window) { <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> <span id="L1491" class="LineNr">1491 </span> 8d/copy-address 1/mod/*+disp8 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy esi+12 to eax</span> -<span id="L1492" class="LineNr">1492 </span> <span class="subxComment"># max/ecx = labels->data + labels->write</span> +<span id="L1492" class="LineNr">1492 </span> <span class="subxComment"># max/ecx = &labels->data[labels->write]</span> <span id="L1493" class="LineNr">1493 </span> 8b/copy 0/mod/indirect 6/rm32/esi <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"># copy *esi to ecx</span> <span id="L1494" class="LineNr">1494 </span> 01/add 3/mod/direct 1/rm32/ecx <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"># add esi to ecx</span> <span id="L1495" class="LineNr">1495 </span><span class="Constant">$compute-addresses:label-loop</span>: @@ -1102,7 +1102,7 @@ if ('onhashchange' in window) { <span id="L1560" class="LineNr">1560 </span> 52/push-edx <span id="L1561" class="LineNr">1561 </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> <span id="L1562" class="LineNr">1562 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1563" class="LineNr">1563 </span> e8/call <a href='../081table.subx.html#L26'>get</a>/disp32 +<span id="L1563" class="LineNr">1563 </span> e8/call <a href='../081table.subx.html#L27'>get</a>/disp32 <span id="L1564" class="LineNr">1564 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1565" class="LineNr">1565 </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="L1566" class="LineNr">1566 </span> <span class="subxS1Comment"># . edx = eax</span> @@ -1163,13 +1163,13 @@ if ('onhashchange' in window) { <span id="L1621" class="LineNr">1621 </span> 55/push-ebp <span id="L1622" class="LineNr">1622 </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="L1623" class="LineNr">1623 </span> <span class="subxComment"># setup</span> -<span id="L1624" class="LineNr">1624 </span> <span class="subxS1Comment"># . var segments/ecx = stream(10 * 16)</span> +<span id="L1624" class="LineNr">1624 </span> <span class="subxS1Comment"># . var segments/ecx : (ref stream byte 10*16)</span> <span id="L1625" class="LineNr">1625 </span> 81 5/subop/subtract 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> 0xa0/imm32 <span class="subxComment"># subtract from esp</span> <span id="L1626" class="LineNr">1626 </span> 68/push 0xa0/imm32/length <span id="L1627" class="LineNr">1627 </span> 68/push 0/imm32/read <span id="L1628" class="LineNr">1628 </span> 68/push 0/imm32/write <span id="L1629" class="LineNr">1629 </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="L1630" class="LineNr">1630 </span> <span class="subxS1Comment"># . var labels/edx = stream(512 * 16)</span> +<span id="L1630" class="LineNr">1630 </span> <span class="subxS1Comment"># . var labels/edx : (ref stream byte 512*16)</span> <span id="L1631" class="LineNr">1631 </span> 81 5/subop/subtract 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> 0x2000/imm32 <span class="subxComment"># subtract from esp</span> <span id="L1632" class="LineNr">1632 </span> 68/push 0x2000/imm32/length <span id="L1633" class="LineNr">1633 </span> 68/push 0/imm32/read @@ -1307,13 +1307,13 @@ if ('onhashchange' in window) { <span id="L1790" class="LineNr">1790 </span> 55/push-ebp <span id="L1791" class="LineNr">1791 </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="L1792" class="LineNr">1792 </span> <span class="subxComment"># setup</span> -<span id="L1793" class="LineNr">1793 </span> <span class="subxS1Comment"># . var segments/ecx = stream(10 * 16)</span> +<span id="L1793" class="LineNr">1793 </span> <span class="subxS1Comment"># . var segments/ecx : (ref stream byte 10*16)</span> <span id="L1794" class="LineNr">1794 </span> 81 5/subop/subtract 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> 0xa0/imm32 <span class="subxComment"># subtract from esp</span> <span id="L1795" class="LineNr">1795 </span> 68/push 0xa0/imm32/length <span id="L1796" class="LineNr">1796 </span> 68/push 0/imm32/read <span id="L1797" class="LineNr">1797 </span> 68/push 0/imm32/write <span id="L1798" class="LineNr">1798 </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="L1799" class="LineNr">1799 </span> <span class="subxS1Comment"># . var labels/edx = stream(512 * 16)</span> +<span id="L1799" class="LineNr">1799 </span> <span class="subxS1Comment"># . var labels/edx : (ref stream byte 512*16)</span> <span id="L1800" class="LineNr">1800 </span> 81 5/subop/subtract 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> 0x2000/imm32 <span class="subxComment"># subtract from esp</span> <span id="L1801" class="LineNr">1801 </span> 68/push 0x2000/imm32/length <span id="L1802" class="LineNr">1802 </span> 68/push 0/imm32/read @@ -1388,7 +1388,7 @@ if ('onhashchange' in window) { <span id="L1871" class="LineNr">1871 </span> 5d/pop-to-ebp <span id="L1872" class="LineNr">1872 </span> c3/return <span id="L1873" class="LineNr">1873 </span> -<span id="L1874" class="LineNr">1874 </span><span class="subxFunction">emit-output</span>: <span class="subxComment"># in : (address stream), out : (address buffered-file), segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> +<span id="L1874" class="LineNr">1874 </span><span class="subxFunction">emit-output</span>: <span class="subxComment"># in : (address stream byte), out : (address buffered-file), segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> <span id="L1875" class="LineNr">1875 </span> <span class="subxComment"># pseudocode:</span> <span id="L1876" class="LineNr">1876 </span> <span class="subxComment"># emit-headers(out, segments, labels)</span> <span id="L1877" class="LineNr">1877 </span> <span class="subxComment"># emit-segments(in, out, segments, labels)</span> @@ -1423,7 +1423,7 @@ if ('onhashchange' in window) { <span id="L1922" class="LineNr">1922 </span> 5d/pop-to-ebp <span id="L1923" class="LineNr">1923 </span> c3/return <span id="L1924" class="LineNr">1924 </span> -<span id="L1925" class="LineNr">1925 </span><span class="subxFunction">emit-segments</span>: <span class="subxComment"># in : (address stream), out : (address buffered-file), segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> +<span id="L1925" class="LineNr">1925 </span><span class="subxFunction">emit-segments</span>: <span class="subxComment"># in : (address stream byte), out : (address buffered-file), segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> <span id="L1926" class="LineNr">1926 </span> <span class="subxComment"># pseudocode:</span> <span id="L1927" class="LineNr">1927 </span> <span class="subxComment"># var offset-of-next-instruction = 0</span> <span id="L1928" class="LineNr">1928 </span> <span class="subxComment"># var line : (stream byte 512)</span> @@ -1494,11 +1494,11 @@ if ('onhashchange' in window) { <span id="L1993" class="LineNr">1993 </span> 68/push 0/imm32/read <span id="L1994" class="LineNr">1994 </span> 68/push 0/imm32/write <span id="L1995" class="LineNr">1995 </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="L1996" class="LineNr">1996 </span> <span class="subxComment"># var word-slice/edx = {0, 0}</span> +<span id="L1996" class="LineNr">1996 </span> <span class="subxComment"># var word-slice/edx : (ref slice)</span> <span id="L1997" class="LineNr">1997 </span> 68/push 0/imm32/end <span id="L1998" class="LineNr">1998 </span> 68/push 0/imm32/start <span id="L1999" class="LineNr">1999 </span> 89/copy 3/mod/direct 2/rm32/edx <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 edx</span> -<span id="L2000" class="LineNr">2000 </span> <span class="subxComment"># var datum/edi = {0, 0}</span> +<span id="L2000" class="LineNr">2000 </span> <span class="subxComment"># var datum/edi : (ref slice)</span> <span id="L2001" class="LineNr">2001 </span> 68/push 0/imm32/end <span id="L2002" class="LineNr">2002 </span> 68/push 0/imm32/start <span id="L2003" class="LineNr">2003 </span> 89/copy 3/mod/direct 7/rm32/edi <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 edi</span> @@ -1573,11 +1573,11 @@ if ('onhashchange' in window) { <span id="L2136" class="LineNr">2136 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2137" class="LineNr">2137 </span> 52/push-edx <span id="L2138" class="LineNr">2138 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2139" class="LineNr">2139 </span> e8/call <a href='../077subx-words.subx.html#L542'>is-label?</a>/disp32 +<span id="L2139" class="LineNr">2139 </span> e8/call <a href='../077subx-words.subx.html#L535'>is-label?</a>/disp32 <span id="L2140" class="LineNr">2140 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2141" class="LineNr">2141 </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="L2142" class="LineNr">2142 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> -<span id="L2143" class="LineNr">2143 </span> 3d/compare-eax-and 0/imm32 +<span id="L2142" class="LineNr">2142 </span> <span class="subxS1Comment"># . if (eax != false) break</span> +<span id="L2143" class="LineNr">2143 </span> 3d/compare-eax-and 0/imm32/false <span id="L2144" class="LineNr">2144 </span> 0f 85/jump-if-not-equal $emit-segments:line-loop/disp32 <span id="L2145" class="LineNr">2145 </span><span class="Constant">$emit-segments:check-for-segment-header</span>: <span id="L2146" class="LineNr">2146 </span> <span class="subxComment"># if (slice-equal?(word-slice, "==")) break</span> @@ -1589,8 +1589,8 @@ if ('onhashchange' in window) { <span id="L2152" class="LineNr">2152 </span> e8/call <a href='../072slice.subx.html#L91'>slice-equal?</a>/disp32 <span id="L2153" class="LineNr">2153 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2154" class="LineNr">2154 </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="L2155" class="LineNr">2155 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> -<span id="L2156" class="LineNr">2156 </span> 3d/compare-eax-and 0/imm32 +<span id="L2155" class="LineNr">2155 </span> <span class="subxS1Comment"># . if (eax != false) break</span> +<span id="L2156" class="LineNr">2156 </span> 3d/compare-eax-and 0/imm32/false <span id="L2157" class="LineNr">2157 </span> 0f 85/jump-if-not-equal $emit-segments:line-loop/disp32 <span id="L2158" class="LineNr">2158 </span><span class="Constant">$emit-segments:2-character</span>: <span id="L2159" class="LineNr">2159 </span> <span class="subxComment"># if (length(word-slice) != 2) goto next check</span> @@ -1605,7 +1605,7 @@ if ('onhashchange' in window) { <span id="L2168" class="LineNr">2168 </span> 52/push-edx <span id="L2169" class="LineNr">2169 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> <span id="L2170" class="LineNr">2170 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2171" class="LineNr">2171 </span> e8/call <a href='../072slice.subx.html#L878'>write-slice-buffered</a>/disp32 +<span id="L2171" class="LineNr">2171 </span> e8/call <a href='../072slice.subx.html#L880'>write-slice-buffered</a>/disp32 <span id="L2172" class="LineNr">2172 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2173" class="LineNr">2173 </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="L2174" class="LineNr">2174 </span> <span class="subxComment"># write-buffered(out, " ")</span> @@ -1639,7 +1639,7 @@ if ('onhashchange' in window) { <span id="L2234" class="LineNr">2234 </span> 57/push-edi <span id="L2235" class="LineNr">2235 </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> <span id="L2236" class="LineNr">2236 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2237" class="LineNr">2237 </span> e8/call <a href='../081table.subx.html#L200'>get-slice</a>/disp32 +<span id="L2237" class="LineNr">2237 </span> e8/call <a href='../081table.subx.html#L201'>get-slice</a>/disp32 <span id="L2238" class="LineNr">2238 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2239" class="LineNr">2239 </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="L2240" class="LineNr">2240 </span> <span class="subxS1Comment"># . esi = eax</span> @@ -1655,8 +1655,8 @@ if ('onhashchange' in window) { <span id="L2275" class="LineNr">2275 </span> e8/call <a href='../054string-equal.subx.html#L16'>string-equal?</a>/disp32 <span id="L2276" class="LineNr">2276 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2277" class="LineNr">2277 </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="L2278" class="LineNr">2278 </span> <span class="subxS1Comment"># . if (eax != 0) goto code label checks</span> -<span id="L2279" class="LineNr">2279 </span> 3d/compare-eax-and 0/imm32 +<span id="L2278" class="LineNr">2278 </span> <span class="subxS1Comment"># . if (eax != false) goto code label checks</span> +<span id="L2279" class="LineNr">2279 </span> 3d/compare-eax-and 0/imm32/false <span id="L2280" class="LineNr">2280 </span> 0f 85/jump-if-not-equal $emit-segments:check-code-label-for-imm8/disp32 <span id="L2281" class="LineNr">2281 </span><span class="Constant">$emit-segments:check-global-variable-for-disp8</span>: <span id="L2282" class="LineNr">2282 </span> <span class="subxComment"># if has-metadata?(word-slice, "disp8") abort</span> @@ -1668,8 +1668,8 @@ if ('onhashchange' in window) { <span id="L2288" class="LineNr">2288 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2289" class="LineNr">2289 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2290" class="LineNr">2290 </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="L2291" class="LineNr">2291 </span> <span class="subxS1Comment"># . if (eax != 0) abort</span> -<span id="L2292" class="LineNr">2292 </span> 3d/compare-eax-and 0/imm32 +<span id="L2291" class="LineNr">2291 </span> <span class="subxS1Comment"># . if (eax != false) abort</span> +<span id="L2292" class="LineNr">2292 </span> 3d/compare-eax-and 0/imm32/false <span id="L2293" class="LineNr">2293 </span> 0f 85/jump-if-not-equal $emit-segments:global-variable-abort/disp32 <span id="L2294" class="LineNr">2294 </span><span class="Constant">$emit-segments:check-global-variable-for-imm8</span>: <span id="L2295" class="LineNr">2295 </span> <span class="subxComment"># if has-metadata?(word-slice, "imm8") abort</span> @@ -1681,8 +1681,8 @@ if ('onhashchange' in window) { <span id="L2301" class="LineNr">2301 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2302" class="LineNr">2302 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2303" class="LineNr">2303 </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="L2304" class="LineNr">2304 </span> <span class="subxS1Comment"># . if (eax != 0) abort</span> -<span id="L2305" class="LineNr">2305 </span> 3d/compare-eax-and 0/imm32 +<span id="L2304" class="LineNr">2304 </span> <span class="subxS1Comment"># . if (eax != false) abort</span> +<span id="L2305" class="LineNr">2305 </span> 3d/compare-eax-and 0/imm32/false <span id="L2306" class="LineNr">2306 </span> 0f 85/jump-if-not-equal $emit-segments:global-variable-abort/disp32 <span id="L2307" class="LineNr">2307 </span><span class="Constant">$emit-segments:emit-global-variable</span>: <span id="L2308" class="LineNr">2308 </span> <span class="subxComment"># emit-hex(out, info->address, 4)</span> @@ -1706,8 +1706,8 @@ if ('onhashchange' in window) { <span id="L2326" class="LineNr">2326 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2327" class="LineNr">2327 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2328" class="LineNr">2328 </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="L2329" class="LineNr">2329 </span> <span class="subxS1Comment"># . if (eax != 0) abort</span> -<span id="L2330" class="LineNr">2330 </span> 3d/compare-eax-and 0/imm32 +<span id="L2329" class="LineNr">2329 </span> <span class="subxS1Comment"># . if (eax != false) abort</span> +<span id="L2330" class="LineNr">2330 </span> 3d/compare-eax-and 0/imm32/false <span id="L2331" class="LineNr">2331 </span> 0f 85/jump-if-not-equal $emit-segments:imm8-abort/disp32 <span id="L2332" class="LineNr">2332 </span><span class="Constant">$emit-segments:check-code-label-for-imm32</span>: <span id="L2333" class="LineNr">2333 </span> <span class="subxComment"># if (!has-metadata?(word-slice, "imm32")) goto next check</span> @@ -1719,7 +1719,7 @@ if ('onhashchange' in window) { <span id="L2339" class="LineNr">2339 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <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 == 0) goto next check</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="L2344" class="LineNr">2344 </span> 74/jump-if-equal $emit-segments:check-code-label-for-disp8/disp8 <span id="L2345" class="Folded">2345 </span><span class="Folded">+-- 33 lines: #? # dump info->address --------------------------------------------------------------------------------------------------------------------</span> @@ -1745,8 +1745,8 @@ if ('onhashchange' in window) { <span id="L2397" class="LineNr">2397 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2398" class="LineNr">2398 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2399" class="LineNr">2399 </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="L2400" class="LineNr">2400 </span> <span class="subxS1Comment"># . if (eax == 0) goto next check</span> -<span id="L2401" class="LineNr">2401 </span> 3d/compare-eax-and 0/imm32 +<span id="L2400" class="LineNr">2400 </span> <span class="subxS1Comment"># . if (eax == false) goto next check</span> +<span id="L2401" class="LineNr">2401 </span> 3d/compare-eax-and 0/imm32/false <span id="L2402" class="LineNr">2402 </span> 74/jump-if-equal $emit-segments:check-code-label-for-disp32/disp8 <span id="L2403" class="LineNr">2403 </span><span class="Constant">$emit-segments:emit-code-label-disp8</span>: <span id="L2404" class="LineNr">2404 </span> <span class="subxComment"># emit-hex(out, info->offset - offset-of-next-instruction, 1)</span> @@ -1772,8 +1772,8 @@ if ('onhashchange' in window) { <span id="L2424" class="LineNr">2424 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2425" class="LineNr">2425 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2426" class="LineNr">2426 </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="L2427" class="LineNr">2427 </span> <span class="subxS1Comment"># . if (eax == 0) abort</span> -<span id="L2428" class="LineNr">2428 </span> 3d/compare-eax-and 0/imm32 +<span id="L2427" class="LineNr">2427 </span> <span class="subxS1Comment"># . if (eax == false) abort</span> +<span id="L2428" class="LineNr">2428 </span> 3d/compare-eax-and 0/imm32/false <span id="L2429" class="LineNr">2429 </span> 0f 84/jump-if-equal $emit-segments:abort/disp32 <span id="L2430" class="LineNr">2430 </span><span class="Constant">$emit-segments:emit-code-label-disp32</span>: <span id="L2431" class="LineNr">2431 </span> <span class="subxComment"># emit-hex(out, info->offset - offset-of-next-instruction, 4)</span> @@ -1821,7 +1821,7 @@ if ('onhashchange' in window) { <span id="L2473" class="LineNr">2473 </span> 68/push <span class="Constant">"emit-segments: must refer to global variables with /disp32 or /imm32"</span>/imm32 <span id="L2474" class="LineNr">2474 </span> 68/push 2/imm32/stderr <span id="L2475" class="LineNr">2475 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2476" class="LineNr">2476 </span> e8/call <a href='../050_write.subx.html#L14'>_write</a>/disp32 +<span id="L2476" class="LineNr">2476 </span> e8/call <a href='../050_write.subx.html#L34'>_write</a>/disp32 <span id="L2477" class="LineNr">2477 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2478" class="LineNr">2478 </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="L2479" class="LineNr">2479 </span> <span class="subxS1Comment"># . syscall(exit, 1)</span> @@ -1836,7 +1836,7 @@ if ('onhashchange' in window) { <span id="L2488" class="LineNr">2488 </span> 68/push <span class="Constant">"emit-segments: cannot refer to code labels with /imm8"</span>/imm32 <span id="L2489" class="LineNr">2489 </span> 68/push 2/imm32/stderr <span id="L2490" class="LineNr">2490 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2491" class="LineNr">2491 </span> e8/call <a href='../050_write.subx.html#L14'>_write</a>/disp32 +<span id="L2491" class="LineNr">2491 </span> e8/call <a href='../050_write.subx.html#L34'>_write</a>/disp32 <span id="L2492" class="LineNr">2492 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2493" class="LineNr">2493 </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="L2494" class="LineNr">2494 </span> <span class="subxS1Comment"># . syscall(exit, 1)</span> @@ -1852,7 +1852,7 @@ if ('onhashchange' in window) { <span id="L2504" class="LineNr">2504 </span> 68/push <span class="Constant">"emit-segments: missing metadata in "</span>/imm32 <span id="L2505" class="LineNr">2505 </span> 68/push 2/imm32/stderr <span id="L2506" class="LineNr">2506 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2507" class="LineNr">2507 </span> e8/call <a href='../050_write.subx.html#L14'>_write</a>/disp32 +<span id="L2507" class="LineNr">2507 </span> e8/call <a href='../050_write.subx.html#L34'>_write</a>/disp32 <span id="L2508" class="LineNr">2508 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2509" class="LineNr">2509 </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="L2510" class="LineNr">2510 </span> <span class="subxS1Comment"># . write-slice-buffered(Stderr, word-slice)</span> @@ -1860,7 +1860,7 @@ if ('onhashchange' in window) { <span id="L2512" class="LineNr">2512 </span> 52/push-edx <span id="L2513" class="LineNr">2513 </span> 68/push <span class="SpecialChar"><a href='../065write-buffered.subx.html#L209'>Stderr</a></span>/imm32 <span id="L2514" class="LineNr">2514 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2515" class="LineNr">2515 </span> e8/call <a href='../072slice.subx.html#L878'>write-slice-buffered</a>/disp32 +<span id="L2515" class="LineNr">2515 </span> e8/call <a href='../072slice.subx.html#L880'>write-slice-buffered</a>/disp32 <span id="L2516" class="LineNr">2516 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2517" class="LineNr">2517 </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="L2518" class="LineNr">2518 </span> <span class="subxS1Comment"># . flush(Stderr)</span> @@ -1906,7 +1906,7 @@ if ('onhashchange' in window) { <span id="L2558" class="LineNr">2558 </span> <span class="subxComment"># setup</span> <span id="L2559" class="LineNr">2559 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L2560" class="LineNr">2560 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L2561" class="LineNr">2561 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2561" class="LineNr">2561 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2562" class="LineNr">2562 </span> <span class="subxS2Comment"># . . call</span> <span id="L2563" class="LineNr">2563 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L2564" class="LineNr">2564 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1918,20 +1918,20 @@ if ('onhashchange' in window) { <span id="L2570" class="LineNr">2570 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L2571" class="LineNr">2571 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2572" class="LineNr">2572 </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="L2573" class="LineNr">2573 </span> <span class="subxS1Comment"># . clear-stream(_test-output-buffered-file->buffer)</span> +<span id="L2573" class="LineNr">2573 </span> <span class="subxS1Comment"># . clear-stream($_test-output-buffered-file->buffer)</span> <span id="L2574" class="LineNr">2574 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L2575" class="LineNr">2575 </span> 68/push <a href='../064write-byte.subx.html#L331'>_test-output-buffered-file->buffer</a>/imm32 +<span id="L2575" class="LineNr">2575 </span> 68/push $_test-output-buffered-file->buffer/imm32 <span id="L2576" class="LineNr">2576 </span> <span class="subxS2Comment"># . . call</span> <span id="L2577" class="LineNr">2577 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L2578" class="LineNr">2578 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2579" class="LineNr">2579 </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="L2580" class="LineNr">2580 </span> <span class="subxS1Comment"># . var segments/ecx = stream(10 * 16)</span> +<span id="L2580" class="LineNr">2580 </span> <span class="subxS1Comment"># . var segments/ecx : (ref stream byte 10*16)</span> <span id="L2581" class="LineNr">2581 </span> 81 5/subop/subtract 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> 0xa0/imm32 <span class="subxComment"># subtract from esp</span> <span id="L2582" class="LineNr">2582 </span> 68/push 0xa0/imm32/length <span id="L2583" class="LineNr">2583 </span> 68/push 0/imm32/read <span id="L2584" class="LineNr">2584 </span> 68/push 0/imm32/write <span id="L2585" class="LineNr">2585 </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="L2586" class="LineNr">2586 </span> <span class="subxS1Comment"># . var labels/edx = stream(512 * 16)</span> +<span id="L2586" class="LineNr">2586 </span> <span class="subxS1Comment"># . var labels/edx : (ref stream byte 512*16)</span> <span id="L2587" class="LineNr">2587 </span> 81 5/subop/subtract 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> 0x2000/imm32 <span class="subxComment"># subtract from esp</span> <span id="L2588" class="LineNr">2588 </span> 68/push 0x2000/imm32/length <span id="L2589" class="LineNr">2589 </span> 68/push 0/imm32/read @@ -1941,7 +1941,7 @@ if ('onhashchange' in window) { <span id="L2593" class="LineNr">2593 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== code 0x1000\n")</span> <span id="L2594" class="LineNr">2594 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2595" class="LineNr">2595 </span> 68/push <span class="Constant">"== code 0x1000\n"</span>/imm32 -<span id="L2596" class="LineNr">2596 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2596" class="LineNr">2596 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2597" class="LineNr">2597 </span> <span class="subxS2Comment"># . . call</span> <span id="L2598" class="LineNr">2598 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2599" class="LineNr">2599 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1949,7 +1949,7 @@ if ('onhashchange' in window) { <span id="L2601" class="LineNr">2601 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab cd ef gh\n")</span> <span id="L2602" class="LineNr">2602 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2603" class="LineNr">2603 </span> 68/push <span class="Constant">"ab cd ef gh\n"</span>/imm32 -<span id="L2604" class="LineNr">2604 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2604" class="LineNr">2604 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2605" class="LineNr">2605 </span> <span class="subxS2Comment"># . . call</span> <span id="L2606" class="LineNr">2606 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2607" class="LineNr">2607 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1957,7 +1957,7 @@ if ('onhashchange' in window) { <span id="L2609" class="LineNr">2609 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ij x/disp32\n")</span> <span id="L2610" class="LineNr">2610 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2611" class="LineNr">2611 </span> 68/push <span class="Constant">"ij x/disp32\n"</span>/imm32 -<span id="L2612" class="LineNr">2612 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2612" class="LineNr">2612 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2613" class="LineNr">2613 </span> <span class="subxS2Comment"># . . call</span> <span id="L2614" class="LineNr">2614 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2615" class="LineNr">2615 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1965,7 +1965,7 @@ if ('onhashchange' in window) { <span id="L2617" class="LineNr">2617 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== data 0x2000\n")</span> <span id="L2618" class="LineNr">2618 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2619" class="LineNr">2619 </span> 68/push <span class="Constant">"== data 0x2000\n"</span>/imm32 -<span id="L2620" class="LineNr">2620 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2620" class="LineNr">2620 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2621" class="LineNr">2621 </span> <span class="subxS2Comment"># . . call</span> <span id="L2622" class="LineNr">2622 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2623" class="LineNr">2623 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1973,7 +1973,7 @@ if ('onhashchange' in window) { <span id="L2625" class="LineNr">2625 </span> <span class="subxS1Comment"># . write(_test-input-stream, "00\n")</span> <span id="L2626" class="LineNr">2626 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2627" class="LineNr">2627 </span> 68/push <span class="Constant">"00\n"</span>/imm32 -<span id="L2628" class="LineNr">2628 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2628" class="LineNr">2628 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2629" class="LineNr">2629 </span> <span class="subxS2Comment"># . . call</span> <span id="L2630" class="LineNr">2630 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2631" class="LineNr">2631 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1981,7 +1981,7 @@ if ('onhashchange' in window) { <span id="L2633" class="LineNr">2633 </span> <span class="subxS1Comment"># . write(_test-input-stream, "x:\n")</span> <span id="L2634" class="LineNr">2634 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2635" class="LineNr">2635 </span> 68/push <span class="Constant">"x:\n"</span>/imm32 -<span id="L2636" class="LineNr">2636 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2636" class="LineNr">2636 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2637" class="LineNr">2637 </span> <span class="subxS2Comment"># . . call</span> <span id="L2638" class="LineNr">2638 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2639" class="LineNr">2639 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1989,7 +1989,7 @@ if ('onhashchange' in window) { <span id="L2641" class="LineNr">2641 </span> <span class="subxS1Comment"># . write(_test-input-stream, "34\n")</span> <span id="L2642" class="LineNr">2642 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2643" class="LineNr">2643 </span> 68/push <span class="Constant">"34\n"</span>/imm32 -<span id="L2644" class="LineNr">2644 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2644" class="LineNr">2644 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2645" class="LineNr">2645 </span> <span class="subxS2Comment"># . . call</span> <span id="L2646" class="LineNr">2646 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2647" class="LineNr">2647 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2030,7 +2030,7 @@ if ('onhashchange' in window) { <span id="L2682" class="LineNr">2682 </span> 52/push-edx <span id="L2683" class="LineNr">2683 </span> 51/push-ecx <span id="L2684" class="LineNr">2684 </span> 68/push <a href='../064write-byte.subx.html#L328'>_test-output-buffered-file</a>/imm32 -<span id="L2685" class="LineNr">2685 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2685" class="LineNr">2685 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2686" class="LineNr">2686 </span> <span class="subxS2Comment"># . . call</span> <span id="L2687" class="LineNr">2687 </span> e8/call <a href='survey.subx.html#L1925'>emit-segments</a>/disp32 <span id="L2688" class="LineNr">2688 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2050,7 +2050,7 @@ if ('onhashchange' in window) { <span id="L2734" class="LineNr">2734 </span> 68/push <span class="Constant">"ab cd ef gh "</span>/imm32 <span id="L2735" class="LineNr">2735 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L2736" class="LineNr">2736 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2737" class="LineNr">2737 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L2737" class="LineNr">2737 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L2738" class="LineNr">2738 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2739" class="LineNr">2739 </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="L2740" class="LineNr">2740 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ij 7a 20 00 00 ", msg)</span> @@ -2059,7 +2059,7 @@ if ('onhashchange' in window) { <span id="L2743" class="LineNr">2743 </span> 68/push <span class="Constant">"ij 7a 20 00 00 "</span>/imm32 <span id="L2744" class="LineNr">2744 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L2745" class="LineNr">2745 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2746" class="LineNr">2746 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L2746" class="LineNr">2746 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L2747" class="LineNr">2747 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2748" class="LineNr">2748 </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="L2749" class="LineNr">2749 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "00 ", msg)</span> @@ -2068,7 +2068,7 @@ if ('onhashchange' in window) { <span id="L2752" class="LineNr">2752 </span> 68/push <span class="Constant">"00 "</span>/imm32 <span id="L2753" class="LineNr">2753 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L2754" class="LineNr">2754 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2755" class="LineNr">2755 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L2755" class="LineNr">2755 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L2756" class="LineNr">2756 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2757" class="LineNr">2757 </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="L2758" class="LineNr">2758 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "34 ", msg)</span> @@ -2077,7 +2077,7 @@ if ('onhashchange' in window) { <span id="L2761" class="LineNr">2761 </span> 68/push <span class="Constant">"34 "</span>/imm32 <span id="L2762" class="LineNr">2762 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L2763" class="LineNr">2763 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2764" class="LineNr">2764 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L2764" class="LineNr">2764 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L2765" class="LineNr">2765 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2766" class="LineNr">2766 </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="L2767" class="LineNr">2767 </span> <span class="subxS1Comment"># . epilogue</span> @@ -2111,7 +2111,7 @@ if ('onhashchange' in window) { <span id="L2795" class="LineNr">2795 </span> <span class="subxComment"># setup</span> <span id="L2796" class="LineNr">2796 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L2797" class="LineNr">2797 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L2798" class="LineNr">2798 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2798" class="LineNr">2798 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2799" class="LineNr">2799 </span> <span class="subxS2Comment"># . . call</span> <span id="L2800" class="LineNr">2800 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L2801" class="LineNr">2801 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2123,20 +2123,20 @@ if ('onhashchange' in window) { <span id="L2807" class="LineNr">2807 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L2808" class="LineNr">2808 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2809" class="LineNr">2809 </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="L2810" class="LineNr">2810 </span> <span class="subxS1Comment"># . clear-stream(_test-output-buffered-file->buffer)</span> +<span id="L2810" class="LineNr">2810 </span> <span class="subxS1Comment"># . clear-stream($_test-output-buffered-file->buffer)</span> <span id="L2811" class="LineNr">2811 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L2812" class="LineNr">2812 </span> 68/push <a href='../064write-byte.subx.html#L331'>_test-output-buffered-file->buffer</a>/imm32 +<span id="L2812" class="LineNr">2812 </span> 68/push $_test-output-buffered-file->buffer/imm32 <span id="L2813" class="LineNr">2813 </span> <span class="subxS2Comment"># . . call</span> <span id="L2814" class="LineNr">2814 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L2815" class="LineNr">2815 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2816" class="LineNr">2816 </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="L2817" class="LineNr">2817 </span> <span class="subxS1Comment"># . var segments/ecx = stream(10 * 16)</span> +<span id="L2817" class="LineNr">2817 </span> <span class="subxS1Comment"># . var segments/ecx : (ref stream byte 10*16)</span> <span id="L2818" class="LineNr">2818 </span> 81 5/subop/subtract 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> 0xa0/imm32 <span class="subxComment"># subtract from esp</span> <span id="L2819" class="LineNr">2819 </span> 68/push 0xa0/imm32/length <span id="L2820" class="LineNr">2820 </span> 68/push 0/imm32/read <span id="L2821" class="LineNr">2821 </span> 68/push 0/imm32/write <span id="L2822" class="LineNr">2822 </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="L2823" class="LineNr">2823 </span> <span class="subxS1Comment"># . var labels/edx = stream(512 * 16)</span> +<span id="L2823" class="LineNr">2823 </span> <span class="subxS1Comment"># . var labels/edx : (ref stream byte 512*16)</span> <span id="L2824" class="LineNr">2824 </span> 81 5/subop/subtract 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> 0x2000/imm32 <span class="subxComment"># subtract from esp</span> <span id="L2825" class="LineNr">2825 </span> 68/push 0x2000/imm32/length <span id="L2826" class="LineNr">2826 </span> 68/push 0/imm32/read @@ -2146,7 +2146,7 @@ if ('onhashchange' in window) { <span id="L2830" class="LineNr">2830 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== code 0x1000\n")</span> <span id="L2831" class="LineNr">2831 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2832" class="LineNr">2832 </span> 68/push <span class="Constant">"== code 0x1000\n"</span>/imm32 -<span id="L2833" class="LineNr">2833 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2833" class="LineNr">2833 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2834" class="LineNr">2834 </span> <span class="subxS2Comment"># . . call</span> <span id="L2835" class="LineNr">2835 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2836" class="LineNr">2836 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2154,7 +2154,7 @@ if ('onhashchange' in window) { <span id="L2838" class="LineNr">2838 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab cd\n")</span> <span id="L2839" class="LineNr">2839 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2840" class="LineNr">2840 </span> 68/push <span class="Constant">"ab cd\n"</span>/imm32 -<span id="L2841" class="LineNr">2841 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2841" class="LineNr">2841 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2842" class="LineNr">2842 </span> <span class="subxS2Comment"># . . call</span> <span id="L2843" class="LineNr">2843 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2844" class="LineNr">2844 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2162,7 +2162,7 @@ if ('onhashchange' in window) { <span id="L2846" class="LineNr">2846 </span> <span class="subxS1Comment"># . write(_test-input-stream, "l1:\n")</span> <span id="L2847" class="LineNr">2847 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2848" class="LineNr">2848 </span> 68/push <span class="Constant">"l1:\n"</span>/imm32 -<span id="L2849" class="LineNr">2849 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2849" class="LineNr">2849 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2850" class="LineNr">2850 </span> <span class="subxS2Comment"># . . call</span> <span id="L2851" class="LineNr">2851 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2852" class="LineNr">2852 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2170,7 +2170,7 @@ if ('onhashchange' in window) { <span id="L2854" class="LineNr">2854 </span> <span class="subxS1Comment"># . write(_test-input-stream, " ef gh\n")</span> <span id="L2855" class="LineNr">2855 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2856" class="LineNr">2856 </span> 68/push <span class="Constant">" ef gh\n"</span>/imm32 -<span id="L2857" class="LineNr">2857 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2857" class="LineNr">2857 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2858" class="LineNr">2858 </span> <span class="subxS2Comment"># . . call</span> <span id="L2859" class="LineNr">2859 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2860" class="LineNr">2860 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2178,7 +2178,7 @@ if ('onhashchange' in window) { <span id="L2862" class="LineNr">2862 </span> <span class="subxS1Comment"># . write(_test-input-stream, " ij l1/disp32\n")</span> <span id="L2863" class="LineNr">2863 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2864" class="LineNr">2864 </span> 68/push <span class="Constant">" ij l1/disp32\n"</span>/imm32 -<span id="L2865" class="LineNr">2865 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2865" class="LineNr">2865 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2866" class="LineNr">2866 </span> <span class="subxS2Comment"># . . call</span> <span id="L2867" class="LineNr">2867 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L2868" class="LineNr">2868 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2209,7 +2209,7 @@ if ('onhashchange' in window) { <span id="L2893" class="LineNr">2893 </span> 52/push-edx <span id="L2894" class="LineNr">2894 </span> 51/push-ecx <span id="L2895" class="LineNr">2895 </span> 68/push <a href='../064write-byte.subx.html#L328'>_test-output-buffered-file</a>/imm32 -<span id="L2896" class="LineNr">2896 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L2896" class="LineNr">2896 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L2897" class="LineNr">2897 </span> <span class="subxS2Comment"># . . call</span> <span id="L2898" class="LineNr">2898 </span> e8/call <a href='survey.subx.html#L1925'>emit-segments</a>/disp32 <span id="L2899" class="LineNr">2899 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2229,7 +2229,7 @@ if ('onhashchange' in window) { <span id="L2945" class="LineNr">2945 </span> 68/push <span class="Constant">"ab cd "</span>/imm32 <span id="L2946" class="LineNr">2946 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L2947" class="LineNr">2947 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2948" class="LineNr">2948 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L2948" class="LineNr">2948 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L2949" class="LineNr">2949 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2950" class="LineNr">2950 </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="L2951" class="LineNr">2951 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ef gh ", msg)</span> @@ -2238,7 +2238,7 @@ if ('onhashchange' in window) { <span id="L2954" class="LineNr">2954 </span> 68/push <span class="Constant">"ef gh "</span>/imm32 <span id="L2955" class="LineNr">2955 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L2956" class="LineNr">2956 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2957" class="LineNr">2957 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L2957" class="LineNr">2957 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L2958" class="LineNr">2958 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2959" class="LineNr">2959 </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="L2960" class="LineNr">2960 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ij f9 ff ff ff ", msg)</span> @@ -2247,7 +2247,7 @@ if ('onhashchange' in window) { <span id="L2963" class="LineNr">2963 </span> 68/push <span class="Constant">"ij f9 ff ff ff "</span>/imm32 <span id="L2964" class="LineNr">2964 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L2965" class="LineNr">2965 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2966" class="LineNr">2966 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L2966" class="LineNr">2966 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L2967" class="LineNr">2967 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2968" class="LineNr">2968 </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="L2969" class="LineNr">2969 </span> <span class="subxS1Comment"># . epilogue</span> @@ -2281,7 +2281,7 @@ if ('onhashchange' in window) { <span id="L2997" class="LineNr">2997 </span> <span class="subxComment"># setup</span> <span id="L2998" class="LineNr">2998 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L2999" class="LineNr">2999 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L3000" class="LineNr">3000 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L3000" class="LineNr">3000 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L3001" class="LineNr">3001 </span> <span class="subxS2Comment"># . . call</span> <span id="L3002" class="LineNr">3002 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L3003" class="LineNr">3003 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2293,20 +2293,20 @@ if ('onhashchange' in window) { <span id="L3009" class="LineNr">3009 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L3010" class="LineNr">3010 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3011" class="LineNr">3011 </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="L3012" class="LineNr">3012 </span> <span class="subxS1Comment"># . clear-stream(_test-output-buffered-file->buffer)</span> +<span id="L3012" class="LineNr">3012 </span> <span class="subxS1Comment"># . clear-stream($_test-output-buffered-file->buffer)</span> <span id="L3013" class="LineNr">3013 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L3014" class="LineNr">3014 </span> 68/push <a href='../064write-byte.subx.html#L331'>_test-output-buffered-file->buffer</a>/imm32 +<span id="L3014" class="LineNr">3014 </span> 68/push $_test-output-buffered-file->buffer/imm32 <span id="L3015" class="LineNr">3015 </span> <span class="subxS2Comment"># . . call</span> <span id="L3016" class="LineNr">3016 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L3017" class="LineNr">3017 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3018" class="LineNr">3018 </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="L3019" class="LineNr">3019 </span> <span class="subxS1Comment"># . var segments/ecx = stream(10 * 16)</span> +<span id="L3019" class="LineNr">3019 </span> <span class="subxS1Comment"># . var segments/ecx : (ref stream byte 10*16)</span> <span id="L3020" class="LineNr">3020 </span> 81 5/subop/subtract 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> 0xa0/imm32 <span class="subxComment"># subtract from esp</span> <span id="L3021" class="LineNr">3021 </span> 68/push 0xa0/imm32/length <span id="L3022" class="LineNr">3022 </span> 68/push 0/imm32/read <span id="L3023" class="LineNr">3023 </span> 68/push 0/imm32/write <span id="L3024" class="LineNr">3024 </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="L3025" class="LineNr">3025 </span> <span class="subxS1Comment"># . var labels/edx = stream(512 * 16)</span> +<span id="L3025" class="LineNr">3025 </span> <span class="subxS1Comment"># . var labels/edx : (ref stream byte 512*16)</span> <span id="L3026" class="LineNr">3026 </span> 81 5/subop/subtract 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> 0x2000/imm32 <span class="subxComment"># subtract from esp</span> <span id="L3027" class="LineNr">3027 </span> 68/push 0x2000/imm32/length <span id="L3028" class="LineNr">3028 </span> 68/push 0/imm32/read @@ -2316,7 +2316,7 @@ if ('onhashchange' in window) { <span id="L3032" class="LineNr">3032 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== code 0x1000\n")</span> <span id="L3033" class="LineNr">3033 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3034" class="LineNr">3034 </span> 68/push <span class="Constant">"== code 0x1000\n"</span>/imm32 -<span id="L3035" class="LineNr">3035 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L3035" class="LineNr">3035 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L3036" class="LineNr">3036 </span> <span class="subxS2Comment"># . . call</span> <span id="L3037" class="LineNr">3037 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3038" class="LineNr">3038 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2324,7 +2324,7 @@ if ('onhashchange' in window) { <span id="L3040" class="LineNr">3040 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab cd\n")</span> <span id="L3041" class="LineNr">3041 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3042" class="LineNr">3042 </span> 68/push <span class="Constant">"ab cd\n"</span>/imm32 -<span id="L3043" class="LineNr">3043 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L3043" class="LineNr">3043 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L3044" class="LineNr">3044 </span> <span class="subxS2Comment"># . . call</span> <span id="L3045" class="LineNr">3045 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3046" class="LineNr">3046 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2332,7 +2332,7 @@ if ('onhashchange' in window) { <span id="L3048" class="LineNr">3048 </span> <span class="subxS1Comment"># . write(_test-input-stream, "l1:\n")</span> <span id="L3049" class="LineNr">3049 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3050" class="LineNr">3050 </span> 68/push <span class="Constant">"l1:\n"</span>/imm32 -<span id="L3051" class="LineNr">3051 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L3051" class="LineNr">3051 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L3052" class="LineNr">3052 </span> <span class="subxS2Comment"># . . call</span> <span id="L3053" class="LineNr">3053 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3054" class="LineNr">3054 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2340,7 +2340,7 @@ if ('onhashchange' in window) { <span id="L3056" class="LineNr">3056 </span> <span class="subxS1Comment"># . write(_test-input-stream, " ef gh\n")</span> <span id="L3057" class="LineNr">3057 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3058" class="LineNr">3058 </span> 68/push <span class="Constant">" ef gh\n"</span>/imm32 -<span id="L3059" class="LineNr">3059 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L3059" class="LineNr">3059 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L3060" class="LineNr">3060 </span> <span class="subxS2Comment"># . . call</span> <span id="L3061" class="LineNr">3061 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3062" class="LineNr">3062 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2348,7 +2348,7 @@ if ('onhashchange' in window) { <span id="L3064" class="LineNr">3064 </span> <span class="subxS1Comment"># . write(_test-input-stream, " ij l1/imm32\n")</span> <span id="L3065" class="LineNr">3065 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3066" class="LineNr">3066 </span> 68/push <span class="Constant">" ij l1/imm32\n"</span>/imm32 -<span id="L3067" class="LineNr">3067 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L3067" class="LineNr">3067 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L3068" class="LineNr">3068 </span> <span class="subxS2Comment"># . . call</span> <span id="L3069" class="LineNr">3069 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3070" class="LineNr">3070 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2379,7 +2379,7 @@ if ('onhashchange' in window) { <span id="L3095" class="LineNr">3095 </span> 52/push-edx <span id="L3096" class="LineNr">3096 </span> 51/push-ecx <span id="L3097" class="LineNr">3097 </span> 68/push <a href='../064write-byte.subx.html#L328'>_test-output-buffered-file</a>/imm32 -<span id="L3098" class="LineNr">3098 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L3098" class="LineNr">3098 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L3099" class="LineNr">3099 </span> <span class="subxS2Comment"># . . call</span> <span id="L3100" class="LineNr">3100 </span> e8/call <a href='survey.subx.html#L1925'>emit-segments</a>/disp32 <span id="L3101" class="LineNr">3101 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2399,7 +2399,7 @@ if ('onhashchange' in window) { <span id="L3147" class="LineNr">3147 </span> 68/push <span class="Constant">"ab cd "</span>/imm32 <span id="L3148" class="LineNr">3148 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L3149" class="LineNr">3149 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3150" class="LineNr">3150 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L3150" class="LineNr">3150 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L3151" class="LineNr">3151 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3152" class="LineNr">3152 </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="L3153" class="LineNr">3153 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ef gh ", msg)</span> @@ -2408,7 +2408,7 @@ if ('onhashchange' in window) { <span id="L3156" class="LineNr">3156 </span> 68/push <span class="Constant">"ef gh "</span>/imm32 <span id="L3157" class="LineNr">3157 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L3158" class="LineNr">3158 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3159" class="LineNr">3159 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L3159" class="LineNr">3159 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L3160" class="LineNr">3160 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3161" class="LineNr">3161 </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="L3162" class="LineNr">3162 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ij f9 ff ff ff ", msg)</span> @@ -2417,7 +2417,7 @@ if ('onhashchange' in window) { <span id="L3165" class="LineNr">3165 </span> 68/push <span class="Constant">"ij 56 10 00 00 "</span>/imm32 <span id="L3166" class="LineNr">3166 </span> 68/push <a href='../064write-byte.subx.html#L286'>_test-output-stream</a>/imm32 <span id="L3167" class="LineNr">3167 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3168" class="LineNr">3168 </span> e8/call <a href='../058stream-equal.subx.html#L563'>check-next-stream-line-equal</a>/disp32 +<span id="L3168" class="LineNr">3168 </span> e8/call <a href='../058stream-equal.subx.html#L565'>check-next-stream-line-equal</a>/disp32 <span id="L3169" class="LineNr">3169 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3170" class="LineNr">3170 </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="L3171" class="LineNr">3171 </span> <span class="subxS1Comment"># . epilogue</span> @@ -2429,7 +2429,7 @@ if ('onhashchange' in window) { <span id="L3177" class="LineNr">3177 </span> <span class="subxComment"># pseudocode:</span> <span id="L3178" class="LineNr">3178 </span> <span class="subxComment"># emit-elf-header(out, segments, labels)</span> <span id="L3179" class="LineNr">3179 </span> <span class="subxComment"># curr-segment = segments->data</span> -<span id="L3180" class="LineNr">3180 </span> <span class="subxComment"># max = segments->data + segments->write</span> +<span id="L3180" class="LineNr">3180 </span> <span class="subxComment"># max = &segments->data[segments->write]</span> <span id="L3181" class="LineNr">3181 </span> <span class="subxComment"># while true</span> <span id="L3182" class="LineNr">3182 </span> <span class="subxComment"># if (curr-segment >= max) break</span> <span id="L3183" class="LineNr">3183 </span> <span class="subxComment"># emit-elf-program-header-entry(out, curr-segment)</span> @@ -2457,7 +2457,7 @@ if ('onhashchange' in window) { <span id="L3213" class="LineNr">3213 </span> 8b/copy 0/mod/indirect 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"># copy *eax to ecx</span> <span id="L3214" class="LineNr">3214 </span> <span class="subxComment"># curr-segment/eax = segments->data</span> <span id="L3215" class="LineNr">3215 </span> 8d/copy-address 1/mod/*+disp8 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy eax+12 to eax</span> -<span id="L3216" class="LineNr">3216 </span> <span class="subxComment"># max/ecx = segments->data + segments->write</span> +<span id="L3216" class="LineNr">3216 </span> <span class="subxComment"># max/ecx = &segments->data[segments->write]</span> <span id="L3217" class="LineNr">3217 </span> 01/add 3/mod/direct 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"># add eax to ecx</span> <span id="L3218" class="LineNr">3218 </span><span class="Constant">$emit-headers:loop</span>: <span id="L3219" class="LineNr">3219 </span> <span class="subxComment"># if (curr-segment >= max) break</span> @@ -2487,8 +2487,8 @@ if ('onhashchange' in window) { <span id="L3313" class="LineNr">3313 </span> <span id="L3314" class="LineNr">3314 </span><span class="subxFunction">emit-elf-header</span>: <span class="subxComment"># out : (address buffered-file), segments : (address stream {string, segment-info}), labels : (address stream {string, label-info})</span> <span id="L3315" class="LineNr">3315 </span> <span class="subxComment"># pseudocode</span> -<span id="L3316" class="LineNr">3316 </span> <span class="subxComment"># *Elf_e_entry = get(labels, "Entry")->address</span> -<span id="L3317" class="LineNr">3317 </span> <span class="subxComment"># *Elf_e_phnum = segments->write / 16 # size of a row</span> +<span id="L3316" class="LineNr">3316 </span> <span class="subxComment"># *$Elf_e_entry = get(labels, "Entry")->address</span> +<span id="L3317" class="LineNr">3317 </span> <span class="subxComment"># *$Elf_e_phnum = segments->write / 16 # size of a row</span> <span id="L3318" class="LineNr">3318 </span> <span class="subxComment"># emit-hex-array(out, Elf_header)</span> <span id="L3319" class="LineNr">3319 </span> <span class="subxComment"># write-buffered(out, "\n")</span> <span id="L3320" class="LineNr">3320 </span> <span class="subxComment">#</span> @@ -2499,7 +2499,7 @@ if ('onhashchange' in window) { <span id="L3325" class="LineNr">3325 </span> 50/push-eax <span id="L3326" class="LineNr">3326 </span> 51/push-ecx <span id="L3327" class="LineNr">3327 </span> 52/push-edx <span class="subxComment"># just because we need to call idiv</span> -<span id="L3328" class="LineNr">3328 </span> <span class="subxComment"># *Elf_e_entry = get(labels, "Entry")->address</span> +<span id="L3328" class="LineNr">3328 </span> <span class="subxComment"># *$Elf_e_entry = get(labels, "Entry")->address</span> <span id="L3329" class="LineNr">3329 </span> <span class="subxS1Comment"># . eax = labels</span> <span id="L3330" class="LineNr">3330 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0x10/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+16) to eax</span> <span id="L3331" class="LineNr">3331 </span> <span class="subxS1Comment"># . label-info/eax = get(labels, "Entry", row-size=16, "label table")</span> @@ -2509,14 +2509,14 @@ if ('onhashchange' in window) { <span id="L3335" class="LineNr">3335 </span> 68/push <span class="Constant">"Entry"</span>/imm32 <span id="L3336" class="LineNr">3336 </span> 50/push-eax <span id="L3337" class="LineNr">3337 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3338" class="LineNr">3338 </span> e8/call <a href='../081table.subx.html#L26'>get</a>/disp32 +<span id="L3338" class="LineNr">3338 </span> e8/call <a href='../081table.subx.html#L27'>get</a>/disp32 <span id="L3339" class="LineNr">3339 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3340" class="LineNr">3340 </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="L3341" class="LineNr">3341 </span> <span class="subxS1Comment"># . eax = label-info->address</span> <span id="L3342" class="LineNr">3342 </span> 8b/copy 1/mod/*+disp8 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(eax+8) to eax</span> -<span id="L3343" class="LineNr">3343 </span> <span class="subxS1Comment"># . *Elf_e_entry = eax</span> -<span id="L3344" class="LineNr">3344 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='survey.subx.html#L4686'>Elf_e_entry</a></span>/disp32 <span class="subxComment"># copy eax to *Elf_e_entry</span> -<span id="L3345" class="LineNr">3345 </span> <span class="subxComment"># *Elf_e_phnum = segments->write / 0x10</span> +<span id="L3343" class="LineNr">3343 </span> <span class="subxS1Comment"># . *$Elf_e_entry = eax</span> +<span id="L3344" class="LineNr">3344 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax $<span class="SpecialChar">Elf_e_entry</span>/disp32 <span class="subxComment"># copy eax to *$Elf_e_entry</span> +<span id="L3345" class="LineNr">3345 </span> <span class="subxComment"># *$Elf_e_phnum = segments->write / 0x10</span> <span id="L3346" class="LineNr">3346 </span> <span class="subxS1Comment"># . eax = segments</span> <span id="L3347" class="LineNr">3347 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+12) to eax</span> <span id="L3348" class="LineNr">3348 </span> <span class="subxS1Comment"># . len/eax = segments->write</span> @@ -2525,8 +2525,8 @@ if ('onhashchange' in window) { <span id="L3351" class="LineNr">3351 </span> b9/copy-to-ecx 0x10/imm32 <span id="L3352" class="LineNr">3352 </span> 31/xor 3/mod/direct 2/rm32/edx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># clear edx</span> <span id="L3353" class="LineNr">3353 </span> f7 7/subop/idiv 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> <span class="Normal"> . </span> <span class="subxComment"># divide edx:eax by ecx, storing quotient in eax and remainder in edx</span> -<span id="L3354" class="LineNr">3354 </span> <span class="subxS1Comment"># . *Elf_e_phnum = eax</span> -<span id="L3355" class="LineNr">3355 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='survey.subx.html#L4698'>Elf_e_phnum</a></span>/disp32 <span class="subxComment"># copy eax to *Elf_e_phnum</span> +<span id="L3354" class="LineNr">3354 </span> <span class="subxS1Comment"># . *$Elf_e_phnum = eax</span> +<span id="L3355" class="LineNr">3355 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax $<span class="SpecialChar">Elf_e_phnum</span>/disp32 <span class="subxComment"># copy eax to *$Elf_e_phnum</span> <span id="L3356" class="LineNr">3356 </span> <span class="subxComment"># emit-hex-array(out, Elf_header)</span> <span id="L3357" class="LineNr">3357 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3358" class="LineNr">3358 </span> 68/push <span class="SpecialChar"><a href='survey.subx.html#L4672'>Elf_header</a></span>/imm32 @@ -2555,15 +2555,15 @@ if ('onhashchange' in window) { <span id="L3381" class="LineNr">3381 </span> <span id="L3382" class="LineNr">3382 </span><span class="subxFunction">emit-elf-program-header-entry</span>: <span class="subxComment"># out : (address buffered-file), curr-segment : (address {string, segment-info})</span> <span id="L3383" class="LineNr">3383 </span> <span class="subxComment"># pseudocode:</span> -<span id="L3384" class="LineNr">3384 </span> <span class="subxComment"># *Elf_p_offset = curr-segment->file-offset</span> -<span id="L3385" class="LineNr">3385 </span> <span class="subxComment"># *Elf_p_vaddr = curr-segment->address</span> -<span id="L3386" class="LineNr">3386 </span> <span class="subxComment"># *Elf_p_paddr = curr-segment->address</span> -<span id="L3387" class="LineNr">3387 </span> <span class="subxComment"># *Elf_p_filesz = curr-segment->size</span> -<span id="L3388" class="LineNr">3388 </span> <span class="subxComment"># *Elf_p_memsz = curr-segment->size</span> +<span id="L3384" class="LineNr">3384 </span> <span class="subxComment"># *$Elf_p_offset = curr-segment->file-offset</span> +<span id="L3385" class="LineNr">3385 </span> <span class="subxComment"># *$Elf_p_vaddr = curr-segment->address</span> +<span id="L3386" class="LineNr">3386 </span> <span class="subxComment"># *$Elf_p_paddr = curr-segment->address</span> +<span id="L3387" class="LineNr">3387 </span> <span class="subxComment"># *$Elf_p_filesz = curr-segment->size</span> +<span id="L3388" class="LineNr">3388 </span> <span class="subxComment"># *$Elf_p_memsz = curr-segment->size</span> <span id="L3389" class="LineNr">3389 </span> <span class="subxComment"># if curr-segment->name == "code"</span> -<span id="L3390" class="LineNr">3390 </span> <span class="subxComment"># *Elf_p_flags = 5 # r-x</span> +<span id="L3390" class="LineNr">3390 </span> <span class="subxComment"># *$Elf_p_flags = 5 # r-x</span> <span id="L3391" class="LineNr">3391 </span> <span class="subxComment"># else</span> -<span id="L3392" class="LineNr">3392 </span> <span class="subxComment"># *Elf_p_flags = 6 # rw-</span> +<span id="L3392" class="LineNr">3392 </span> <span class="subxComment"># *$Elf_p_flags = 6 # rw-</span> <span id="L3393" class="LineNr">3393 </span> <span class="subxComment"># emit-hex-array(out, Elf_program_header_entry)</span> <span id="L3394" class="LineNr">3394 </span> <span class="subxComment"># write-buffered(out, "\n")</span> <span id="L3395" class="LineNr">3395 </span> <span class="subxComment">#</span> @@ -2575,25 +2575,25 @@ if ('onhashchange' in window) { <span id="L3401" class="LineNr">3401 </span> 56/push-esi <span id="L3402" class="LineNr">3402 </span> <span class="subxComment"># esi = curr-segment</span> <span id="L3403" class="LineNr">3403 </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="L3404" class="LineNr">3404 </span> <span class="subxComment"># *Elf_p_offset = curr-segment->file-offset</span> +<span id="L3404" class="LineNr">3404 </span> <span class="subxComment"># *$Elf_p_offset = curr-segment->file-offset</span> <span id="L3405" class="LineNr">3405 </span> <span class="subxS1Comment"># . eax = curr-segment->file-offset</span> <span id="L3406" class="LineNr">3406 </span> 8b/copy 1/mod/*+disp8 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esi+8) to eax</span> -<span id="L3407" class="LineNr">3407 </span> <span class="subxS1Comment"># . *Elf_p_offset = eax</span> -<span id="L3408" class="LineNr">3408 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='survey.subx.html#L4716'>Elf_p_offset</a></span>/disp32 <span class="subxComment"># copy eax to *Elf_p_offset</span> -<span id="L3409" class="LineNr">3409 </span> <span class="subxComment"># *Elf_p_vaddr = curr-segment->address</span> +<span id="L3407" class="LineNr">3407 </span> <span class="subxS1Comment"># . *$Elf_p_offset = eax</span> +<span id="L3408" class="LineNr">3408 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax $<span class="SpecialChar">Elf_p_offset</span>/disp32 <span class="subxComment"># copy eax to *$Elf_p_offset</span> +<span id="L3409" class="LineNr">3409 </span> <span class="subxComment"># *$Elf_p_vaddr = curr-segment->address</span> <span id="L3410" class="LineNr">3410 </span> <span class="subxS1Comment"># . eax = curr-segment->address</span> <span id="L3411" class="LineNr">3411 </span> 8b/copy 1/mod/*+disp8 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esi+4) to eax</span> -<span id="L3412" class="LineNr">3412 </span> <span class="subxS1Comment"># . *Elf_p_vaddr = eax</span> -<span id="L3413" class="LineNr">3413 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='survey.subx.html#L4718'>Elf_p_vaddr</a></span>/disp32 <span class="subxComment"># copy eax to *Elf_p_vaddr</span> -<span id="L3414" class="LineNr">3414 </span> <span class="subxComment"># *Elf_p_paddr = curr-segment->address</span> -<span id="L3415" class="LineNr">3415 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='survey.subx.html#L4720'>Elf_p_paddr</a></span>/disp32 <span class="subxComment"># copy eax to *Elf_p_paddr</span> -<span id="L3416" class="LineNr">3416 </span> <span class="subxComment"># *Elf_p_filesz = curr-segment->size</span> +<span id="L3412" class="LineNr">3412 </span> <span class="subxS1Comment"># . *$Elf_p_vaddr = eax</span> +<span id="L3413" class="LineNr">3413 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax $<span class="SpecialChar">Elf_p_vaddr</span>/disp32 <span class="subxComment"># copy eax to *$Elf_p_vaddr</span> +<span id="L3414" class="LineNr">3414 </span> <span class="subxComment"># *$Elf_p_paddr = curr-segment->address</span> +<span id="L3415" class="LineNr">3415 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax $<span class="SpecialChar">Elf_p_paddr</span>/disp32 <span class="subxComment"># copy eax to *$Elf_p_paddr</span> +<span id="L3416" class="LineNr">3416 </span> <span class="subxComment"># *$Elf_p_filesz = curr-segment->size</span> <span id="L3417" class="LineNr">3417 </span> <span class="subxS1Comment"># . eax = curr-segment->size</span> <span id="L3418" class="LineNr">3418 </span> 8b/copy 1/mod/*+disp8 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esi+12) to eax</span> -<span id="L3419" class="LineNr">3419 </span> <span class="subxS1Comment"># . *Elf_p_filesz = eax</span> -<span id="L3420" class="LineNr">3420 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='survey.subx.html#L4722'>Elf_p_filesz</a></span>/disp32 <span class="subxComment"># copy eax to *Elf_p_filesz</span> -<span id="L3421" class="LineNr">3421 </span> <span class="subxComment"># *Elf_p_memsz = curr-segment->size</span> -<span id="L3422" class="LineNr">3422 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='survey.subx.html#L4724'>Elf_p_memsz</a></span>/disp32 <span class="subxComment"># copy eax to *Elf_p_memsz</span> +<span id="L3419" class="LineNr">3419 </span> <span class="subxS1Comment"># . *$Elf_p_filesz = eax</span> +<span id="L3420" class="LineNr">3420 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax $<span class="SpecialChar">Elf_p_filesz</span>/disp32 <span class="subxComment"># copy eax to *$Elf_p_filesz</span> +<span id="L3421" class="LineNr">3421 </span> <span class="subxComment"># *$Elf_p_memsz = curr-segment->size</span> +<span id="L3422" class="LineNr">3422 </span> 89/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax $<span class="SpecialChar">Elf_p_memsz</span>/disp32 <span class="subxComment"># copy eax to *$Elf_p_memsz</span> <span id="L3423" class="LineNr">3423 </span> <span class="subxComment"># if (!string-equal?(curr-segment->name, "code") goto next check</span> <span id="L3424" class="LineNr">3424 </span> <span class="subxS1Comment"># . eax = curr-segment->name</span> <span id="L3425" class="LineNr">3425 </span> 8b/copy 0/mod/indirect 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 *esi to eax</span> @@ -2605,15 +2605,15 @@ if ('onhashchange' in window) { <span id="L3431" class="LineNr">3431 </span> e8/call <a href='../054string-equal.subx.html#L16'>string-equal?</a>/disp32 <span id="L3432" class="LineNr">3432 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3433" class="LineNr">3433 </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="L3434" class="LineNr">3434 </span> <span class="subxS1Comment"># . if (eax == 0) goto next check</span> -<span id="L3435" class="LineNr">3435 </span> 3d/compare-eax-and 0/imm32 +<span id="L3434" class="LineNr">3434 </span> <span class="subxS1Comment"># . if (eax == false) goto next check</span> +<span id="L3435" class="LineNr">3435 </span> 3d/compare-eax-and 0/imm32/false <span id="L3436" class="LineNr">3436 </span> 74/jump-if-equal $emit-elf-program-header-entry:data/disp8 -<span id="L3437" class="LineNr">3437 </span> <span class="subxComment"># *Elf_p_flags = r-x</span> -<span id="L3438" class="LineNr">3438 </span> c7 0/subop/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='survey.subx.html#L4726'>Elf_p_flags</a></span>/disp32 5/imm32 <span class="subxComment"># copy to *Elf_p_flags</span> +<span id="L3437" class="LineNr">3437 </span> <span class="subxComment"># *$Elf_p_flags = r-x</span> +<span id="L3438" class="LineNr">3438 </span> c7 0/subop/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> $<span class="SpecialChar">Elf_p_flags</span>/disp32 5/imm32 <span class="subxComment"># copy to *$Elf_p_flags</span> <span id="L3439" class="LineNr">3439 </span> eb/jump $emit-elf-program-header-entry:really-emit/disp8 <span id="L3440" class="LineNr">3440 </span><span class="Constant">$emit-elf-program-header-entry:data</span>: -<span id="L3441" class="LineNr">3441 </span> <span class="subxComment"># otherwise *Elf_p_flags = rw-</span> -<span id="L3442" class="LineNr">3442 </span> c7 0/subop/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='survey.subx.html#L4726'>Elf_p_flags</a></span>/disp32 6/imm32 <span class="subxComment"># copy to *Elf_p_flags</span> +<span id="L3441" class="LineNr">3441 </span> <span class="subxComment"># otherwise *$Elf_p_flags = rw-</span> +<span id="L3442" class="LineNr">3442 </span> c7 0/subop/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> $<span class="SpecialChar">Elf_p_flags</span>/disp32 6/imm32 <span class="subxComment"># copy to *$Elf_p_flags</span> <span id="L3443" class="LineNr">3443 </span><span class="Constant">$emit-elf-program-header-entry:really-emit</span>: <span id="L3444" class="LineNr">3444 </span> <span class="subxComment"># emit-hex-array(out, Elf_program_header_entry)</span> <span id="L3445" class="LineNr">3445 </span> <span class="subxS2Comment"># . . push args</span> @@ -2653,12 +2653,12 @@ if ('onhashchange' in window) { <span id="L3479" class="LineNr">3479 </span> 56/push-esi <span id="L3480" class="LineNr">3480 </span> <span class="subxComment"># esi = in</span> <span id="L3481" class="LineNr">3481 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 6/r32/esi 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+8) to esi</span> -<span id="L3482" class="LineNr">3482 </span> <span class="subxComment"># curr/eax = in->data + in->write</span> +<span id="L3482" class="LineNr">3482 </span> <span class="subxComment"># curr/eax = &in->data[in->write]</span> <span id="L3483" class="LineNr">3483 </span> <span class="subxS1Comment"># . eax = in->write</span> <span id="L3484" class="LineNr">3484 </span> 8b/copy 0/mod/indirect 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 *esi to eax</span> <span id="L3485" class="LineNr">3485 </span> <span class="subxS1Comment"># . eax = esi+eax+12</span> <span id="L3486" class="LineNr">3486 </span> 8d/copy-address 1/mod/*+disp8 4/rm32/sib 6/base/esi 0/index/eax <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy esi+eax+12 to eax</span> -<span id="L3487" class="LineNr">3487 </span> <span class="subxComment"># max/edx = in->data + in->length</span> +<span id="L3487" class="LineNr">3487 </span> <span class="subxComment"># max/edx = &in->data[in->length]</span> <span id="L3488" class="LineNr">3488 </span> <span class="subxS1Comment"># . edx = in->length</span> <span id="L3489" class="LineNr">3489 </span> 8b/copy 1/mod/*+disp8 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esi+8) to edx</span> <span id="L3490" class="LineNr">3490 </span> <span class="subxS1Comment"># . edx = esi+edx+12</span> @@ -2712,7 +2712,7 @@ if ('onhashchange' in window) { <span id="L3538" class="LineNr">3538 </span> 68/push <span class="Constant">"overflow in stream-add4\n"</span>/imm32 <span id="L3539" class="LineNr">3539 </span> 68/push 2/imm32/stderr <span id="L3540" class="LineNr">3540 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3541" class="LineNr">3541 </span> e8/call <a href='../050_write.subx.html#L14'>_write</a>/disp32 +<span id="L3541" class="LineNr">3541 </span> e8/call <a href='../050_write.subx.html#L34'>_write</a>/disp32 <span id="L3542" class="LineNr">3542 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3543" class="LineNr">3543 </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="L3544" class="LineNr">3544 </span> <span class="subxS1Comment"># . syscall(exit, 1)</span> @@ -2735,7 +2735,7 @@ if ('onhashchange' in window) { <span id="L3561" class="LineNr">3561 </span> <span class="subxComment"># write(*Trace-stream, s1)</span> <span id="L3562" class="LineNr">3562 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3563" class="LineNr">3563 </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> -<span id="L3564" class="LineNr">3564 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3564" class="LineNr">3564 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3565" class="LineNr">3565 </span> <span class="subxS2Comment"># . . call</span> <span id="L3566" class="LineNr">3566 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3567" class="LineNr">3567 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2743,7 +2743,7 @@ if ('onhashchange' in window) { <span id="L3569" class="LineNr">3569 </span> <span class="subxComment"># write(*Trace-stream, s2)</span> <span id="L3570" class="LineNr">3570 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3571" class="LineNr">3571 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> -<span id="L3572" class="LineNr">3572 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3572" class="LineNr">3572 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3573" class="LineNr">3573 </span> <span class="subxS2Comment"># . . call</span> <span id="L3574" class="LineNr">3574 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3575" class="LineNr">3575 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2751,7 +2751,7 @@ if ('onhashchange' in window) { <span id="L3577" class="LineNr">3577 </span> <span class="subxComment"># write(*Trace-stream, s3)</span> <span id="L3578" class="LineNr">3578 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3579" class="LineNr">3579 </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> -<span id="L3580" class="LineNr">3580 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3580" class="LineNr">3580 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3581" class="LineNr">3581 </span> <span class="subxS2Comment"># . . call</span> <span id="L3582" class="LineNr">3582 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3583" class="LineNr">3583 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2759,9 +2759,9 @@ if ('onhashchange' in window) { <span id="L3585" class="LineNr">3585 </span> <span class="subxComment"># print-int32(*Trace-stream, n4)</span> <span id="L3586" class="LineNr">3586 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3587" class="LineNr">3587 </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> -<span id="L3588" class="LineNr">3588 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3588" class="LineNr">3588 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3589" class="LineNr">3589 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3590" class="LineNr">3590 </span> e8/call <a href='../066print-int.subx.html#L177'>print-int32</a>/disp32 +<span id="L3590" class="LineNr">3590 </span> e8/call <a href='../066print-int.subx.html#L178'>print-int32</a>/disp32 <span id="L3591" class="LineNr">3591 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3592" class="LineNr">3592 </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="L3593" class="LineNr">3593 </span> <span class="subxComment"># trace(s5) # implicitly adds a newline and finalizes the trace line</span> @@ -2783,7 +2783,7 @@ if ('onhashchange' in window) { <span id="L3609" class="LineNr">3609 </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="L3610" class="LineNr">3610 </span> <span class="subxComment"># setup</span> <span id="L3611" class="LineNr">3611 </span> <span class="subxS1Comment"># . *Trace-stream->write = 0</span> -<span id="L3612" class="LineNr">3612 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> +<span id="L3612" class="LineNr">3612 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> <span id="L3613" class="LineNr">3613 </span> c7 0/subop/copy 0/mod/direct 0/rm32/eax <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"># clear *eax</span> <span id="L3614" class="LineNr">3614 </span> <span class="subxComment"># trace-sssns("A" "b" "c " 3 " e")</span> <span id="L3615" class="LineNr">3615 </span> <span class="subxS2Comment"># . . push args</span> @@ -2817,7 +2817,7 @@ if ('onhashchange' in window) { <span id="L3668" class="LineNr">3668 </span> <span class="subxComment"># write(*Trace-stream, s1)</span> <span id="L3669" class="LineNr">3669 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3670" class="LineNr">3670 </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> -<span id="L3671" class="LineNr">3671 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3671" class="LineNr">3671 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3672" class="LineNr">3672 </span> <span class="subxS2Comment"># . . call</span> <span id="L3673" class="LineNr">3673 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3674" class="LineNr">3674 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2825,15 +2825,15 @@ if ('onhashchange' in window) { <span id="L3676" class="LineNr">3676 </span> <span class="subxComment"># print-int32(*Trace-stream, n2)</span> <span id="L3677" class="LineNr">3677 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3678" class="LineNr">3678 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> -<span id="L3679" class="LineNr">3679 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3679" class="LineNr">3679 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3680" class="LineNr">3680 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3681" class="LineNr">3681 </span> e8/call <a href='../066print-int.subx.html#L177'>print-int32</a>/disp32 +<span id="L3681" class="LineNr">3681 </span> e8/call <a href='../066print-int.subx.html#L178'>print-int32</a>/disp32 <span id="L3682" class="LineNr">3682 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3683" class="LineNr">3683 </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="L3684" class="LineNr">3684 </span> <span class="subxComment"># write(*Trace-stream, s3)</span> <span id="L3685" class="LineNr">3685 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3686" class="LineNr">3686 </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> -<span id="L3687" class="LineNr">3687 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3687" class="LineNr">3687 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3688" class="LineNr">3688 </span> <span class="subxS2Comment"># . . call</span> <span id="L3689" class="LineNr">3689 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3690" class="LineNr">3690 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2841,9 +2841,9 @@ if ('onhashchange' in window) { <span id="L3692" class="LineNr">3692 </span> <span class="subxComment"># print-int32(*Trace-stream, n4)</span> <span id="L3693" class="LineNr">3693 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3694" class="LineNr">3694 </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> -<span id="L3695" class="LineNr">3695 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3695" class="LineNr">3695 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3696" class="LineNr">3696 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3697" class="LineNr">3697 </span> e8/call <a href='../066print-int.subx.html#L177'>print-int32</a>/disp32 +<span id="L3697" class="LineNr">3697 </span> e8/call <a href='../066print-int.subx.html#L178'>print-int32</a>/disp32 <span id="L3698" class="LineNr">3698 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3699" class="LineNr">3699 </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="L3700" class="LineNr">3700 </span> <span class="subxComment"># trace(s5) # implicitly adds a newline and finalizes the trace line</span> @@ -2865,7 +2865,7 @@ if ('onhashchange' in window) { <span id="L3716" class="LineNr">3716 </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="L3717" class="LineNr">3717 </span> <span class="subxComment"># setup</span> <span id="L3718" class="LineNr">3718 </span> <span class="subxS1Comment"># . *Trace-stream->write = 0</span> -<span id="L3719" class="LineNr">3719 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> +<span id="L3719" class="LineNr">3719 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> <span id="L3720" class="LineNr">3720 </span> c7 0/subop/copy 0/mod/direct 0/rm32/eax <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"># clear *eax</span> <span id="L3721" class="LineNr">3721 </span> <span class="subxComment"># trace-snsns("A " 2 " c " 3 " e")</span> <span id="L3722" class="LineNr">3722 </span> <span class="subxS2Comment"># . . push args</span> @@ -2899,7 +2899,7 @@ if ('onhashchange' in window) { <span id="L3775" class="LineNr">3775 </span> <span class="subxComment"># write(*Trace-stream, s1)</span> <span id="L3776" class="LineNr">3776 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3777" class="LineNr">3777 </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> -<span id="L3778" class="LineNr">3778 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3778" class="LineNr">3778 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3779" class="LineNr">3779 </span> <span class="subxS2Comment"># . . call</span> <span id="L3780" class="LineNr">3780 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3781" class="LineNr">3781 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2907,15 +2907,15 @@ if ('onhashchange' in window) { <span id="L3783" class="LineNr">3783 </span> <span class="subxComment"># write-slice(*Trace-stream, l2)</span> <span id="L3784" class="LineNr">3784 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3785" class="LineNr">3785 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> -<span id="L3786" class="LineNr">3786 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3786" class="LineNr">3786 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3787" class="LineNr">3787 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3788" class="LineNr">3788 </span> e8/call <a href='../072slice.subx.html#L762'>write-slice</a>/disp32 +<span id="L3788" class="LineNr">3788 </span> e8/call <a href='../072slice.subx.html#L764'>write-slice</a>/disp32 <span id="L3789" class="LineNr">3789 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3790" class="LineNr">3790 </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="L3791" class="LineNr">3791 </span> <span class="subxComment"># write(*Trace-stream, s3)</span> <span id="L3792" class="LineNr">3792 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3793" class="LineNr">3793 </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> -<span id="L3794" class="LineNr">3794 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3794" class="LineNr">3794 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3795" class="LineNr">3795 </span> <span class="subxS2Comment"># . . call</span> <span id="L3796" class="LineNr">3796 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3797" class="LineNr">3797 </span> <span class="subxS2Comment"># . . discard args</span> @@ -2923,9 +2923,9 @@ if ('onhashchange' in window) { <span id="L3799" class="LineNr">3799 </span> <span class="subxComment"># write-slice(*Trace-stream, l4)</span> <span id="L3800" class="LineNr">3800 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3801" class="LineNr">3801 </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> -<span id="L3802" class="LineNr">3802 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3802" class="LineNr">3802 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3803" class="LineNr">3803 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3804" class="LineNr">3804 </span> e8/call <a href='../072slice.subx.html#L762'>write-slice</a>/disp32 +<span id="L3804" class="LineNr">3804 </span> e8/call <a href='../072slice.subx.html#L764'>write-slice</a>/disp32 <span id="L3805" class="LineNr">3805 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3806" class="LineNr">3806 </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="L3807" class="LineNr">3807 </span> <span class="subxComment"># trace(s5) # implicitly adds a newline and finalizes the trace line</span> @@ -2947,14 +2947,14 @@ if ('onhashchange' in window) { <span id="L3823" class="LineNr">3823 </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="L3824" class="LineNr">3824 </span> <span class="subxComment"># setup</span> <span id="L3825" class="LineNr">3825 </span> <span class="subxS1Comment"># . *Trace-stream->write = 0</span> -<span id="L3826" class="LineNr">3826 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> +<span id="L3826" class="LineNr">3826 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> <span id="L3827" class="LineNr">3827 </span> c7 0/subop/copy 0/mod/direct 0/rm32/eax <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"># clear *eax</span> <span id="L3828" class="LineNr">3828 </span> <span class="subxComment"># (eax..ecx) = "b"</span> <span id="L3829" class="LineNr">3829 </span> b8/copy-to-eax <span class="Constant">"b"</span>/imm32 <span id="L3830" class="LineNr">3830 </span> 8b/copy 0/mod/indirect 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"># copy *eax to ecx</span> <span id="L3831" class="LineNr">3831 </span> 8d/copy-address 1/mod/*+disp8 4/rm32/sib 0/base/eax 1/index/ecx <span class="Normal"> . </span> 1/r32/ecx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy eax+ecx+4 to ecx</span> <span id="L3832" class="LineNr">3832 </span> 05/add-to-eax 4/imm32 -<span id="L3833" class="LineNr">3833 </span> <span class="subxComment"># var b/ebx : (address slice) = {eax, ecx}</span> +<span id="L3833" class="LineNr">3833 </span> <span class="subxComment"># var b/ebx : (ref slice) = {eax, ecx}</span> <span id="L3834" class="LineNr">3834 </span> 51/push-ecx <span id="L3835" class="LineNr">3835 </span> 50/push-eax <span id="L3836" class="LineNr">3836 </span> 89/copy 3/mod/direct 3/rm32/ebx <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 ebx</span> @@ -2963,7 +2963,7 @@ if ('onhashchange' in window) { <span id="L3839" class="LineNr">3839 </span> 8b/copy 0/mod/indirect 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"># copy *eax to ecx</span> <span id="L3840" class="LineNr">3840 </span> 8d/copy-address 1/mod/*+disp8 4/rm32/sib 0/base/eax 1/index/ecx <span class="Normal"> . </span> 1/r32/ecx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy eax+ecx+4 to ecx</span> <span id="L3841" class="LineNr">3841 </span> 05/add-to-eax 4/imm32 -<span id="L3842" class="LineNr">3842 </span> <span class="subxComment"># var d/edx : (address slice) = {eax, ecx}</span> +<span id="L3842" class="LineNr">3842 </span> <span class="subxComment"># var d/edx : (ref slice) = {eax, ecx}</span> <span id="L3843" class="LineNr">3843 </span> 51/push-ecx <span id="L3844" class="LineNr">3844 </span> 50/push-eax <span id="L3845" class="LineNr">3845 </span> 89/copy 3/mod/direct 2/rm32/edx <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 edx</span> @@ -2999,7 +2999,7 @@ if ('onhashchange' in window) { <span id="L3900" class="LineNr">3900 </span> <span class="subxComment"># write(*Trace-stream, s1)</span> <span id="L3901" class="LineNr">3901 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3902" class="LineNr">3902 </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> -<span id="L3903" class="LineNr">3903 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3903" class="LineNr">3903 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3904" class="LineNr">3904 </span> <span class="subxS2Comment"># . . call</span> <span id="L3905" class="LineNr">3905 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3906" class="LineNr">3906 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3007,15 +3007,15 @@ if ('onhashchange' in window) { <span id="L3908" class="LineNr">3908 </span> <span class="subxComment"># write-slice(*Trace-stream, l2)</span> <span id="L3909" class="LineNr">3909 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3910" class="LineNr">3910 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> -<span id="L3911" class="LineNr">3911 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3911" class="LineNr">3911 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3912" class="LineNr">3912 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3913" class="LineNr">3913 </span> e8/call <a href='../072slice.subx.html#L762'>write-slice</a>/disp32 +<span id="L3913" class="LineNr">3913 </span> e8/call <a href='../072slice.subx.html#L764'>write-slice</a>/disp32 <span id="L3914" class="LineNr">3914 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3915" class="LineNr">3915 </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="L3916" class="LineNr">3916 </span> <span class="subxComment"># write(*Trace-stream, s3)</span> <span id="L3917" class="LineNr">3917 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3918" class="LineNr">3918 </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> -<span id="L3919" class="LineNr">3919 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3919" class="LineNr">3919 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3920" class="LineNr">3920 </span> <span class="subxS2Comment"># . . call</span> <span id="L3921" class="LineNr">3921 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L3922" class="LineNr">3922 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3023,9 +3023,9 @@ if ('onhashchange' in window) { <span id="L3924" class="LineNr">3924 </span> <span class="subxComment"># print-int32(*Trace-stream, n4)</span> <span id="L3925" class="LineNr">3925 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3926" class="LineNr">3926 </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> -<span id="L3927" class="LineNr">3927 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L3927" class="LineNr">3927 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L3928" class="LineNr">3928 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3929" class="LineNr">3929 </span> e8/call <a href='../066print-int.subx.html#L177'>print-int32</a>/disp32 +<span id="L3929" class="LineNr">3929 </span> e8/call <a href='../066print-int.subx.html#L178'>print-int32</a>/disp32 <span id="L3930" class="LineNr">3930 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3931" class="LineNr">3931 </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="L3932" class="LineNr">3932 </span> <span class="subxComment"># trace(s5) # implicitly adds a newline and finalizes the trace line</span> @@ -3047,14 +3047,14 @@ if ('onhashchange' in window) { <span id="L3948" class="LineNr">3948 </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="L3949" class="LineNr">3949 </span> <span class="subxComment"># setup</span> <span id="L3950" class="LineNr">3950 </span> <span class="subxS1Comment"># . *Trace-stream->write = 0</span> -<span id="L3951" class="LineNr">3951 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> +<span id="L3951" class="LineNr">3951 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> <span id="L3952" class="LineNr">3952 </span> c7 0/subop/copy 0/mod/direct 0/rm32/eax <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"># clear *eax</span> <span id="L3953" class="LineNr">3953 </span> <span class="subxComment"># (eax..ecx) = "b"</span> <span id="L3954" class="LineNr">3954 </span> b8/copy-to-eax <span class="Constant">"b"</span>/imm32 <span id="L3955" class="LineNr">3955 </span> 8b/copy 0/mod/indirect 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"># copy *eax to ecx</span> <span id="L3956" class="LineNr">3956 </span> 8d/copy-address 1/mod/*+disp8 4/rm32/sib 0/base/eax 1/index/ecx <span class="Normal"> . </span> 1/r32/ecx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy eax+ecx+4 to ecx</span> <span id="L3957" class="LineNr">3957 </span> 05/add-to-eax 4/imm32 -<span id="L3958" class="LineNr">3958 </span> <span class="subxComment"># var b/ebx : (address slice) = {eax, ecx}</span> +<span id="L3958" class="LineNr">3958 </span> <span class="subxComment"># var b/ebx : (ref slice) = {eax, ecx}</span> <span id="L3959" class="LineNr">3959 </span> 51/push-ecx <span id="L3960" class="LineNr">3960 </span> 50/push-eax <span id="L3961" class="LineNr">3961 </span> 89/copy 3/mod/direct 3/rm32/ebx <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 ebx</span> @@ -3090,7 +3090,7 @@ if ('onhashchange' in window) { <span id="L4016" class="LineNr">4016 </span> <span class="subxComment"># write(*Trace-stream, s1)</span> <span id="L4017" class="LineNr">4017 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4018" class="LineNr">4018 </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> -<span id="L4019" class="LineNr">4019 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L4019" class="LineNr">4019 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L4020" class="LineNr">4020 </span> <span class="subxS2Comment"># . . call</span> <span id="L4021" class="LineNr">4021 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4022" class="LineNr">4022 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3098,15 +3098,15 @@ if ('onhashchange' in window) { <span id="L4024" class="LineNr">4024 </span> <span class="subxComment"># write-slice(*Trace-stream, l2)</span> <span id="L4025" class="LineNr">4025 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4026" class="LineNr">4026 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> -<span id="L4027" class="LineNr">4027 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L4027" class="LineNr">4027 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L4028" class="LineNr">4028 </span> <span class="subxS2Comment"># . . call</span> -<span id="L4029" class="LineNr">4029 </span> e8/call <a href='../072slice.subx.html#L762'>write-slice</a>/disp32 +<span id="L4029" class="LineNr">4029 </span> e8/call <a href='../072slice.subx.html#L764'>write-slice</a>/disp32 <span id="L4030" class="LineNr">4030 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4031" class="LineNr">4031 </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="L4032" class="LineNr">4032 </span> <span class="subxComment"># write(*Trace-stream, s3)</span> <span id="L4033" class="LineNr">4033 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4034" class="LineNr">4034 </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> -<span id="L4035" class="LineNr">4035 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L4035" class="LineNr">4035 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L4036" class="LineNr">4036 </span> <span class="subxS2Comment"># . . call</span> <span id="L4037" class="LineNr">4037 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4038" class="LineNr">4038 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3114,7 +3114,7 @@ if ('onhashchange' in window) { <span id="L4040" class="LineNr">4040 </span> <span class="subxComment"># write(*Trace-stream, s4)</span> <span id="L4041" class="LineNr">4041 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4042" class="LineNr">4042 </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> -<span id="L4043" class="LineNr">4043 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> +<span id="L4043" class="LineNr">4043 </span> ff 6/subop/push 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># push *Trace-stream</span> <span id="L4044" class="LineNr">4044 </span> <span class="subxS2Comment"># . . call</span> <span id="L4045" class="LineNr">4045 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4046" class="LineNr">4046 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3138,14 +3138,14 @@ if ('onhashchange' in window) { <span id="L4064" class="LineNr">4064 </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="L4065" class="LineNr">4065 </span> <span class="subxComment"># setup</span> <span id="L4066" class="LineNr">4066 </span> <span class="subxS1Comment"># . *Trace-stream->write = 0</span> -<span id="L4067" class="LineNr">4067 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L18'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> +<span id="L4067" class="LineNr">4067 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="SpecialChar"><a href='../056trace.subx.html#L17'>Trace-stream</a></span>/disp32 <span class="subxComment"># copy *Trace-stream to eax</span> <span id="L4068" class="LineNr">4068 </span> c7 0/subop/copy 0/mod/direct 0/rm32/eax <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"># clear *eax</span> <span id="L4069" class="LineNr">4069 </span> <span class="subxComment"># (eax..ecx) = "b"</span> <span id="L4070" class="LineNr">4070 </span> b8/copy-to-eax <span class="Constant">"b"</span>/imm32 <span id="L4071" class="LineNr">4071 </span> 8b/copy 0/mod/indirect 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"># copy *eax to ecx</span> <span id="L4072" class="LineNr">4072 </span> 8d/copy-address 1/mod/*+disp8 4/rm32/sib 0/base/eax 1/index/ecx <span class="Normal"> . </span> 1/r32/ecx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy eax+ecx+4 to ecx</span> <span id="L4073" class="LineNr">4073 </span> 05/add-to-eax 4/imm32 -<span id="L4074" class="LineNr">4074 </span> <span class="subxComment"># var b/ebx : (address slice) = {eax, ecx}</span> +<span id="L4074" class="LineNr">4074 </span> <span class="subxComment"># var b/ebx : (ref slice) = {eax, ecx}</span> <span id="L4075" class="LineNr">4075 </span> 51/push-ecx <span id="L4076" class="LineNr">4076 </span> 50/push-eax <span id="L4077" class="LineNr">4077 </span> 89/copy 3/mod/direct 3/rm32/ebx <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 ebx</span> @@ -3174,7 +3174,7 @@ if ('onhashchange' in window) { <span id="L4125" class="LineNr">4125 </span> 5d/pop-to-ebp <span id="L4126" class="LineNr">4126 </span> c3/return <span id="L4127" class="LineNr">4127 </span> -<span id="L4128" class="LineNr">4128 </span><span class="subxFunction">num-bytes</span>: <span class="subxComment"># line : (address stream) -> eax : int</span> +<span id="L4128" class="LineNr">4128 </span><span class="subxFunction">num-bytes</span>: <span class="subxComment"># line : (address stream byte) -> eax : int</span> <span id="L4129" class="LineNr">4129 </span> <span class="subxComment"># pseudocode:</span> <span id="L4130" class="LineNr">4130 </span> <span class="subxComment"># result = 0</span> <span id="L4131" class="LineNr">4131 </span> <span class="subxComment"># while true</span> @@ -3199,7 +3199,7 @@ if ('onhashchange' in window) { <span id="L4150" class="LineNr">4150 </span> 53/push-ebx <span id="L4151" class="LineNr">4151 </span> <span class="subxComment"># var result/eax = 0</span> <span id="L4152" class="LineNr">4152 </span> 31/xor 3/mod/direct 0/rm32/eax <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"># clear eax</span> -<span id="L4153" class="LineNr">4153 </span> <span class="subxComment"># var word-slice/ecx = {0, 0}</span> +<span id="L4153" class="LineNr">4153 </span> <span class="subxComment"># var word-slice/ecx : (ref slice)</span> <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> @@ -3232,8 +3232,8 @@ if ('onhashchange' in window) { <span id="L4247" class="LineNr">4247 </span> e8/call <a href='../072slice.subx.html#L9'>slice-empty?</a>/disp32 <span id="L4248" class="LineNr">4248 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4249" class="LineNr">4249 </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="L4250" class="LineNr">4250 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> -<span id="L4251" class="LineNr">4251 </span> 3d/compare-eax-and 0/imm32 +<span id="L4250" class="LineNr">4250 </span> <span class="subxS1Comment"># . if (eax != false) break</span> +<span id="L4251" class="LineNr">4251 </span> 3d/compare-eax-and 0/imm32/false <span id="L4252" class="LineNr">4252 </span> <span class="subxS1Comment"># . restore result now that ZF is set</span> <span id="L4253" class="LineNr">4253 </span> 58/pop-to-eax <span id="L4254" class="LineNr">4254 </span> 75/jump-if-not-equal $num-bytes:end/disp8 @@ -3269,8 +3269,8 @@ if ('onhashchange' in window) { <span id="L4284" class="LineNr">4284 </span> e8/call <a href='../072slice.subx.html#L91'>slice-equal?</a>/disp32 <span id="L4285" class="LineNr">4285 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4286" class="LineNr">4286 </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="L4287" class="LineNr">4287 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> -<span id="L4288" class="LineNr">4288 </span> 3d/compare-eax-and 0/imm32 +<span id="L4287" class="LineNr">4287 </span> <span class="subxS1Comment"># . if (eax != false) break</span> +<span id="L4288" class="LineNr">4288 </span> 3d/compare-eax-and 0/imm32/false <span id="L4289" class="LineNr">4289 </span> <span class="subxS1Comment"># . restore result now that ZF is set</span> <span id="L4290" class="LineNr">4290 </span> 58/pop-to-eax <span id="L4291" class="LineNr">4291 </span> 75/jump-if-not-equal $num-bytes:end/disp8 @@ -3282,7 +3282,7 @@ if ('onhashchange' in window) { <span id="L4297" class="LineNr">4297 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4298" class="LineNr">4298 </span> 51/push-ecx <span id="L4299" class="LineNr">4299 </span> <span class="subxS2Comment"># . . call</span> -<span id="L4300" class="LineNr">4300 </span> e8/call <a href='../083subx-widths.subx.html#L40'>compute-width-of-slice</a>/disp32 +<span id="L4300" class="LineNr">4300 </span> e8/call <a href='../083subx-widths.subx.html#L45'>compute-width-of-slice</a>/disp32 <span id="L4301" class="LineNr">4301 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4302" class="LineNr">4302 </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="L4303" class="LineNr">4303 </span> <span class="subxS1Comment"># . eax += result</span> @@ -3315,7 +3315,7 @@ if ('onhashchange' in window) { <span id="L4330" class="LineNr">4330 </span> <span class="subxComment"># setup</span> <span id="L4331" class="LineNr">4331 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L4332" class="LineNr">4332 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4333" class="LineNr">4333 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4333" class="LineNr">4333 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4334" class="LineNr">4334 </span> <span class="subxS2Comment"># . . call</span> <span id="L4335" class="LineNr">4335 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L4336" class="LineNr">4336 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3330,7 +3330,7 @@ if ('onhashchange' in window) { <span id="L4345" class="LineNr">4345 </span> <span class="subxComment"># no contents in input</span> <span id="L4346" class="LineNr">4346 </span> <span class="subxComment"># eax = num-bytes(_test-input-stream)</span> <span id="L4347" class="LineNr">4347 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4348" class="LineNr">4348 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4348" class="LineNr">4348 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4349" class="LineNr">4349 </span> <span class="subxS2Comment"># . . call</span> <span id="L4350" class="LineNr">4350 </span> e8/call <a href='survey.subx.html#L4128'>num-bytes</a>/disp32 <span id="L4351" class="LineNr">4351 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3357,7 +3357,7 @@ if ('onhashchange' in window) { <span id="L4372" class="LineNr">4372 </span> <span class="subxComment"># setup</span> <span id="L4373" class="LineNr">4373 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L4374" class="LineNr">4374 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4375" class="LineNr">4375 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4375" class="LineNr">4375 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4376" class="LineNr">4376 </span> <span class="subxS2Comment"># . . call</span> <span id="L4377" class="LineNr">4377 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L4378" class="LineNr">4378 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3373,14 +3373,14 @@ if ('onhashchange' in window) { <span id="L4388" class="LineNr">4388 </span> <span class="subxS1Comment"># . write(_test-input-stream, "# abcd")</span> <span id="L4389" class="LineNr">4389 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4390" class="LineNr">4390 </span> 68/push <span class="Constant">"# abcd"</span>/imm32 -<span id="L4391" class="LineNr">4391 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4391" class="LineNr">4391 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4392" class="LineNr">4392 </span> <span class="subxS2Comment"># . . call</span> <span id="L4393" class="LineNr">4393 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4394" class="LineNr">4394 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4395" class="LineNr">4395 </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="L4396" class="LineNr">4396 </span> <span class="subxComment"># eax = num-bytes(_test-input-stream)</span> <span id="L4397" class="LineNr">4397 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4398" class="LineNr">4398 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4398" class="LineNr">4398 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4399" class="LineNr">4399 </span> <span class="subxS2Comment"># . . call</span> <span id="L4400" class="LineNr">4400 </span> e8/call <a href='survey.subx.html#L4128'>num-bytes</a>/disp32 <span id="L4401" class="LineNr">4401 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3407,7 +3407,7 @@ if ('onhashchange' in window) { <span id="L4422" class="LineNr">4422 </span> <span class="subxComment"># setup</span> <span id="L4423" class="LineNr">4423 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L4424" class="LineNr">4424 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4425" class="LineNr">4425 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4425" class="LineNr">4425 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4426" class="LineNr">4426 </span> <span class="subxS2Comment"># . . call</span> <span id="L4427" class="LineNr">4427 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L4428" class="LineNr">4428 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3423,14 +3423,14 @@ if ('onhashchange' in window) { <span id="L4438" class="LineNr">4438 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab: # cd")</span> <span id="L4439" class="LineNr">4439 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4440" class="LineNr">4440 </span> 68/push <span class="Constant">"ab: # cd"</span>/imm32 -<span id="L4441" class="LineNr">4441 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4441" class="LineNr">4441 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4442" class="LineNr">4442 </span> <span class="subxS2Comment"># . . call</span> <span id="L4443" class="LineNr">4443 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4444" class="LineNr">4444 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4445" class="LineNr">4445 </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="L4446" class="LineNr">4446 </span> <span class="subxComment"># eax = num-bytes(_test-input-stream)</span> <span id="L4447" class="LineNr">4447 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4448" class="LineNr">4448 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4448" class="LineNr">4448 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4449" class="LineNr">4449 </span> <span class="subxS2Comment"># . . call</span> <span id="L4450" class="LineNr">4450 </span> e8/call <a href='survey.subx.html#L4128'>num-bytes</a>/disp32 <span id="L4451" class="LineNr">4451 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3457,7 +3457,7 @@ if ('onhashchange' in window) { <span id="L4472" class="LineNr">4472 </span> <span class="subxComment"># setup</span> <span id="L4473" class="LineNr">4473 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L4474" class="LineNr">4474 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4475" class="LineNr">4475 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4475" class="LineNr">4475 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4476" class="LineNr">4476 </span> <span class="subxS2Comment"># . . call</span> <span id="L4477" class="LineNr">4477 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L4478" class="LineNr">4478 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3473,14 +3473,14 @@ if ('onhashchange' in window) { <span id="L4488" class="LineNr">4488 </span> <span class="subxS1Comment"># . write(_test-input-stream, "== ab cd")</span> <span id="L4489" class="LineNr">4489 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4490" class="LineNr">4490 </span> 68/push <span class="Constant">"== ab cd"</span>/imm32 -<span id="L4491" class="LineNr">4491 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4491" class="LineNr">4491 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4492" class="LineNr">4492 </span> <span class="subxS2Comment"># . . call</span> <span id="L4493" class="LineNr">4493 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4494" class="LineNr">4494 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4495" class="LineNr">4495 </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="L4496" class="LineNr">4496 </span> <span class="subxComment"># eax = num-bytes(_test-input-stream)</span> <span id="L4497" class="LineNr">4497 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4498" class="LineNr">4498 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4498" class="LineNr">4498 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4499" class="LineNr">4499 </span> <span class="subxS2Comment"># . . call</span> <span id="L4500" class="LineNr">4500 </span> e8/call <a href='survey.subx.html#L4128'>num-bytes</a>/disp32 <span id="L4501" class="LineNr">4501 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3507,7 +3507,7 @@ if ('onhashchange' in window) { <span id="L4522" class="LineNr">4522 </span> <span class="subxComment"># setup</span> <span id="L4523" class="LineNr">4523 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L4524" class="LineNr">4524 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4525" class="LineNr">4525 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4525" class="LineNr">4525 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4526" class="LineNr">4526 </span> <span class="subxS2Comment"># . . call</span> <span id="L4527" class="LineNr">4527 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L4528" class="LineNr">4528 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3523,14 +3523,14 @@ if ('onhashchange' in window) { <span id="L4538" class="LineNr">4538 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab cd ef")</span> <span id="L4539" class="LineNr">4539 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4540" class="LineNr">4540 </span> 68/push <span class="Constant">"ab cd ef"</span>/imm32 -<span id="L4541" class="LineNr">4541 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4541" class="LineNr">4541 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4542" class="LineNr">4542 </span> <span class="subxS2Comment"># . . call</span> <span id="L4543" class="LineNr">4543 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4544" class="LineNr">4544 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4545" class="LineNr">4545 </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="L4546" class="LineNr">4546 </span> <span class="subxComment"># eax = num-bytes(_test-input-stream)</span> <span id="L4547" class="LineNr">4547 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4548" class="LineNr">4548 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4548" class="LineNr">4548 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4549" class="LineNr">4549 </span> <span class="subxS2Comment"># . . call</span> <span id="L4550" class="LineNr">4550 </span> e8/call <a href='survey.subx.html#L4128'>num-bytes</a>/disp32 <span id="L4551" class="LineNr">4551 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3557,7 +3557,7 @@ if ('onhashchange' in window) { <span id="L4572" class="LineNr">4572 </span> <span class="subxComment"># setup</span> <span id="L4573" class="LineNr">4573 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L4574" class="LineNr">4574 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4575" class="LineNr">4575 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4575" class="LineNr">4575 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4576" class="LineNr">4576 </span> <span class="subxS2Comment"># . . call</span> <span id="L4577" class="LineNr">4577 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L4578" class="LineNr">4578 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3573,14 +3573,14 @@ if ('onhashchange' in window) { <span id="L4588" class="LineNr">4588 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab cd # ef")</span> <span id="L4589" class="LineNr">4589 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4590" class="LineNr">4590 </span> 68/push <span class="Constant">"ab cd # ef"</span>/imm32 -<span id="L4591" class="LineNr">4591 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4591" class="LineNr">4591 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4592" class="LineNr">4592 </span> <span class="subxS2Comment"># . . call</span> <span id="L4593" class="LineNr">4593 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4594" class="LineNr">4594 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4595" class="LineNr">4595 </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="L4596" class="LineNr">4596 </span> <span class="subxComment"># eax = num-bytes(_test-input-stream)</span> <span id="L4597" class="LineNr">4597 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4598" class="LineNr">4598 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4598" class="LineNr">4598 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4599" class="LineNr">4599 </span> <span class="subxS2Comment"># . . call</span> <span id="L4600" class="LineNr">4600 </span> e8/call <a href='survey.subx.html#L4128'>num-bytes</a>/disp32 <span id="L4601" class="LineNr">4601 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3607,7 +3607,7 @@ if ('onhashchange' in window) { <span id="L4622" class="LineNr">4622 </span> <span class="subxComment"># setup</span> <span id="L4623" class="LineNr">4623 </span> <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span> <span id="L4624" class="LineNr">4624 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4625" class="LineNr">4625 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4625" class="LineNr">4625 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4626" class="LineNr">4626 </span> <span class="subxS2Comment"># . . call</span> <span id="L4627" class="LineNr">4627 </span> e8/call <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32 <span id="L4628" class="LineNr">4628 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3623,14 +3623,14 @@ if ('onhashchange' in window) { <span id="L4638" class="LineNr">4638 </span> <span class="subxS1Comment"># . write(_test-input-stream, "ab cd/imm32 ef")</span> <span id="L4639" class="LineNr">4639 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4640" class="LineNr">4640 </span> 68/push <span class="Constant">"ab cd/imm32 ef"</span>/imm32 -<span id="L4641" class="LineNr">4641 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4641" class="LineNr">4641 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4642" class="LineNr">4642 </span> <span class="subxS2Comment"># . . call</span> <span id="L4643" class="LineNr">4643 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L4644" class="LineNr">4644 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4645" class="LineNr">4645 </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="L4646" class="LineNr">4646 </span> <span class="subxComment"># eax = num-bytes(_test-input-stream)</span> <span id="L4647" class="LineNr">4647 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L4648" class="LineNr">4648 </span> 68/push <a href='../061read-byte.subx.html#L288'>_test-input-stream</a>/imm32 +<span id="L4648" class="LineNr">4648 </span> 68/push <a href='../061read-byte.subx.html#L287'>_test-input-stream</a>/imm32 <span id="L4649" class="LineNr">4649 </span> <span class="subxS2Comment"># . . call</span> <span id="L4650" class="LineNr">4650 </span> e8/call <a href='survey.subx.html#L4128'>num-bytes</a>/disp32 <span id="L4651" class="LineNr">4651 </span> <span class="subxS2Comment"># . . discard args</span> @@ -3652,7 +3652,7 @@ if ('onhashchange' in window) { <span id="L4667" class="LineNr">4667 </span>== data <span id="L4668" class="LineNr">4668 </span> <span id="L4669" class="LineNr">4669 </span><span class="subxComment"># This block of bytes gets copied to the start of the output ELF file, with</span> -<span id="L4670" class="LineNr">4670 </span><span class="subxComment"># some fields filled in.</span> +<span id="L4670" class="LineNr">4670 </span><span class="subxComment"># some fields (the ones with labels capitalized) filled in.</span> <span id="L4671" class="LineNr">4671 </span><span class="subxComment"># <a href="http://www.sco.com/developers/gabi/latest/ch4.eheader.html">http://www.sco.com/developers/gabi/latest/ch4.eheader.html</a></span> <span id="L4672" class="LineNr">4672 </span><span class="SpecialChar">Elf_header</span>: <span id="L4673" class="LineNr">4673 </span> <span class="subxH1Comment"># - length</span> @@ -3668,7 +3668,7 @@ if ('onhashchange' in window) { <span id="L4683" class="LineNr">4683 </span> 03 00 <span id="L4684" class="LineNr">4684 </span><span class="Constant">$e_version</span>: <span id="L4685" class="LineNr">4685 </span> 1/imm32 -<span id="L4686" class="LineNr">4686 </span><span class="SpecialChar">Elf_e_entry</span>: +<span id="L4686" class="LineNr">4686 </span><span class="Constant">$Elf_e_entry</span>: <span id="L4687" class="LineNr">4687 </span> 0x09000000/imm32 <span class="subxComment"># approximate default; must be updated</span> <span id="L4688" class="LineNr">4688 </span><span class="Constant">$e_phoff</span>: <span id="L4689" class="LineNr">4689 </span> 0x34/imm32 <span class="subxComment"># offset for the 'program header table' containing segment headers</span> @@ -3680,7 +3680,7 @@ if ('onhashchange' in window) { <span id="L4695" class="LineNr">4695 </span> 0x34 00 <span id="L4696" class="LineNr">4696 </span><span class="Constant">$e_phentsize</span>: <span id="L4697" class="LineNr">4697 </span> 0x20 00 -<span id="L4698" class="LineNr">4698 </span><span class="SpecialChar">Elf_e_phnum</span>: +<span id="L4698" class="LineNr">4698 </span><span class="Constant">$Elf_e_phnum</span>: <span id="L4699" class="LineNr">4699 </span> 00 00 <span class="subxComment"># number of segments; must be updated</span> <span id="L4700" class="LineNr">4700 </span><span class="Constant">$e_shentsize</span>: <span id="L4701" class="LineNr">4701 </span> 00 00 <span class="subxComment"># no sections</span> @@ -3698,17 +3698,17 @@ if ('onhashchange' in window) { <span id="L4713" class="LineNr">4713 </span> <span class="subxH1Comment"># - data</span> <span id="L4714" class="LineNr">4714 </span><span class="Constant">$p_type</span>: <span id="L4715" class="LineNr">4715 </span> 1/imm32/PT_LOAD -<span id="L4716" class="LineNr">4716 </span><span class="SpecialChar">Elf_p_offset</span>: +<span id="L4716" class="LineNr">4716 </span><span class="Constant">$Elf_p_offset</span>: <span id="L4717" class="LineNr">4717 </span> 0/imm32 <span class="subxComment"># byte offset in the file at which a segment begins; must be updated</span> -<span id="L4718" class="LineNr">4718 </span><span class="SpecialChar">Elf_p_vaddr</span>: +<span id="L4718" class="LineNr">4718 </span><span class="Constant">$Elf_p_vaddr</span>: <span id="L4719" class="LineNr">4719 </span> 0/imm32 <span class="subxComment"># starting address to store the segment at before running the program</span> -<span id="L4720" class="LineNr">4720 </span><span class="SpecialChar">Elf_p_paddr</span>: -<span id="L4721" class="LineNr">4721 </span> 0/imm32 <span class="subxComment"># should have same value as Elf_p_vaddr</span> -<span id="L4722" class="LineNr">4722 </span><span class="SpecialChar">Elf_p_filesz</span>: +<span id="L4720" class="LineNr">4720 </span><span class="Constant">$Elf_p_paddr</span>: +<span id="L4721" class="LineNr">4721 </span> 0/imm32 <span class="subxComment"># should have same value as $Elf_p_vaddr</span> +<span id="L4722" class="LineNr">4722 </span><span class="Constant">$Elf_p_filesz</span>: <span id="L4723" class="LineNr">4723 </span> 0/imm32 -<span id="L4724" class="LineNr">4724 </span><span class="SpecialChar">Elf_p_memsz</span>: -<span id="L4725" class="LineNr">4725 </span> 0/imm32 <span class="subxComment"># should have same value as Elf_p_filesz</span> -<span id="L4726" class="LineNr">4726 </span><span class="SpecialChar">Elf_p_flags</span>: +<span id="L4724" class="LineNr">4724 </span><span class="Constant">$Elf_p_memsz</span>: +<span id="L4725" class="LineNr">4725 </span> 0/imm32 <span class="subxComment"># should have same value as $Elf_p_filesz</span> +<span id="L4726" class="LineNr">4726 </span><span class="Constant">$Elf_p_flags</span>: <span id="L4727" class="LineNr">4727 </span> 6/imm32/rw- <span class="subxComment"># read/write/execute permissions for the segment; must be updated for the code segment</span> <span id="L4728" class="LineNr">4728 </span><span class="Constant">$p_align</span>: <span id="L4729" class="LineNr">4729 </span> <span class="subxComment"># we hold this constant; changing it will require adjusting the way we</span> |