about summary refs log tree commit diff stats
path: root/html/309stream.subx.html
diff options
context:
space:
mode:
Diffstat (limited to 'html/309stream.subx.html')
-rw-r--r--html/309stream.subx.html56
1 files changed, 56 insertions, 0 deletions
diff --git a/html/309stream.subx.html b/html/309stream.subx.html
index 9fc1c261..515b45ff 100644
--- a/html/309stream.subx.html
+++ b/html/309stream.subx.html
@@ -213,6 +213,62 @@ if ('onhashchange' in window) {
 <span id="L156" class="LineNr">156 </span>    bb/copy-to-ebx 1/imm32
 <span id="L157" class="LineNr">157 </span>    (syscall_exit)
 <span id="L158" class="LineNr">158 </span>    <span class="subxComment"># never gets here</span>
+<span id="L159" class="LineNr">159 </span>
+<span id="L160" class="LineNr">160 </span><span class="subxFunction">stream-first</span>:  <span class="subxComment"># s: (addr stream byte) -&gt; result/eax: byte</span>
+<span id="L161" class="LineNr">161 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L162" class="LineNr">162 </span>    55/push-ebp
+<span id="L163" class="LineNr">163 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L164" class="LineNr">164 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L165" class="LineNr">165 </span>    51/push-ecx
+<span id="L166" class="LineNr">166 </span>    56/push-esi
+<span id="L167" class="LineNr">167 </span>    <span class="subxComment"># result = false</span>
+<span id="L168" class="LineNr">168 </span>    b8/copy-to-eax 0/imm32
+<span id="L169" class="LineNr">169 </span>    <span class="subxComment"># esi = s</span>
+<span id="L170" class="LineNr">170 </span>    8b/-&gt; *(ebp+8) 6/r32/esi
+<span id="L171" class="LineNr">171 </span>    <span class="subxComment"># var idx/ecx: int = s-&gt;read</span>
+<span id="L172" class="LineNr">172 </span>    8b/-&gt; *(esi+4) 1/r32/ecx
+<span id="L173" class="LineNr">173 </span>    <span class="subxComment"># if idx &gt;= s-&gt;write return 0</span>
+<span id="L174" class="LineNr">174 </span>    3b/compare-with 1/r32/ecx *esi
+<span id="L175" class="LineNr">175 </span>    7d/jump-if-&gt;= $stream-first:end/disp8
+<span id="L176" class="LineNr">176 </span>    <span class="subxComment"># result = s-&gt;data[idx]</span>
+<span id="L177" class="LineNr">177 </span>    8a/byte-&gt; *(esi+ecx+0xc) 0/r32/AL
+<span id="L178" class="LineNr">178 </span><span class="Constant">$stream-first:end</span>:
+<span id="L179" class="LineNr">179 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L180" class="LineNr">180 </span>    5e/pop-to-esi
+<span id="L181" class="LineNr">181 </span>    59/pop-to-ecx
+<span id="L182" class="LineNr">182 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L183" class="LineNr">183 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L184" class="LineNr">184 </span>    5d/pop-to-ebp
+<span id="L185" class="LineNr">185 </span>    c3/return
+<span id="L186" class="LineNr">186 </span>
+<span id="L187" class="LineNr">187 </span><span class="subxFunction">stream-final</span>:  <span class="subxComment"># s: (addr stream byte) -&gt; result/eax: byte</span>
+<span id="L188" class="LineNr">188 </span>    <span class="subxS1Comment"># . prologue</span>
+<span id="L189" class="LineNr">189 </span>    55/push-ebp
+<span id="L190" class="LineNr">190 </span>    89/&lt;- %ebp 4/r32/esp
+<span id="L191" class="LineNr">191 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L192" class="LineNr">192 </span>    51/push-ecx
+<span id="L193" class="LineNr">193 </span>    56/push-esi
+<span id="L194" class="LineNr">194 </span>    <span class="subxComment"># result = false</span>
+<span id="L195" class="LineNr">195 </span>    b8/copy-to-eax 0/imm32
+<span id="L196" class="LineNr">196 </span>    <span class="subxComment"># esi = s</span>
+<span id="L197" class="LineNr">197 </span>    8b/-&gt; *(ebp+8) 6/r32/esi
+<span id="L198" class="LineNr">198 </span>    <span class="subxComment"># var max/ecx: int = s-&gt;write</span>
+<span id="L199" class="LineNr">199 </span>    8b/-&gt; *esi 1/r32/ecx
+<span id="L200" class="LineNr">200 </span>    <span class="subxComment"># if s-&gt;read &gt;= max return 0</span>
+<span id="L201" class="LineNr">201 </span>    39/compare-with *(esi+4) 1/r32/ecx
+<span id="L202" class="LineNr">202 </span>    7d/jump-if-&gt;= $stream-final:end/disp8
+<span id="L203" class="LineNr">203 </span>    <span class="subxComment"># var idx/ecx: int = max - 1</span>
+<span id="L204" class="LineNr">204 </span>    49/decrement-ecx
+<span id="L205" class="LineNr">205 </span>    <span class="subxComment"># result = s-&gt;data[idx]</span>
+<span id="L206" class="LineNr">206 </span>    8a/byte-&gt; *(esi+ecx+0xc) 0/r32/AL
+<span id="L207" class="LineNr">207 </span><span class="Constant">$stream-final:end</span>:
+<span id="L208" class="LineNr">208 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L209" class="LineNr">209 </span>    5e/pop-to-esi
+<span id="L210" class="LineNr">210 </span>    59/pop-to-ecx
+<span id="L211" class="LineNr">211 </span>    <span class="subxS1Comment"># . epilogue</span>
+<span id="L212" class="LineNr">212 </span>    89/&lt;- %esp 5/r32/ebp
+<span id="L213" class="LineNr">213 </span>    5d/pop-to-ebp
+<span id="L214" class="LineNr">214 </span>    c3/return
 </pre>
 </body>
 </html>