diff options
Diffstat (limited to 'html/059stop.subx.html')
-rw-r--r-- | html/059stop.subx.html | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/html/059stop.subx.html b/html/059stop.subx.html index e51a73db..20c23027 100644 --- a/html/059stop.subx.html +++ b/html/059stop.subx.html @@ -102,8 +102,8 @@ if ('onhashchange' in window) { <span id="L41" class="LineNr"> 41 </span><span class="subxComment"># the stack.</span> <span id="L42" class="LineNr"> 42 </span><span class="subxComment"># Ugly that we need to know the size of args. Don't allocate variables between</span> <span id="L43" class="LineNr"> 43 </span><span class="subxComment"># tailor-exit-descriptor and the call it's for.</span> -<span id="L44" class="LineNr"> 44 </span><span class="subxFunction">tailor-exit-descriptor</span>: <span class="subxComment"># ed : (address exit-descriptor), nbytes : int -> <void></span> -<span id="L45" class="LineNr"> 45 </span> <span class="subxS1Comment"># . prolog</span> +<span id="L44" class="LineNr"> 44 </span><span class="subxFunction">tailor-exit-descriptor</span>: <span class="subxComment"># ed : (address exit-descriptor), nbytes : int</span> +<span id="L45" class="LineNr"> 45 </span> <span class="subxS1Comment"># . prologue</span> <span id="L46" class="LineNr"> 46 </span> 55/push-ebp <span id="L47" class="LineNr"> 47 </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="L48" class="LineNr"> 48 </span> <span class="subxS1Comment"># . save registers</span> @@ -145,13 +145,13 @@ if ('onhashchange' in window) { <span id="L84" class="LineNr"> 84 </span> <span class="subxS1Comment"># . restore registers</span> <span id="L85" class="LineNr"> 85 </span> 59/pop-to-ecx <span id="L86" class="LineNr"> 86 </span> 58/pop-to-eax -<span id="L87" class="LineNr"> 87 </span> <span class="subxS1Comment"># . epilog</span> +<span id="L87" class="LineNr"> 87 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L88" class="LineNr"> 88 </span> 89/copy 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 5/r32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ebp to esp</span> <span id="L89" class="LineNr"> 89 </span> 5d/pop-to-ebp <span id="L90" class="LineNr"> 90 </span> c3/return <span id="L91" class="LineNr"> 91 </span> <span id="L92" class="LineNr"> 92 </span><span class="subxFunction">stop</span>: <span class="subxComment"># ed : (address exit-descriptor), value : int</span> -<span id="L93" class="LineNr"> 93 </span> <span class="subxComment"># no prolog; one way or another, we're going to clobber registers</span> +<span id="L93" class="LineNr"> 93 </span> <span class="subxComment"># no prologue; one way or another, we're going to clobber registers</span> <span id="L94" class="LineNr"> 94 </span> <span class="subxComment"># eax = ed</span> <span id="L95" class="LineNr"> 95 </span> 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none <span class="Normal"> . </span> 0/r32/eax 4/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(esp+4) to eax</span> <span id="L96" class="LineNr"> 96 </span> <span class="subxComment"># if (ed->target == 0) really exit</span> @@ -173,7 +173,7 @@ if ('onhashchange' in window) { <span id="L112" class="LineNr">112 </span> c3/return <span class="subxComment"># doesn't return to caller</span> <span id="L113" class="LineNr">113 </span> <span id="L114" class="LineNr">114 </span><span class="subxTest">test-stop-skips-returns-on-exit</span>: -<span id="L115" class="LineNr">115 </span> <span class="subxComment"># This looks like the standard prolog, but is here for different reasons.</span> +<span id="L115" class="LineNr">115 </span> <span class="subxComment"># This looks like the standard prologue, but is here for different reasons.</span> <span id="L116" class="LineNr">116 </span> <span class="subxComment"># A function calling 'stop' can't rely on ebp persisting past the call.</span> <span id="L117" class="LineNr">117 </span> <span class="subxComment">#</span> <span id="L118" class="LineNr">118 </span> <span class="subxComment"># Use ebp here as a stable base to refer to locals and arguments from in the</span> @@ -216,14 +216,14 @@ if ('onhashchange' in window) { <span id="L155" class="LineNr">155 </span> e8/call <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32 <span id="L156" class="LineNr">156 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L157" class="LineNr">157 </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="L158" class="LineNr">158 </span> <span class="subxS1Comment"># . epilog</span> +<span id="L158" class="LineNr">158 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L159" class="LineNr">159 </span> <span class="subxComment"># don't restore esp from ebp; manually reclaim locals</span> <span id="L160" class="LineNr">160 </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="L161" class="LineNr">161 </span> 5d/pop-to-ebp <span id="L162" class="LineNr">162 </span> c3/return <span id="L163" class="LineNr">163 </span> <span id="L164" class="LineNr">164 </span><span class="subxMinorFunction">_test-stop-1</span>: <span class="subxComment"># ed : (address exit-descriptor)</span> -<span id="L165" class="LineNr">165 </span> <span class="subxS1Comment"># . prolog</span> +<span id="L165" class="LineNr">165 </span> <span class="subxS1Comment"># . prologue</span> <span id="L166" class="LineNr">166 </span> 55/push-ebp <span id="L167" class="LineNr">167 </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="L168" class="LineNr">168 </span> <span class="subxComment"># _test-stop-2(ed)</span> @@ -244,13 +244,13 @@ if ('onhashchange' in window) { <span id="L183" class="LineNr">183 </span> e8/call <a href='051test.subx.html#L24'>check-ints-equal</a>/disp32 <span id="L184" class="LineNr">184 </span> <span class="subxS2Comment"># . . discard args</span> <span id="L185" class="LineNr">185 </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="L186" class="LineNr">186 </span> <span class="subxS1Comment"># . epilog</span> +<span id="L186" class="LineNr">186 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L187" class="LineNr">187 </span> 89/copy 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 5/r32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ebp to esp</span> <span id="L188" class="LineNr">188 </span> 5d/pop-to-ebp <span id="L189" class="LineNr">189 </span> c3/return <span id="L190" class="LineNr">190 </span> <span id="L191" class="LineNr">191 </span><span class="subxMinorFunction">_test-stop-2</span>: <span class="subxComment"># ed : (address exit-descriptor)</span> -<span id="L192" class="LineNr">192 </span> <span class="subxS1Comment"># . prolog</span> +<span id="L192" class="LineNr">192 </span> <span class="subxS1Comment"># . prologue</span> <span id="L193" class="LineNr">193 </span> 55/push-ebp <span id="L194" class="LineNr">194 </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="L195" class="LineNr">195 </span> <span class="subxS1Comment"># . stop(ed, 1)</span> @@ -261,7 +261,7 @@ if ('onhashchange' in window) { <span id="L200" class="LineNr">200 </span> e8/call <a href='059stop.subx.html#L92'>stop</a>/disp32 <span id="L201" class="LineNr">201 </span> <span class="subxComment"># should never get past this point</span> <span id="L202" class="LineNr">202 </span><span class="Constant">$_test-stop-2:dead-end</span>: -<span id="L203" class="LineNr">203 </span> <span class="subxS1Comment"># . epilog</span> +<span id="L203" class="LineNr">203 </span> <span class="subxS1Comment"># . epilogue</span> <span id="L204" class="LineNr">204 </span> 89/copy 3/mod/direct 4/rm32/esp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 5/r32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy ebp to esp</span> <span id="L205" class="LineNr">205 </span> 5d/pop-to-ebp <span id="L206" class="LineNr">206 </span> c3/return |