diff options
Diffstat (limited to 'html/apps/survey.subx.html')
-rw-r--r-- | html/apps/survey.subx.html | 200 |
1 files changed, 100 insertions, 100 deletions
diff --git a/html/apps/survey.subx.html b/html/apps/survey.subx.html index c8a14067..9a6b30d1 100644 --- a/html/apps/survey.subx.html +++ b/html/apps/survey.subx.html @@ -68,7 +68,7 @@ if ('onhashchange' in window) { <span id="L5" class="LineNr"> 5 </span><span class="subxComment"># b) add segment headers with addresses and offsets correctly filled in</span> <span id="L6" class="LineNr"> 6 </span><span class="subxComment">#</span> <span id="L7" class="LineNr"> 7 </span><span class="subxComment"># To build:</span> -<span id="L8" class="LineNr"> 8 </span><span class="subxComment"># $ ./subx translate init.linux 0*.subx apps/subx-common.subx apps/survey.subx -o apps/survey</span> +<span id="L8" class="LineNr"> 8 </span><span class="subxComment"># $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/survey.subx -o apps/survey</span> <span id="L9" class="LineNr"> 9 </span><span class="subxComment">#</span> <span id="L10" class="LineNr"> 10 </span><span class="subxComment"># The expected input is a stream of bytes with segment headers, comments and</span> <span id="L11" class="LineNr"> 11 </span><span class="subxComment"># some interspersed labels.</span> @@ -110,8 +110,8 @@ if ('onhashchange' in window) { <span id="L47" class="LineNr"> 47 </span> <span id="L48" class="LineNr"> 48 </span> <span class="subxComment"># Heap = new-segment(Heap-size)</span> <span id="L49" class="LineNr"> 49 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L50" class="LineNr"> 50 </span> 68/push <span class="SpecialChar"><a href='../075array-equal.subx.html#L623'>Heap</a></span>/imm32 -<span id="L51" class="LineNr"> 51 </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">Heap-size</span>/disp32 <span class="subxComment"># push *Heap-size</span> +<span id="L50" class="LineNr"> 50 </span> 68/push <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span>/imm32 +<span id="L51" class="LineNr"> 51 </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='../069allocate.subx.html#L29'>Heap-size</a></span>/disp32 <span class="subxComment"># push *Heap-size</span> <span id="L52" class="LineNr"> 52 </span> <span class="subxS2Comment"># . . call</span> <span id="L53" class="LineNr"> 53 </span> e8/call <a href='../053new-segment.subx.html#L41'>new-segment</a>/disp32 <span id="L54" class="LineNr"> 54 </span> <span class="subxS2Comment"># . . discard args</span> @@ -125,10 +125,10 @@ if ('onhashchange' in window) { <span id="L62" class="LineNr"> 62 </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="L63" class="LineNr"> 63 </span> <span id="L64" class="LineNr"> 64 </span> <span class="subxH1Comment"># - if argc > 1 and argv[1] == "test", then return run_tests()</span> -<span id="L65" class="LineNr"> 65 </span> <span class="subxComment"># if (argc <= 1) goto run-main</span> +<span id="L65" class="LineNr"> 65 </span> <span class="subxComment"># if (argc <= 1) goto interactive</span> <span id="L66" class="LineNr"> 66 </span> 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/disp8 1/imm32 <span class="subxComment"># compare *ebp</span> -<span id="L67" class="LineNr"> 67 </span> 7e/jump-if-lesser-or-equal $run-main/disp8 -<span id="L68" class="LineNr"> 68 </span> <span class="subxComment"># if (!kernel-string-equal?(argv[1], "test")) goto run-main</span> +<span id="L67" class="LineNr"> 67 </span> 7e/jump-if-lesser-or-equal $subx-survey-main:interactive/disp8 +<span id="L68" class="LineNr"> 68 </span> <span class="subxComment"># if (!kernel-string-equal?(argv[1], "test")) goto interactive</span> <span id="L69" class="LineNr"> 69 </span> <span class="subxS1Comment"># . eax = kernel-string-equal?(argv[1], "test")</span> <span id="L70" class="LineNr"> 70 </span> <span class="subxS2Comment"># . . push args</span> <span id="L71" class="LineNr"> 71 </span> 68/push <span class="Constant">"test"</span>/imm32 @@ -137,22 +137,22 @@ if ('onhashchange' in window) { <span id="L74" class="LineNr"> 74 </span> e8/call <a href='../052kernel-string-equal.subx.html#L31'>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 run-main</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="L79" class="LineNr"> 79 </span> 74/jump-if-equal $run-main/disp8 +<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 <span id="L82" class="LineNr"> 82 </span> <span class="subxComment"># syscall(exit, *Num-test-failures)</span> <span id="L83" class="LineNr"> 83 </span> 8b/copy 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="SpecialChar"><a href='../051test.subx.html#L90'>Num-test-failures</a></span>/disp32 <span class="subxComment"># copy *Num-test-failures to ebx</span> -<span id="L84" class="LineNr"> 84 </span> eb/jump $main:end/disp8 -<span id="L85" class="LineNr"> 85 </span><span class="Constant">$run-main</span>: +<span id="L84" class="LineNr"> 84 </span> eb/jump $subx-survey-main:end/disp8 +<span id="L85" class="LineNr"> 85 </span><span class="Constant">$subx-survey-main:interactive</span>: <span id="L86" class="LineNr"> 86 </span> <span class="subxH1Comment"># - otherwise convert stdin</span> -<span id="L87" class="LineNr"> 87 </span> <span class="subxComment"># convert(Stdin, Stdout)</span> +<span id="L87" class="LineNr"> 87 </span> <span class="subxComment"># subx-survey(Stdin, Stdout)</span> <span id="L88" class="LineNr"> 88 </span> <span class="subxS2Comment"># . . push args</span> <span id="L89" class="LineNr"> 89 </span> 68/push <span class="SpecialChar"><a href='../064write-byte.subx.html#L10'>Stdout</a></span>/imm32 <span id="L90" class="LineNr"> 90 </span> 68/push <span class="SpecialChar"><a href='../061read-byte.subx.html#L14'>Stdin</a></span>/imm32 <span id="L91" class="LineNr"> 91 </span> <span class="subxS2Comment"># . . call</span> -<span id="L92" class="LineNr"> 92 </span> e8/call <a href='survey.subx.html#L116'>convert</a>/disp32 +<span id="L92" class="LineNr"> 92 </span> e8/call <a href='survey.subx.html#L116'>subx-survey</a>/disp32 <span id="L93" class="LineNr"> 93 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L94" class="LineNr"> 94 </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="L95" class="LineNr"> 95 </span><span class="CommentedCode">#? # . write-stream(2/stderr, Trace-stream)</span> @@ -165,7 +165,7 @@ if ('onhashchange' in window) { <span id="L102" class="LineNr"> 102 </span><span class="CommentedCode">#? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp</span> <span id="L103" class="LineNr"> 103 </span> <span class="subxComment"># syscall(exit, 0)</span> <span id="L104" class="LineNr"> 104 </span> bb/copy-to-ebx 0/imm32 -<span id="L105" class="LineNr"> 105 </span><span class="Constant">$main:end</span>: +<span id="L105" class="LineNr"> 105 </span><span class="Constant">$subx-survey-main:end</span>: <span id="L106" class="LineNr"> 106 </span> b8/copy-to-eax 1/imm32/exit <span id="L107" class="LineNr"> 107 </span> cd/syscall 0x80/imm8 <span id="L108" class="LineNr"> 108 </span> @@ -176,7 +176,7 @@ if ('onhashchange' in window) { <span id="L113" class="LineNr"> 113 </span><span class="subxComment"># labels: (address stream {string, label-info}) (16 bytes per row)</span> <span id="L114" class="LineNr"> 114 </span><span class="subxComment"># these are all inefficient; use sequential scans for lookups</span> <span id="L115" class="LineNr"> 115 </span> -<span id="L116" class="LineNr"> 116 </span><span class="subxFunction">convert</span>: <span class="subxComment"># infile : (address buffered-file), out : (address buffered-file) -> <void></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) -> <void></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="L119" class="LineNr"> 119 </span> <span class="subxComment"># slurp(infile, in)</span> @@ -220,19 +220,19 @@ if ('onhashchange' in window) { <span id="L157" class="LineNr"> 157 </span> <span class="subxS1Comment"># . write</span> <span id="L158" class="LineNr"> 158 </span> 68/push 0/imm32/write <span id="L159" class="LineNr"> 159 </span> 89/copy 3/mod/direct 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 4/r32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy esp to esi</span> -<span id="L160" class="Folded"> 160 </span><span class="Folded">+-- 47 lines: #? # dump labels->write --------------------------------------------------------------------------------------------------------------------</span> -<span id="L207" class="Folded"> 207 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "slurp in\n") ---------------------------------------------------------------------------------------------------------</span> +<span id="L160" class="Folded"> 160 </span><span class="Folded">+-- 47 lines: #? # dump labels->write ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L207" class="Folded"> 207 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "slurp in\n") -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L216" class="LineNr"> 216 </span> <span class="subxComment"># slurp(infile, in)</span> <span id="L217" class="LineNr"> 217 </span> <span class="subxS2Comment"># . . push args</span> <span id="L218" class="LineNr"> 218 </span> 56/push-esi <span id="L219" class="LineNr"> 219 </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="L220" class="LineNr"> 220 </span> <span class="subxS2Comment"># . . call</span> -<span id="L221" class="LineNr"> 221 </span> e8/call <a href='../077slurp.subx.html#L8'>slurp</a>/disp32 +<span id="L221" class="LineNr"> 221 </span> e8/call <a href='../082slurp.subx.html#L8'>slurp</a>/disp32 <span id="L222" class="LineNr"> 222 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L223" class="LineNr"> 223 </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="L224" class="Folded"> 224 </span><span class="Folded">+-- 46 lines: #? # dump labels->write --------------------------------------------------------------------------------------------------------------------</span> -<span id="L270" class="Folded"> 270 </span><span class="Folded">+-- 33 lines: #? # dump in -------------------------------------------------------------------------------------------------------------------------------</span> -<span id="L303" class="Folded"> 303 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-offsets\n") --------------------------------------------------------------------------------------------------</span> +<span id="L224" class="Folded"> 224 </span><span class="Folded">+-- 46 lines: #? # dump labels->write ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L270" class="Folded"> 270 </span><span class="Folded">+-- 33 lines: #? # dump in ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L303" class="Folded"> 303 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-offsets\n") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L312" class="LineNr"> 312 </span> <span class="subxComment"># compute-offsets(in, segments, labels)</span> <span id="L313" class="LineNr"> 313 </span> <span class="subxS2Comment"># . . push args</span> <span id="L314" class="LineNr"> 314 </span> 52/push-edx @@ -242,7 +242,7 @@ if ('onhashchange' in window) { <span id="L318" class="LineNr"> 318 </span> e8/call <a href='survey.subx.html#L643'>compute-offsets</a>/disp32 <span id="L319" class="LineNr"> 319 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L320" class="LineNr"> 320 </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="L321" class="Folded"> 321 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-addresses\n") ------------------------------------------------------------------------------------------------</span> +<span id="L321" class="Folded"> 321 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "compute-addresses\n") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L330" class="LineNr"> 330 </span> <span class="subxComment"># compute-addresses(segments, labels)</span> <span id="L331" class="LineNr"> 331 </span> <span class="subxS2Comment"># . . push args</span> <span id="L332" class="LineNr"> 332 </span> 52/push-edx @@ -255,12 +255,12 @@ if ('onhashchange' in window) { <span id="L339" class="LineNr"> 339 </span> <span class="subxS2Comment"># . . push args</span> <span id="L340" class="LineNr"> 340 </span> 56/push-esi <span id="L341" class="LineNr"> 341 </span> <span class="subxS2Comment"># . . call</span> -<span id="L342" class="LineNr"> 342 </span> e8/call <a href='../055stream.subx.html#L55'>rewind-stream</a>/disp32 +<span id="L342" class="LineNr"> 342 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L343" class="LineNr"> 343 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L344" class="LineNr"> 344 </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="L345" class="Folded"> 345 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-output\n") ------------------------------------------------------------------------------------------------------</span> -<span id="L354" class="Folded"> 354 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> -<span id="L380" class="Folded"> 380 </span><span class="Folded">+-- 46 lines: #? # dump labels->write --------------------------------------------------------------------------------------------------------------------</span> +<span id="L345" class="Folded"> 345 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-output\n") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L354" class="Folded"> 354 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L380" class="Folded"> 380 </span><span class="Folded">+-- 46 lines: #? # dump labels->write ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L426" class="LineNr"> 426 </span> <span class="subxComment"># emit-output(in, out, segments, labels)</span> <span id="L427" class="LineNr"> 427 </span> <span class="subxS2Comment"># . . push args</span> <span id="L428" class="LineNr"> 428 </span> 52/push-edx @@ -278,7 +278,7 @@ if ('onhashchange' in window) { <span id="L440" class="LineNr"> 440 </span> e8/call <a href='../064write-byte.subx.html#L79'>flush</a>/disp32 <span id="L441" class="LineNr"> 441 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L442" class="LineNr"> 442 </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="L443" class="LineNr"> 443 </span><span class="Constant">$convert:end</span>: +<span id="L443" class="LineNr"> 443 </span><span class="Constant">$subx-survey:end</span>: <span id="L444" class="LineNr"> 444 </span> <span class="subxS1Comment"># . reclaim locals</span> <span id="L445" class="LineNr"> 445 </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> 0x30a0/imm32 <span class="subxComment"># add to esp</span> <span id="L446" class="LineNr"> 446 </span> <span class="subxS1Comment"># . restore registers</span> @@ -290,7 +290,7 @@ if ('onhashchange' in window) { <span id="L452" class="LineNr"> 452 </span> 5d/pop-to-ebp <span id="L453" class="LineNr"> 453 </span> c3/return <span id="L454" class="LineNr"> 454 </span> -<span id="L455" class="LineNr"> 455 </span><span class="subxTest">test-convert-computes-addresses</span>: +<span id="L455" class="LineNr"> 455 </span><span class="subxTest">test-subx-survey-computes-addresses</span>: <span id="L456" class="LineNr"> 456 </span> <span class="subxComment"># input:</span> <span id="L457" class="LineNr"> 457 </span> <span class="subxComment"># == code 0x1</span> <span id="L458" class="LineNr"> 458 </span> <span class="subxComment"># Entry:</span> @@ -390,19 +390,19 @@ if ('onhashchange' in window) { <span id="L552" class="LineNr"> 552 </span> e8/call <a href='../057write.subx.html#L24'>write</a>/disp32 <span id="L553" class="LineNr"> 553 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L554" class="LineNr"> 554 </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="L555" class="LineNr"> 555 </span> <span class="subxComment"># convert(_test-input-buffered-file, _test-output-buffered-file)</span> +<span id="L555" class="LineNr"> 555 </span> <span class="subxComment"># subx-survey(_test-input-buffered-file, _test-output-buffered-file)</span> <span id="L556" class="LineNr"> 556 </span> <span class="subxS2Comment"># . . push args</span> <span id="L557" class="LineNr"> 557 </span> 68/push <a href='../064write-byte.subx.html#L332'>_test-output-buffered-file</a>/imm32 <span id="L558" class="LineNr"> 558 </span> 68/push <a href='../061read-byte.subx.html#L319'>_test-input-buffered-file</a>/imm32 <span id="L559" class="LineNr"> 559 </span> <span class="subxS2Comment"># . . call</span> -<span id="L560" class="LineNr"> 560 </span> e8/call <a href='survey.subx.html#L116'>convert</a>/disp32 +<span id="L560" class="LineNr"> 560 </span> e8/call <a href='survey.subx.html#L116'>subx-survey</a>/disp32 <span id="L561" class="LineNr"> 561 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L562" class="LineNr"> 562 </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="L563" class="LineNr"> 563 </span> <span class="subxComment"># check trace</span> -<span id="L564" class="Folded"> 564 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L564" class="Folded"> 564 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L590" class="LineNr"> 590 </span> <span class="subxS1Comment"># . check-trace-contains("label 'x' is at address 0x00001079.", msg)</span> <span id="L591" class="LineNr"> 591 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L592" class="LineNr"> 592 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-convert-computes-addresses</a>/0"</span>/imm32 +<span id="L592" class="LineNr"> 592 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-subx-survey-computes-addresses</a>/0"</span>/imm32 <span id="L593" class="LineNr"> 593 </span> 68/push <span class="Constant">"label 'x' is at address 0x00001079."</span>/imm32 <span id="L594" class="LineNr"> 594 </span> <span class="subxS2Comment"># . . call</span> <span id="L595" class="LineNr"> 595 </span> e8/call <a href='../056trace.subx.html#L249'>check-trace-contains</a>/disp32 @@ -410,7 +410,7 @@ if ('onhashchange' in window) { <span id="L597" class="LineNr"> 597 </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="L598" class="LineNr"> 598 </span> <span class="subxS1Comment"># . check-trace-contains("segment 'code' starts at address 0x00000074.", msg)</span> <span id="L599" class="LineNr"> 599 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L600" class="LineNr"> 600 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-convert-computes-addresses</a>/1"</span>/imm32 +<span id="L600" class="LineNr"> 600 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-subx-survey-computes-addresses</a>/1"</span>/imm32 <span id="L601" class="LineNr"> 601 </span> 68/push <span class="Constant">"segment 'code' starts at address 0x00000074."</span>/imm32 <span id="L602" class="LineNr"> 602 </span> <span class="subxS2Comment"># . . call</span> <span id="L603" class="LineNr"> 603 </span> e8/call <a href='../056trace.subx.html#L249'>check-trace-contains</a>/disp32 @@ -418,7 +418,7 @@ if ('onhashchange' in window) { <span id="L605" class="LineNr"> 605 </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="L606" class="LineNr"> 606 </span> <span class="subxS1Comment"># . check-trace-contains("segment 'code' has size 0x00000005.", msg)</span> <span id="L607" class="LineNr"> 607 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L608" class="LineNr"> 608 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-convert-computes-addresses</a>/2"</span>/imm32 +<span id="L608" class="LineNr"> 608 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-subx-survey-computes-addresses</a>/2"</span>/imm32 <span id="L609" class="LineNr"> 609 </span> 68/push <span class="Constant">"segment 'code' has size 0x00000005."</span>/imm32 <span id="L610" class="LineNr"> 610 </span> <span class="subxS2Comment"># . . call</span> <span id="L611" class="LineNr"> 611 </span> e8/call <a href='../056trace.subx.html#L249'>check-trace-contains</a>/disp32 @@ -426,7 +426,7 @@ if ('onhashchange' in window) { <span id="L613" class="LineNr"> 613 </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="L614" class="LineNr"> 614 </span> <span class="subxS1Comment"># . check-trace-contains("segment 'data' starts at address 0x00001079.", msg)</span> <span id="L615" class="LineNr"> 615 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L616" class="LineNr"> 616 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-convert-computes-addresses</a>/3"</span>/imm32 +<span id="L616" class="LineNr"> 616 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L455'>test-subx-survey-computes-addresses</a>/3"</span>/imm32 <span id="L617" class="LineNr"> 617 </span> 68/push <span class="Constant">"segment 'data' starts at address 0x00001079."</span>/imm32 <span id="L618" class="LineNr"> 618 </span> <span class="subxS2Comment"># . . call</span> <span id="L619" class="LineNr"> 619 </span> e8/call <a href='../056trace.subx.html#L249'>check-trace-contains</a>/disp32 @@ -528,7 +528,7 @@ if ('onhashchange' in window) { <span id="L715" class="LineNr"> 715 </span> <span class="subxS2Comment"># . . push args</span> <span id="L716" class="LineNr"> 716 </span> 68/push 1/imm32 <span id="L717" class="LineNr"> 717 </span> 68/push 0x200/imm32 -<span id="L718" class="LineNr"> 718 </span> 68/push <span class="SpecialChar"><a href='../075array-equal.subx.html#L623'>Heap</a></span>/imm32 +<span id="L718" class="LineNr"> 718 </span> 68/push <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span>/imm32 <span id="L719" class="LineNr"> 719 </span> <span class="subxS2Comment"># . . call</span> <span id="L720" class="LineNr"> 720 </span> e8/call <a href='../070new-stream.subx.html#L8'>new-stream</a>/disp32 <span id="L721" class="LineNr"> 721 </span> <span class="subxS2Comment"># . . discard args</span> @@ -551,17 +551,17 @@ if ('onhashchange' in window) { <span id="L738" class="LineNr"> 738 </span> 8b/copy 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy *ecx to eax</span> <span id="L739" class="LineNr"> 739 </span> 3d/compare-eax-and 0/imm32 <span id="L740" class="LineNr"> 740 </span> 0f 84/jump-if-equal $compute-offsets:break-line-loop/disp32 -<span id="L741" class="Folded"> 741 </span><span class="Folded">+-- 33 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L741" class="Folded"> 741 </span><span class="Folded">+-- 33 lines: #? # dump line -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L774" class="LineNr"> 774 </span><span class="Constant">$compute-offsets:word-loop</span>: <span id="L775" class="LineNr"> 775 </span> <span class="subxComment"># edx = word-slice</span> <span id="L776" class="LineNr"> 776 </span> ba/copy-to-edx <a href='survey.subx.html#L643'>compute-offsets</a>:word-slice/imm32 <span id="L777" class="LineNr"> 777 </span> <span class="subxComment"># next-word(line/ecx, word-slice/edx)</span> <span id="L778" class="LineNr"> 778 </span> 52/push-edx <span id="L779" class="LineNr"> 779 </span> 51/push-ecx -<span id="L780" class="LineNr"> 780 </span> e8/call next-word/disp32 +<span id="L780" class="LineNr"> 780 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L781" class="LineNr"> 781 </span> <span class="subxS1Comment"># . discard args</span> <span id="L782" class="LineNr"> 782 </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="L783" class="Folded"> 783 </span><span class="Folded">+-- 80 lines: #? # dump word-slice and maybe curr-segment-name -------------------------------------------------------------------------------------------</span> +<span id="L783" class="Folded"> 783 </span><span class="Folded">+-- 80 lines: #? # dump word-slice and maybe curr-segment-name ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L863" class="LineNr"> 863 </span><span class="Constant">$compute-offsets:case-empty</span>: <span id="L864" class="LineNr"> 864 </span> <span class="subxComment"># if slice-empty?(word/edx) break</span> <span id="L865" class="LineNr"> 865 </span> <span class="subxS1Comment"># . eax = slice-empty?(word/edx)</span> @@ -602,7 +602,7 @@ if ('onhashchange' in window) { <span id="L900" class="LineNr"> 900 </span> 56/push-esi <span id="L901" class="LineNr"> 901 </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="L902" class="LineNr"> 902 </span> <span class="subxS2Comment"># . . call</span> -<span id="L903" class="LineNr"> 903 </span> e8/call <a href='../078table.subx.html#L403'>get-or-insert</a>/disp32 +<span id="L903" class="LineNr"> 903 </span> e8/call <a href='../081table.subx.html#L403'>get-or-insert</a>/disp32 <span id="L904" class="LineNr"> 904 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L905" class="LineNr"> 905 </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="L906" class="LineNr"> 906 </span> <span class="subxComment"># seg->size = file-offset - seg->file-offset</span> @@ -633,16 +633,16 @@ if ('onhashchange' in window) { <span id="L931" class="LineNr"> 931 </span> <span class="subxComment"># next-word(line/ecx, segment-tmp)</span> <span id="L932" class="LineNr"> 932 </span> 68/push <a href='survey.subx.html#L643'>compute-offsets</a>:segment-tmp/imm32 <span id="L933" class="LineNr"> 933 </span> 51/push-ecx -<span id="L934" class="LineNr"> 934 </span> e8/call next-word/disp32 +<span id="L934" class="LineNr"> 934 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L935" class="LineNr"> 935 </span> <span class="subxS1Comment"># . discard args</span> <span id="L936" class="LineNr"> 936 </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="L937" class="Folded"> 937 </span><span class="Folded">+-- 47 lines: #? # dump curr-segment-name if not null (clobbering eax) -----------------------------------------------------------------------------------</span> +<span id="L937" class="Folded"> 937 </span><span class="Folded">+-- 47 lines: #? # dump curr-segment-name if not null (clobbering eax) -------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L984" class="LineNr"> 984 </span><span class="Constant">$compute-offsets:update-curr-segment-name</span>: <span id="L985" class="LineNr"> 985 </span> <span class="subxComment"># curr-segment-name = slice-to-string(segment-tmp)</span> <span id="L986" class="LineNr"> 986 </span> <span class="subxS1Comment"># . eax = slice-to-string(Heap, segment-tmp)</span> <span id="L987" class="LineNr"> 987 </span> <span class="subxS2Comment"># . . push args</span> <span id="L988" class="LineNr"> 988 </span> 68/push <a href='survey.subx.html#L643'>compute-offsets</a>:segment-tmp/imm32 -<span id="L989" class="LineNr"> 989 </span> 68/push <span class="SpecialChar"><a href='../075array-equal.subx.html#L623'>Heap</a></span>/imm32 +<span id="L989" class="LineNr"> 989 </span> 68/push <span class="SpecialChar"><a href='../069allocate.subx.html#L22'>Heap</a></span>/imm32 <span id="L990" class="LineNr"> 990 </span> <span class="subxS2Comment"># . . call</span> <span id="L991" class="LineNr"> 991 </span> e8/call <a href='../072slice.subx.html#L1015'>slice-to-string</a>/disp32 <span id="L992" class="LineNr"> 992 </span> <span class="subxS2Comment"># . . discard args</span> @@ -656,7 +656,7 @@ if ('onhashchange' in window) { <span id="L1000" class="LineNr">1000 </span> <span class="subxComment"># next-word(line/ecx, segment-tmp)</span> <span id="L1001" class="LineNr">1001 </span> 68/push <a href='survey.subx.html#L643'>compute-offsets</a>:segment-tmp/imm32 <span id="L1002" class="LineNr">1002 </span> 51/push-ecx -<span id="L1003" class="LineNr">1003 </span> e8/call next-word/disp32 +<span id="L1003" class="LineNr">1003 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L1004" class="LineNr">1004 </span> <span class="subxS1Comment"># . discard args</span> <span id="L1005" class="LineNr">1005 </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="L1006" class="LineNr">1006 </span> <span class="subxComment"># if slice-empty?(segment-tmp) abort</span> @@ -674,7 +674,7 @@ if ('onhashchange' in window) { <span id="L1018" class="LineNr">1018 </span> 56/push-esi <span id="L1019" class="LineNr">1019 </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="L1020" class="LineNr">1020 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1021" class="LineNr">1021 </span> e8/call <a href='../078table.subx.html#L403'>get-or-insert</a>/disp32 +<span id="L1021" class="LineNr">1021 </span> e8/call <a href='../081table.subx.html#L403'>get-or-insert</a>/disp32 <span id="L1022" class="LineNr">1022 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1023" class="LineNr">1023 </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="L1024" class="LineNr">1024 </span> <span class="subxS1Comment"># . ebx = eax</span> @@ -711,7 +711,7 @@ if ('onhashchange' in window) { <span id="L1055" class="LineNr">1055 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1056" class="LineNr">1056 </span> 52/push-edx <span id="L1057" class="LineNr">1057 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1058" class="LineNr">1058 </span> e8/call is-label?/disp32 +<span id="L1058" class="LineNr">1058 </span> e8/call <a href='../077subx-words.subx.html#L542'>is-label?</a>/disp32 <span id="L1059" class="LineNr">1059 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1060" class="LineNr">1060 </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="L1061" class="LineNr">1061 </span> <span class="subxS1Comment"># . if (eax == 0) goto next case</span> @@ -725,7 +725,7 @@ if ('onhashchange' in window) { <span id="L1069" class="LineNr">1069 </span> 52/push-edx <span id="L1070" class="LineNr">1070 </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="L1071" class="LineNr">1071 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1072" class="LineNr">1072 </span> e8/call <a href='../078table.subx.html#L654'>leaky-get-or-insert-slice</a>/disp32 +<span id="L1072" class="LineNr">1072 </span> e8/call <a href='../081table.subx.html#L654'>leaky-get-or-insert-slice</a>/disp32 <span id="L1073" class="LineNr">1073 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1074" class="LineNr">1074 </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="L1075" class="LineNr">1075 </span><span class="Constant">$compute-offsets:save-label-offset</span>: @@ -769,14 +769,14 @@ if ('onhashchange' in window) { <span id="L1113" class="LineNr">1113 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1114" class="LineNr">1114 </span> 52/push-edx <span id="L1115" class="LineNr">1115 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1116" class="LineNr">1116 </span> e8/call compute-width-of-slice/disp32 +<span id="L1116" class="LineNr">1116 </span> e8/call <a href='../083subx-widths.subx.html#L40'>compute-width-of-slice</a>/disp32 <span id="L1117" class="LineNr">1117 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1118" class="LineNr">1118 </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="L1119" class="LineNr">1119 </span> <span class="subxComment"># segment-offset += width</span> <span id="L1120" class="LineNr">1120 </span> 01/add 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <a href='survey.subx.html#L643'>compute-offsets</a>:segment-offset/disp32 <span class="subxComment"># add eax to *segment-offset</span> <span id="L1121" class="LineNr">1121 </span> <span class="subxComment"># file-offset += width</span> <span id="L1122" class="LineNr">1122 </span> 01/add 0/mod/indirect 5/rm32/.disp32 <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <a href='survey.subx.html#L643'>compute-offsets</a>:file-offset/disp32 <span class="subxComment"># add eax to *file-offset</span> -<span id="L1123" class="Folded">1123 </span><span class="Folded">+-- 47 lines: #? # dump segment-offset -------------------------------------------------------------------------------------------------------------------</span> +<span id="L1123" class="Folded">1123 </span><span class="Folded">+-- 47 lines: #? # dump segment-offset ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1170" class="LineNr">1170 </span> e9/jump $compute-offsets:word-loop/disp32 <span id="L1171" class="LineNr">1171 </span><span class="Constant">$compute-offsets:break-line-loop</span>: <span id="L1172" class="LineNr">1172 </span> <span class="subxComment"># seg/eax = get-or-insert(segments, curr-segment-name, row-size=16)</span> @@ -785,7 +785,7 @@ if ('onhashchange' in window) { <span id="L1175" class="LineNr">1175 </span> 56/push-esi <span id="L1176" class="LineNr">1176 </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="L1177" class="LineNr">1177 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1178" class="LineNr">1178 </span> e8/call <a href='../078table.subx.html#L403'>get-or-insert</a>/disp32 +<span id="L1178" class="LineNr">1178 </span> e8/call <a href='../081table.subx.html#L403'>get-or-insert</a>/disp32 <span id="L1179" class="LineNr">1179 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1180" class="LineNr">1180 </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="L1181" class="LineNr">1181 </span> <span class="subxComment"># seg->size = file-offset - seg->file-offset</span> @@ -940,7 +940,7 @@ if ('onhashchange' in window) { <span id="L1330" class="LineNr">1330 </span> e8/call <a href='survey.subx.html#L643'>compute-offsets</a>/disp32 <span id="L1331" class="LineNr">1331 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1332" class="LineNr">1332 </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="L1333" class="Folded">1333 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L1333" class="Folded">1333 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1359" class="LineNr">1359 </span> <span class="subxComment"># check trace</span> <span id="L1360" class="LineNr">1360 </span> <span class="subxS1Comment"># . check-trace-contains("segment 'code' is at file offset 0x00000000.", msg)</span> <span id="L1361" class="LineNr">1361 </span> <span class="subxS2Comment"># . . push args</span> @@ -1085,7 +1085,7 @@ if ('onhashchange' in window) { <span id="L1500" class="LineNr">1500 </span> 05/add-to-eax 0x10/imm32 <span id="L1501" class="LineNr">1501 </span> eb/jump $compute-addresses:segment-loop/disp8 <span id="L1502" class="LineNr">1502 </span><span class="Constant">$compute-addresses:segment-break</span>: -<span id="L1503" class="Folded">1503 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L1503" class="Folded">1503 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1529" class="LineNr">1529 </span> <span class="subxComment"># esi = labels</span> <span id="L1530" class="LineNr">1530 </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="L1531" class="LineNr">1531 </span> <span class="subxComment"># lrow/eax = labels->data</span> @@ -1097,10 +1097,10 @@ if ('onhashchange' in window) { <span id="L1537" class="LineNr">1537 </span> <span class="subxComment"># if (lrow >= max) break</span> <span id="L1538" class="LineNr">1538 </span> 39/compare 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># compare eax with ecx</span> <span id="L1539" class="LineNr">1539 </span> 0f 83/jump-if-greater-or-equal-unsigned $compute-addresses:end/disp32 -<span id="L1540" class="Folded">1540 </span><span class="Folded">+-- 26 lines: #? # dump lrow->key ------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1540" class="Folded">1540 </span><span class="Folded">+-- 26 lines: #? # dump lrow->key --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1566" class="LineNr">1566 </span> <span class="subxComment"># seg-name/edx = lrow->segment-name</span> <span id="L1567" class="LineNr">1567 </span> 8b/copy 1/mod/*+disp8 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 2/r32/edx 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *eax to edx</span> -<span id="L1568" class="Folded">1568 </span><span class="Folded">+-- 26 lines: #? # dump seg-name -------------------------------------------------------------------------------------------------------------------------</span> +<span id="L1568" class="Folded">1568 </span><span class="Folded">+-- 26 lines: #? # dump seg-name ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1594" class="LineNr">1594 </span> <span class="subxComment"># label-seg/edx : (address segment-info) = get(segments, seg-name, row-size=16, "segment table")</span> <span id="L1595" class="LineNr">1595 </span> <span class="subxS1Comment"># . save eax</span> <span id="L1596" class="LineNr">1596 </span> 50/push-eax @@ -1111,7 +1111,7 @@ if ('onhashchange' in window) { <span id="L1601" class="LineNr">1601 </span> 52/push-edx <span id="L1602" class="LineNr">1602 </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="L1603" class="LineNr">1603 </span> <span class="subxS2Comment"># . . call</span> -<span id="L1604" class="LineNr">1604 </span> e8/call <a href='../078table.subx.html#L26'>get</a>/disp32 +<span id="L1604" class="LineNr">1604 </span> e8/call <a href='../081table.subx.html#L26'>get</a>/disp32 <span id="L1605" class="LineNr">1605 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1606" class="LineNr">1606 </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="L1607" class="LineNr">1607 </span> <span class="subxS1Comment"># . edx = eax</span> @@ -1244,7 +1244,7 @@ if ('onhashchange' in window) { <span id="L1734" class="LineNr">1734 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1735" class="LineNr">1735 </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="L1736" class="LineNr">1736 </span> <span class="subxComment"># checks</span> -<span id="L1737" class="Folded">1737 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L1737" class="Folded">1737 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1763" class="LineNr">1763 </span> <span class="subxS1Comment"># . check-trace-contains("segment 'a' starts at address 0x00001094.", msg)</span> <span id="L1764" class="LineNr">1764 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1765" class="LineNr">1765 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L1644'>test-compute-addresses</a>/0"</span>/imm32 @@ -1405,7 +1405,7 @@ if ('onhashchange' in window) { <span id="L1920" class="LineNr">1920 </span> <span class="subxS1Comment"># . prolog</span> <span id="L1921" class="LineNr">1921 </span> 55/push-ebp <span id="L1922" class="LineNr">1922 </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="L1923" class="Folded">1923 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-headers\n") -----------------------------------------------------------------------------------------------------</span> +<span id="L1923" class="Folded">1923 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-headers\n") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1932" class="LineNr">1932 </span> <span class="subxComment"># emit-headers(out, segments, labels)</span> <span id="L1933" class="LineNr">1933 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1934" class="LineNr">1934 </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> @@ -1415,7 +1415,7 @@ if ('onhashchange' in window) { <span id="L1938" class="LineNr">1938 </span> e8/call <a href='survey.subx.html#L3223'>emit-headers</a>/disp32 <span id="L1939" class="LineNr">1939 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L1940" class="LineNr">1940 </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="L1941" class="Folded">1941 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segments\n") ----------------------------------------------------------------------------------------------------</span> +<span id="L1941" class="Folded">1941 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segments\n") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L1950" class="LineNr">1950 </span> <span class="subxComment"># emit-segments(in, out, segments, labels)</span> <span id="L1951" class="LineNr">1951 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1952" class="LineNr">1952 </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> @@ -1529,7 +1529,7 @@ if ('onhashchange' in window) { <span id="L2060" class="LineNr">2060 </span> e8/call <a href='../071read-line.subx.html#L223'>read-line</a>/disp32 <span id="L2061" class="LineNr">2061 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2062" class="LineNr">2062 </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="L2063" class="Folded">2063 </span><span class="Folded">+-- 33 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2063" class="Folded">2063 </span><span class="Folded">+-- 33 lines: #? # dump line -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2096" class="LineNr">2096 </span><span class="Constant">$emit-segments:check-for-end-of-input</span>: <span id="L2097" class="LineNr">2097 </span> <span class="subxComment"># if (line->write == 0) break</span> <span id="L2098" class="LineNr">2098 </span> 81 7/subop/compare 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32 <span class="subxComment"># compare *ecx</span> @@ -1550,10 +1550,10 @@ if ('onhashchange' in window) { <span id="L2113" class="LineNr">2113 </span> 52/push-edx <span id="L2114" class="LineNr">2114 </span> 51/push-ecx <span id="L2115" class="LineNr">2115 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2116" class="LineNr">2116 </span> e8/call next-word/disp32 +<span id="L2116" class="LineNr">2116 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L2117" class="LineNr">2117 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2118" class="LineNr">2118 </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="L2119" class="Folded">2119 </span><span class="Folded">+-- 33 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L2119" class="Folded">2119 </span><span class="Folded">+-- 33 lines: #? # dump word-slice -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2152" class="LineNr">2152 </span><span class="Constant">$emit-segments:check-for-end-of-line</span>: <span id="L2153" class="LineNr">2153 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L2154" class="LineNr">2154 </span> <span class="subxS1Comment"># . eax = slice-empty?(word-slice)</span> @@ -1582,7 +1582,7 @@ if ('onhashchange' in window) { <span id="L2177" class="LineNr">2177 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2178" class="LineNr">2178 </span> 52/push-edx <span id="L2179" class="LineNr">2179 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2180" class="LineNr">2180 </span> e8/call is-label?/disp32 +<span id="L2180" class="LineNr">2180 </span> e8/call <a href='../077subx-words.subx.html#L542'>is-label?</a>/disp32 <span id="L2181" class="LineNr">2181 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2182" class="LineNr">2182 </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="L2183" class="LineNr">2183 </span> <span class="subxS1Comment"># . if (eax != 0) break</span> @@ -1619,7 +1619,7 @@ if ('onhashchange' in window) { <span id="L2214" class="LineNr">2214 </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="L2215" class="LineNr">2215 </span> <span class="subxComment"># write-buffered(out, " ")</span> <span id="L2216" class="LineNr">2216 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L2217" class="LineNr">2217 </span> 68/push <span class="Constant">" "</span>/imm32 +<span id="L2217" class="LineNr">2217 </span> 68/push <span class="SpecialChar"><a href='../051test.subx.html#L94'>Space</a></span>/imm32 <span id="L2218" class="LineNr">2218 </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="L2219" class="LineNr">2219 </span> <span class="subxS2Comment"># . . call</span> <span id="L2220" class="LineNr">2220 </span> e8/call <a href='../065write-buffered.subx.html#L8'>write-buffered</a>/disp32 @@ -1639,7 +1639,7 @@ if ('onhashchange' in window) { <span id="L2234" class="LineNr">2234 </span> e8/call <a href='../073next-token.subx.html#L163'>next-token-from-slice</a>/disp32 <span id="L2235" class="LineNr">2235 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2236" class="LineNr">2236 </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="L2237" class="Folded">2237 </span><span class="Folded">+-- 33 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L2237" class="Folded">2237 </span><span class="Folded">+-- 33 lines: #? # dump word-slice -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2270" class="LineNr">2270 </span> <span class="subxComment"># info/esi = get-slice(labels, datum, row-size=16, "label table")</span> <span id="L2271" class="LineNr">2271 </span> <span class="subxS1Comment"># . eax = get-slice(labels, datum, row-size=16, "label table")</span> <span id="L2272" class="LineNr">2272 </span> <span class="subxS2Comment"># . . push args</span> @@ -1648,13 +1648,13 @@ if ('onhashchange' in window) { <span id="L2275" class="LineNr">2275 </span> 57/push-edi <span id="L2276" class="LineNr">2276 </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="L2277" class="LineNr">2277 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2278" class="LineNr">2278 </span> e8/call <a href='../078table.subx.html#L200'>get-slice</a>/disp32 +<span id="L2278" class="LineNr">2278 </span> e8/call <a href='../081table.subx.html#L200'>get-slice</a>/disp32 <span id="L2279" class="LineNr">2279 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2280" class="LineNr">2280 </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="L2281" class="LineNr">2281 </span> <span class="subxS1Comment"># . esi = eax</span> <span id="L2282" class="LineNr">2282 </span> 89/copy 3/mod/direct 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy eax to esi</span> <span id="L2283" class="LineNr">2283 </span><span class="Constant">$emit-segments:check-global-variable</span>: -<span id="L2284" class="Folded">2284 </span><span class="Folded">+-- 26 lines: #? # dump info->segment-name ---------------------------------------------------------------------------------------------------------------</span> +<span id="L2284" class="Folded">2284 </span><span class="Folded">+-- 26 lines: #? # dump info->segment-name -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2310" class="LineNr">2310 </span> <span class="subxComment"># if string-equal?(info->segment-name, "code") goto code label checks</span> <span id="L2311" class="LineNr">2311 </span> <span class="subxS1Comment"># . eax = string-equal?(info->segment-name, "code")</span> <span id="L2312" class="LineNr">2312 </span> <span class="subxS2Comment"># . . push args</span> @@ -1674,7 +1674,7 @@ if ('onhashchange' in window) { <span id="L2326" class="LineNr">2326 </span> 68/push <span class="Constant">"disp8"</span>/imm32 <span id="L2327" class="LineNr">2327 </span> 52/push-edx <span id="L2328" class="LineNr">2328 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2329" class="LineNr">2329 </span> e8/call has-metadata?/disp32 +<span id="L2329" class="LineNr">2329 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2330" class="LineNr">2330 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2331" class="LineNr">2331 </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="L2332" class="LineNr">2332 </span> <span class="subxS1Comment"># . if (eax != 0) abort</span> @@ -1687,7 +1687,7 @@ if ('onhashchange' in window) { <span id="L2339" class="LineNr">2339 </span> 68/push <span class="Constant">"imm8"</span>/imm32 <span id="L2340" class="LineNr">2340 </span> 52/push-edx <span id="L2341" class="LineNr">2341 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2342" class="LineNr">2342 </span> e8/call has-metadata?/disp32 +<span id="L2342" class="LineNr">2342 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2343" class="LineNr">2343 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2344" class="LineNr">2344 </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="L2345" class="LineNr">2345 </span> <span class="subxS1Comment"># . if (eax != 0) abort</span> @@ -1700,7 +1700,7 @@ if ('onhashchange' in window) { <span id="L2352" class="LineNr">2352 </span> ff 6/subop/push 1/mod/*+disp8 6/rm32/esi <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 *(esi+8)</span> <span id="L2353" class="LineNr">2353 </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="L2354" class="LineNr">2354 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2355" class="LineNr">2355 </span> e8/call emit-hex/disp32 +<span id="L2355" class="LineNr">2355 </span> e8/call <a href='../078emit-hex.subx.html#L7'>emit-hex</a>/disp32 <span id="L2356" class="LineNr">2356 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2357" class="LineNr">2357 </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="L2358" class="LineNr">2358 </span> <span class="subxComment"># continue</span> @@ -1712,7 +1712,7 @@ if ('onhashchange' in window) { <span id="L2364" class="LineNr">2364 </span> 68/push <span class="Constant">"imm8"</span>/imm32 <span id="L2365" class="LineNr">2365 </span> 52/push-edx <span id="L2366" class="LineNr">2366 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2367" class="LineNr">2367 </span> e8/call has-metadata?/disp32 +<span id="L2367" class="LineNr">2367 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2368" class="LineNr">2368 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2369" class="LineNr">2369 </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="L2370" class="LineNr">2370 </span> <span class="subxS1Comment"># . if (eax != 0) abort</span> @@ -1725,13 +1725,13 @@ if ('onhashchange' in window) { <span id="L2377" class="LineNr">2377 </span> 68/push <span class="Constant">"imm32"</span>/imm32 <span id="L2378" class="LineNr">2378 </span> 52/push-edx <span id="L2379" class="LineNr">2379 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2380" class="LineNr">2380 </span> e8/call has-metadata?/disp32 +<span id="L2380" class="LineNr">2380 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2381" class="LineNr">2381 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2382" class="LineNr">2382 </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="L2383" class="LineNr">2383 </span> <span class="subxS1Comment"># . if (eax == 0) goto next check</span> <span id="L2384" class="LineNr">2384 </span> 3d/compare-eax-and 0/imm32 <span id="L2385" class="LineNr">2385 </span> 74/jump-if-equal $emit-segments:check-code-label-for-disp8/disp8 -<span id="L2386" class="Folded">2386 </span><span class="Folded">+-- 33 lines: #? # dump info->address --------------------------------------------------------------------------------------------------------------------</span> +<span id="L2386" class="Folded">2386 </span><span class="Folded">+-- 33 lines: #? # dump info->address ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2419" class="LineNr">2419 </span><span class="Constant">$emit-segments:emit-code-label-imm32</span>: <span id="L2420" class="LineNr">2420 </span> <span class="subxComment"># emit-hex(out, info->address, 4)</span> <span id="L2421" class="LineNr">2421 </span> <span class="subxS2Comment"># . . push args</span> @@ -1739,7 +1739,7 @@ if ('onhashchange' in window) { <span id="L2423" class="LineNr">2423 </span> ff 6/subop/push 1/mod/*+disp8 6/rm32/esi <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 *(esi+8)</span> <span id="L2424" class="LineNr">2424 </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="L2425" class="LineNr">2425 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2426" class="LineNr">2426 </span> e8/call emit-hex/disp32 +<span id="L2426" class="LineNr">2426 </span> e8/call <a href='../078emit-hex.subx.html#L7'>emit-hex</a>/disp32 <span id="L2427" class="LineNr">2427 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2428" class="LineNr">2428 </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="L2429" class="LineNr">2429 </span> <span class="subxComment"># continue</span> @@ -1751,7 +1751,7 @@ if ('onhashchange' in window) { <span id="L2435" class="LineNr">2435 </span> 68/push <span class="Constant">"disp8"</span>/imm32 <span id="L2436" class="LineNr">2436 </span> 52/push-edx <span id="L2437" class="LineNr">2437 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2438" class="LineNr">2438 </span> e8/call has-metadata?/disp32 +<span id="L2438" class="LineNr">2438 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2439" class="LineNr">2439 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2440" class="LineNr">2440 </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="L2441" class="LineNr">2441 </span> <span class="subxS1Comment"># . if (eax == 0) goto next check</span> @@ -1766,7 +1766,7 @@ if ('onhashchange' in window) { <span id="L2450" class="LineNr">2450 </span> 50/push-eax <span id="L2451" class="LineNr">2451 </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="L2452" class="LineNr">2452 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2453" class="LineNr">2453 </span> e8/call emit-hex/disp32 +<span id="L2453" class="LineNr">2453 </span> e8/call <a href='../078emit-hex.subx.html#L7'>emit-hex</a>/disp32 <span id="L2454" class="LineNr">2454 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2455" class="LineNr">2455 </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="L2456" class="LineNr">2456 </span> <span class="subxComment"># continue</span> @@ -1778,7 +1778,7 @@ if ('onhashchange' in window) { <span id="L2462" class="LineNr">2462 </span> 68/push <span class="Constant">"disp32"</span>/imm32 <span id="L2463" class="LineNr">2463 </span> 52/push-edx <span id="L2464" class="LineNr">2464 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2465" class="LineNr">2465 </span> e8/call has-metadata?/disp32 +<span id="L2465" class="LineNr">2465 </span> e8/call <a href='../077subx-words.subx.html#L8'>has-metadata?</a>/disp32 <span id="L2466" class="LineNr">2466 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2467" class="LineNr">2467 </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="L2468" class="LineNr">2468 </span> <span class="subxS1Comment"># . if (eax == 0) abort</span> @@ -1793,7 +1793,7 @@ if ('onhashchange' in window) { <span id="L2477" class="LineNr">2477 </span> 50/push-eax <span id="L2478" class="LineNr">2478 </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="L2479" class="LineNr">2479 </span> <span class="subxS2Comment"># . . call</span> -<span id="L2480" class="LineNr">2480 </span> e8/call emit-hex/disp32 +<span id="L2480" class="LineNr">2480 </span> e8/call <a href='../078emit-hex.subx.html#L7'>emit-hex</a>/disp32 <span id="L2481" class="LineNr">2481 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2482" class="LineNr">2482 </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="L2483" class="LineNr">2483 </span> <span class="subxComment"># continue</span> @@ -2054,7 +2054,7 @@ if ('onhashchange' in window) { <span id="L2738" class="LineNr">2738 </span> e8/call <a href='../064write-byte.subx.html#L79'>flush</a>/disp32 <span id="L2739" class="LineNr">2739 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2740" class="LineNr">2740 </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="L2741" class="Folded">2741 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2741" class="Folded">2741 </span><span class="Folded">+-- 33 lines: #? # dump output -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2774" class="LineNr">2774 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ab cd ef gh ", msg)</span> <span id="L2775" class="LineNr">2775 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2776" class="LineNr">2776 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L2572'>test-emit-segments-global-variable</a>/0"</span>/imm32 @@ -2235,7 +2235,7 @@ if ('onhashchange' in window) { <span id="L2951" class="LineNr">2951 </span> e8/call <a href='../064write-byte.subx.html#L79'>flush</a>/disp32 <span id="L2952" class="LineNr">2952 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L2953" class="LineNr">2953 </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="L2954" class="Folded">2954 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L2954" class="Folded">2954 </span><span class="Folded">+-- 33 lines: #? # dump output -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L2987" class="LineNr">2987 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ab cd ", msg)</span> <span id="L2988" class="LineNr">2988 </span> <span class="subxS2Comment"># . . push args</span> <span id="L2989" class="LineNr">2989 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L2815'>test-emit-segments-code-label</a>/0"</span>/imm32 @@ -2407,7 +2407,7 @@ if ('onhashchange' in window) { <span id="L3155" class="LineNr">3155 </span> e8/call <a href='../064write-byte.subx.html#L79'>flush</a>/disp32 <span id="L3156" class="LineNr">3156 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3157" class="LineNr">3157 </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="L3158" class="Folded">3158 </span><span class="Folded">+-- 33 lines: #? # dump output ---------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3158" class="Folded">3158 </span><span class="Folded">+-- 33 lines: #? # dump output -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3191" class="LineNr">3191 </span> <span class="subxS1Comment"># . check-next-stream-line-equal(_test-output-stream, "ab cd ", msg)</span> <span id="L3192" class="LineNr">3192 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3193" class="LineNr">3193 </span> 68/push <span class="Constant">"F - <a href='survey.subx.html#L3019'>test-emit-segments-code-label-absolute</a>/0"</span>/imm32 @@ -2456,7 +2456,7 @@ if ('onhashchange' in window) { <span id="L3236" class="LineNr">3236 </span> <span class="subxS1Comment"># . save registers</span> <span id="L3237" class="LineNr">3237 </span> 50/push-eax <span id="L3238" class="LineNr">3238 </span> 51/push-ecx -<span id="L3239" class="Folded">3239 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-elf-header\n") --------------------------------------------------------------------------------------------------</span> +<span id="L3239" class="Folded">3239 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-elf-header\n") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3248" class="LineNr">3248 </span> <span class="subxComment"># emit-elf-header(out, segments, labels)</span> <span id="L3249" class="LineNr">3249 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3250" class="LineNr">3250 </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> @@ -2478,8 +2478,8 @@ if ('onhashchange' in window) { <span id="L3266" class="LineNr">3266 </span> <span class="subxComment"># if (curr-segment >= max) break</span> <span id="L3267" class="LineNr">3267 </span> 39/compare 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># compare eax with ecx</span> <span id="L3268" class="LineNr">3268 </span> 0f 83/jump-if-greater-or-equal-unsigned $emit-headers:end/disp32 -<span id="L3269" class="Folded">3269 </span><span class="Folded">+-- 69 lines: #? # dump curr-segment->name ---------------------------------------------------------------------------------------------------------------</span> -<span id="L3338" class="Folded">3338 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segment-header\n") ----------------------------------------------------------------------------------------------</span> +<span id="L3269" class="Folded">3269 </span><span class="Folded">+-- 69 lines: #? # dump curr-segment->name -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> +<span id="L3338" class="Folded">3338 </span><span class="Folded">+-- 9 lines: #? # write(2/stderr, "emit-segment-header\n") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3347" class="LineNr">3347 </span> <span class="subxComment"># emit-elf-program-header-entry(out, curr-segment)</span> <span id="L3348" class="LineNr">3348 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3349" class="LineNr">3349 </span> 50/push-eax @@ -2490,7 +2490,7 @@ if ('onhashchange' in window) { <span id="L3354" class="LineNr">3354 </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="L3355" class="LineNr">3355 </span> <span class="subxComment"># curr-segment += 16 # size of a row</span> <span id="L3356" class="LineNr">3356 </span> 81 0/subop/add 3/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> 0x10/imm32 <span class="subxComment"># add to eax</span> -<span id="L3357" class="LineNr">3357 </span> e9/jump $emit-headers:loop/disp32 +<span id="L3357" class="LineNr">3357 </span> e9/jump $emit-headers:<span class="Constant">loop</span>/disp32 <span id="L3358" class="LineNr">3358 </span><span class="Constant">$emit-headers:end</span>: <span id="L3359" class="LineNr">3359 </span> <span class="subxS1Comment"># . restore registers</span> <span id="L3360" class="LineNr">3360 </span> 59/pop-to-ecx @@ -2524,7 +2524,7 @@ if ('onhashchange' in window) { <span id="L3388" class="LineNr">3388 </span> 68/push <span class="Constant">"Entry"</span>/imm32 <span id="L3389" class="LineNr">3389 </span> 50/push-eax <span id="L3390" class="LineNr">3390 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3391" class="LineNr">3391 </span> e8/call <a href='../078table.subx.html#L26'>get</a>/disp32 +<span id="L3391" class="LineNr">3391 </span> e8/call <a href='../081table.subx.html#L26'>get</a>/disp32 <span id="L3392" class="LineNr">3392 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3393" class="LineNr">3393 </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="L3394" class="LineNr">3394 </span> <span class="subxS1Comment"># . eax = label-info->address</span> @@ -2547,12 +2547,12 @@ if ('onhashchange' in window) { <span id="L3411" class="LineNr">3411 </span> 68/push <span class="SpecialChar"><a href='survey.subx.html#L4731'>Elf_header</a></span>/imm32 <span id="L3412" class="LineNr">3412 </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="L3413" class="LineNr">3413 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3414" class="LineNr">3414 </span> e8/call emit-hex-array/disp32 +<span id="L3414" class="LineNr">3414 </span> e8/call <a href='../084emit-hex-array.subx.html#L7'>emit-hex-array</a>/disp32 <span id="L3415" class="LineNr">3415 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3416" class="LineNr">3416 </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="L3417" class="LineNr">3417 </span> <span class="subxComment"># write-buffered(out, "\n")</span> <span id="L3418" class="LineNr">3418 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L3419" class="LineNr">3419 </span> 68/push <span class="Constant">"\n"</span>/imm32 +<span id="L3419" class="LineNr">3419 </span> 68/push <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>/imm32 <span id="L3420" class="LineNr">3420 </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="L3421" class="LineNr">3421 </span> <span class="subxS2Comment"># . . call</span> <span id="L3422" class="LineNr">3422 </span> e8/call <a href='../065write-buffered.subx.html#L8'>write-buffered</a>/disp32 @@ -2635,12 +2635,12 @@ if ('onhashchange' in window) { <span id="L3499" class="LineNr">3499 </span> 68/push <span class="SpecialChar"><a href='survey.subx.html#L4769'>Elf_program_header_entry</a></span>/imm32 <span id="L3500" class="LineNr">3500 </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="L3501" class="LineNr">3501 </span> <span class="subxS2Comment"># . . call</span> -<span id="L3502" class="LineNr">3502 </span> e8/call emit-hex-array/disp32 +<span id="L3502" class="LineNr">3502 </span> e8/call <a href='../084emit-hex-array.subx.html#L7'>emit-hex-array</a>/disp32 <span id="L3503" class="LineNr">3503 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3504" class="LineNr">3504 </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="L3505" class="LineNr">3505 </span> <span class="subxComment"># write-buffered(out, "\n")</span> <span id="L3506" class="LineNr">3506 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L3507" class="LineNr">3507 </span> 68/push <span class="Constant">"\n"</span>/imm32 +<span id="L3507" class="LineNr">3507 </span> 68/push <span class="SpecialChar"><a href='../051test.subx.html#L83'>Newline</a></span>/imm32 <span id="L3508" class="LineNr">3508 </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="L3509" class="LineNr">3509 </span> <span class="subxS2Comment"># . . call</span> <span id="L3510" class="LineNr">3510 </span> e8/call <a href='../065write-buffered.subx.html#L8'>write-buffered</a>/disp32 @@ -2811,7 +2811,7 @@ if ('onhashchange' in window) { <span id="L3675" class="LineNr">3675 </span> e8/call <a href='survey.subx.html#L3610'>trace-sssns</a>/disp32 <span id="L3676" class="LineNr">3676 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3677" class="LineNr">3677 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L3678" class="Folded">3678 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L3678" class="Folded">3678 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3704" class="LineNr">3704 </span> <span class="subxComment"># check-trace-contains("Abc 0x00000003 e")</span> <span id="L3705" class="LineNr">3705 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3706" class="LineNr">3706 </span> 68/push <span class="Constant">"F - test-trace-sssns"</span>/imm32 @@ -2893,7 +2893,7 @@ if ('onhashchange' in window) { <span id="L3782" class="LineNr">3782 </span> e8/call <a href='survey.subx.html#L3717'>trace-snsns</a>/disp32 <span id="L3783" class="LineNr">3783 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3784" class="LineNr">3784 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L3785" class="Folded">3785 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L3785" class="Folded">3785 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3811" class="LineNr">3811 </span> <span class="subxComment"># check-trace-contains("Abc 0x00000003 e")</span> <span id="L3812" class="LineNr">3812 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3813" class="LineNr">3813 </span> 68/push <span class="Constant">"F - test-trace-snsns"</span>/imm32 @@ -2993,7 +2993,7 @@ if ('onhashchange' in window) { <span id="L3907" class="LineNr">3907 </span> e8/call <a href='survey.subx.html#L3824'>trace-slsls</a>/disp32 <span id="L3908" class="LineNr">3908 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L3909" class="LineNr">3909 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L3910" class="Folded">3910 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L3910" class="Folded">3910 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L3936" class="LineNr">3936 </span> <span class="subxComment"># check-trace-contains("Abcde")</span> <span id="L3937" class="LineNr">3937 </span> <span class="subxS2Comment"># . . push args</span> <span id="L3938" class="LineNr">3938 </span> 68/push <span class="Constant">"F - test-trace-slsls"</span>/imm32 @@ -3084,7 +3084,7 @@ if ('onhashchange' in window) { <span id="L4023" class="LineNr">4023 </span> e8/call <a href='survey.subx.html#L3949'>trace-slsns</a>/disp32 <span id="L4024" class="LineNr">4024 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4025" class="LineNr">4025 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L4026" class="Folded">4026 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L4026" class="Folded">4026 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4052" class="LineNr">4052 </span> <span class="subxComment"># check-trace-contains("Abc 0x00000003 e")</span> <span id="L4053" class="LineNr">4053 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4054" class="LineNr">4054 </span> 68/push <span class="Constant">"F - test-trace-slsls"</span>/imm32 @@ -3175,7 +3175,7 @@ if ('onhashchange' in window) { <span id="L4139" class="LineNr">4139 </span> e8/call <a href='survey.subx.html#L4065'>trace-slsss</a>/disp32 <span id="L4140" class="LineNr">4140 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4141" class="LineNr">4141 </span> 81 0/subop/add 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x14/imm32 <span class="subxComment"># add to esp</span> -<span id="L4142" class="Folded">4142 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream --------------------------------------------------------------------------------------------------------------------</span> +<span id="L4142" class="Folded">4142 </span><span class="Folded">+-- 26 lines: #? # dump *Trace-stream ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4168" class="LineNr">4168 </span> <span class="subxComment"># check-trace-contains("Abcde")</span> <span id="L4169" class="LineNr">4169 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4170" class="LineNr">4170 </span> 68/push <span class="Constant">"F - test-trace-slsss"</span>/imm32 @@ -3218,12 +3218,12 @@ if ('onhashchange' in window) { <span id="L4207" class="LineNr">4207 </span> 68/push 0/imm32/end <span id="L4208" class="LineNr">4208 </span> 68/push 0/imm32/start <span id="L4209" class="LineNr">4209 </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="L4210" class="Folded">4210 </span><span class="Folded">+-- 26 lines: #? # dump line -----------------------------------------------------------------------------------------------------------------------------</span> +<span id="L4210" class="Folded">4210 </span><span class="Folded">+-- 26 lines: #? # dump line -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4236" class="LineNr">4236 </span> <span class="subxS1Comment"># . rewind-stream(line)</span> <span id="L4237" class="LineNr">4237 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4238" class="LineNr">4238 </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="L4239" class="LineNr">4239 </span> <span class="subxS2Comment"># . . call</span> -<span id="L4240" class="LineNr">4240 </span> e8/call <a href='../055stream.subx.html#L55'>rewind-stream</a>/disp32 +<span id="L4240" class="LineNr">4240 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L4241" class="LineNr">4241 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4242" class="LineNr">4242 </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="L4243" class="LineNr">4243 </span><span class="Constant">$num-bytes:loop</span>: @@ -3232,10 +3232,10 @@ if ('onhashchange' in window) { <span id="L4246" class="LineNr">4246 </span> 51/push-ecx <span id="L4247" class="LineNr">4247 </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="L4248" class="LineNr">4248 </span> <span class="subxS2Comment"># . . call</span> -<span id="L4249" class="LineNr">4249 </span> e8/call next-word/disp32 +<span id="L4249" class="LineNr">4249 </span> e8/call <a href='../076next-word.subx.html#L10'>next-word</a>/disp32 <span id="L4250" class="LineNr">4250 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4251" class="LineNr">4251 </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="L4252" class="Folded">4252 </span><span class="Folded">+-- 46 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> +<span id="L4252" class="Folded">4252 </span><span class="Folded">+-- 46 lines: #? # dump word-slice -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span> <span id="L4298" class="LineNr">4298 </span><span class="Constant">$num-bytes:check0</span>: <span id="L4299" class="LineNr">4299 </span> <span class="subxComment"># if (slice-empty?(word-slice)) break</span> <span id="L4300" class="LineNr">4300 </span> <span class="subxS1Comment"># . save result</span> @@ -3297,18 +3297,18 @@ if ('onhashchange' in window) { <span id="L4356" class="LineNr">4356 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4357" class="LineNr">4357 </span> 51/push-ecx <span id="L4358" class="LineNr">4358 </span> <span class="subxS2Comment"># . . call</span> -<span id="L4359" class="LineNr">4359 </span> e8/call compute-width-of-slice/disp32 +<span id="L4359" class="LineNr">4359 </span> e8/call <a href='../083subx-widths.subx.html#L40'>compute-width-of-slice</a>/disp32 <span id="L4360" class="LineNr">4360 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4361" class="LineNr">4361 </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="L4362" class="LineNr">4362 </span> <span class="subxS1Comment"># . eax += result</span> <span id="L4363" class="LineNr">4363 </span> 01/add 3/mod/direct 0/rm32/eax <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"># add edx to eax</span> -<span id="L4364" class="LineNr">4364 </span> e9/jump $num-bytes:loop/disp32 +<span id="L4364" class="LineNr">4364 </span> e9/jump $num-bytes:<span class="Constant">loop</span>/disp32 <span id="L4365" class="LineNr">4365 </span><span class="Constant">$num-bytes:end</span>: <span id="L4366" class="LineNr">4366 </span> <span class="subxS1Comment"># . rewind-stream(line)</span> <span id="L4367" class="LineNr">4367 </span> <span class="subxS2Comment"># . . push args</span> <span id="L4368" class="LineNr">4368 </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="L4369" class="LineNr">4369 </span> <span class="subxS2Comment"># . . call</span> -<span id="L4370" class="LineNr">4370 </span> e8/call <a href='../055stream.subx.html#L55'>rewind-stream</a>/disp32 +<span id="L4370" class="LineNr">4370 </span> e8/call <a href='../055stream.subx.html#L54'>rewind-stream</a>/disp32 <span id="L4371" class="LineNr">4371 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L4372" class="LineNr">4372 </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="L4373" class="LineNr">4373 </span> <span class="subxS1Comment"># . reclaim locals</span> |