diff options
Diffstat (limited to 'html/309stream.subx.html')
-rw-r--r-- | html/309stream.subx.html | 56 |
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) -> 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/<- %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/-> *(ebp+8) 6/r32/esi +<span id="L171" class="LineNr">171 </span> <span class="subxComment"># var idx/ecx: int = s->read</span> +<span id="L172" class="LineNr">172 </span> 8b/-> *(esi+4) 1/r32/ecx +<span id="L173" class="LineNr">173 </span> <span class="subxComment"># if idx >= s->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->= $stream-first:end/disp8 +<span id="L176" class="LineNr">176 </span> <span class="subxComment"># result = s->data[idx]</span> +<span id="L177" class="LineNr">177 </span> 8a/byte-> *(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/<- %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) -> 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/<- %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/-> *(ebp+8) 6/r32/esi +<span id="L198" class="LineNr">198 </span> <span class="subxComment"># var max/ecx: int = s->write</span> +<span id="L199" class="LineNr">199 </span> 8b/-> *esi 1/r32/ecx +<span id="L200" class="LineNr">200 </span> <span class="subxComment"># if s->read >= 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->= $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->data[idx]</span> +<span id="L206" class="LineNr">206 </span> 8a/byte-> *(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/<- %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> |