diff options
Diffstat (limited to 'html/067parse-hex.subx.html')
-rw-r--r-- | html/067parse-hex.subx.html | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/html/067parse-hex.subx.html b/html/067parse-hex.subx.html index 1eefdb0a..227519e1 100644 --- a/html/067parse-hex.subx.html +++ b/html/067parse-hex.subx.html @@ -83,13 +83,13 @@ if ('onhashchange' in window) { <span id="L23" class="LineNr"> 23 </span> <span class="subxComment"># if s is empty return false</span> <span id="L24" class="LineNr"> 24 </span> b8/copy-to-eax 0/imm32/false <span id="L25" class="LineNr"> 25 </span> 39/compare 3/mod/direct 1/rm32/ecx <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"># compare ecx with edx</span> -<span id="L26" class="LineNr"> 26 </span> 73/jump-if-greater-or-equal-unsigned $is-hex-int?:end/disp8 +<span id="L26" class="LineNr"> 26 </span> 73/jump-if-addr>= $is-hex-int?:end/disp8 <span id="L27" class="LineNr"> 27 </span> <span class="subxComment"># skip past leading '-'</span> <span id="L28" class="LineNr"> 28 </span> <span class="subxS1Comment"># . if (*curr == '-') ++curr</span> <span id="L29" class="LineNr"> 29 </span> 31/xor 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># clear ebx</span> <span id="L30" class="LineNr"> 30 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/BL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to BL</span> <span id="L31" class="LineNr"> 31 </span> 81 7/subop/compare 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x2d/imm32/- <span class="subxComment"># compare ebx</span> -<span id="L32" class="LineNr"> 32 </span> 75/jump-if-not-equal $is-hex-int?:initial-0/disp8 +<span id="L32" class="LineNr"> 32 </span> 75/jump-if-!= $is-hex-int?:initial-0/disp8 <span id="L33" class="LineNr"> 33 </span> <span class="subxS1Comment"># . ++curr</span> <span id="L34" class="LineNr"> 34 </span> 41/increment-ecx <span id="L35" class="LineNr"> 35 </span> <span class="subxComment"># skip past leading '0x'</span> @@ -98,24 +98,24 @@ if ('onhashchange' in window) { <span id="L38" class="LineNr"> 38 </span> 31/xor 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># clear ebx</span> <span id="L39" class="LineNr"> 39 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/BL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to BL</span> <span id="L40" class="LineNr"> 40 </span> 81 7/subop/compare 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x30/imm32/0 <span class="subxComment"># compare ebx</span> -<span id="L41" class="LineNr"> 41 </span> 75/jump-if-not-equal $is-hex-int?:<span class="Constant">loop</span>/disp8 +<span id="L41" class="LineNr"> 41 </span> 75/jump-if-!= $is-hex-int?:<span class="Constant">loop</span>/disp8 <span id="L42" class="LineNr"> 42 </span> <span class="subxS1Comment"># . ++curr</span> <span id="L43" class="LineNr"> 43 </span> 41/increment-ecx <span id="L44" class="LineNr"> 44 </span><span class="Constant">$is-hex-int?:initial-0x</span>: <span id="L45" class="LineNr"> 45 </span> <span class="subxS1Comment"># . if (curr >= in->end) return true</span> <span id="L46" class="LineNr"> 46 </span> 39/compare 3/mod/direct 1/rm32/ecx <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"># compare ecx with edx</span> -<span id="L47" class="LineNr"> 47 </span> 73/jump-if-greater-or-equal-unsigned $is-hex-int?:true/disp8 +<span id="L47" class="LineNr"> 47 </span> 73/jump-if-addr>= $is-hex-int?:true/disp8 <span id="L48" class="LineNr"> 48 </span> <span class="subxS1Comment"># . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again</span> <span id="L49" class="LineNr"> 49 </span> 31/xor 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># clear ebx</span> <span id="L50" class="LineNr"> 50 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 3/r32/BL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to BL</span> <span id="L51" class="LineNr"> 51 </span> 81 7/subop/compare 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x78/imm32/x <span class="subxComment"># compare ebx</span> -<span id="L52" class="LineNr"> 52 </span> 75/jump-if-not-equal $is-hex-int?:<span class="Constant">loop</span>/disp8 +<span id="L52" class="LineNr"> 52 </span> 75/jump-if-!= $is-hex-int?:<span class="Constant">loop</span>/disp8 <span id="L53" class="LineNr"> 53 </span> <span class="subxS1Comment"># . ++curr</span> <span id="L54" class="LineNr"> 54 </span> 41/increment-ecx <span id="L55" class="LineNr"> 55 </span><span class="Constant">$is-hex-int?:loop</span>: <span id="L56" class="LineNr"> 56 </span> <span class="subxComment"># if (curr >= in->end) return true</span> <span id="L57" class="LineNr"> 57 </span> 39/compare 3/mod/direct 1/rm32/ecx <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"># compare ecx with edx</span> -<span id="L58" class="LineNr"> 58 </span> 73/jump-if-greater-or-equal-unsigned $is-hex-int?:true/disp8 +<span id="L58" class="LineNr"> 58 </span> 73/jump-if-addr>= $is-hex-int?:true/disp8 <span id="L59" class="LineNr"> 59 </span> <span class="subxComment"># var eax : boolean = is-hex-digit?(*curr)</span> <span id="L60" class="LineNr"> 60 </span> <span class="subxS2Comment"># . . push args</span> <span id="L61" class="LineNr"> 61 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/AL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to AL</span> @@ -126,7 +126,7 @@ if ('onhashchange' in window) { <span id="L66" class="LineNr"> 66 </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="L67" class="LineNr"> 67 </span> <span class="subxComment"># if (eax == false) return false</span> <span id="L68" class="LineNr"> 68 </span> 3d/compare-eax-and 0/imm32 -<span id="L69" class="LineNr"> 69 </span> 74/jump-if-equal $is-hex-int?:end/disp8 +<span id="L69" class="LineNr"> 69 </span> 74/jump-if-= $is-hex-int?:end/disp8 <span id="L70" class="LineNr"> 70 </span> <span class="subxComment"># ++curr</span> <span id="L71" class="LineNr"> 71 </span> 41/increment-ecx <span id="L72" class="LineNr"> 72 </span> <span class="subxComment"># loop</span> @@ -435,7 +435,7 @@ if ('onhashchange' in window) { <span id="L375" class="LineNr">375 </span> 31/xor 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># clear eax</span> <span id="L376" class="LineNr">376 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/AL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to AL</span> <span id="L377" class="LineNr">377 </span> 3d/compare-eax-and 0x2d/imm32/- -<span id="L378" class="LineNr">378 </span> 75/jump-if-not-equal $parse-hex-int:initial-0/disp8 +<span id="L378" class="LineNr">378 </span> 75/jump-if-!= $parse-hex-int:initial-0/disp8 <span id="L379" class="LineNr">379 </span> <span class="subxS1Comment"># . ++curr</span> <span id="L380" class="LineNr">380 </span> 41/increment-ecx <span id="L381" class="LineNr">381 </span> <span class="subxS1Comment"># . negate = true</span> @@ -445,24 +445,24 @@ if ('onhashchange' in window) { <span id="L385" class="LineNr">385 </span> <span class="subxS1Comment"># . if (*curr != '0') jump to loop</span> <span id="L386" class="LineNr">386 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/AL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to AL</span> <span id="L387" class="LineNr">387 </span> 3d/compare-eax-and 0x30/imm32/0 -<span id="L388" class="LineNr">388 </span> 75/jump-if-not-equal $parse-hex-int:<span class="Constant">loop</span>/disp8 +<span id="L388" class="LineNr">388 </span> 75/jump-if-!= $parse-hex-int:<span class="Constant">loop</span>/disp8 <span id="L389" class="LineNr">389 </span> <span class="subxS1Comment"># . ++curr</span> <span id="L390" class="LineNr">390 </span> 41/increment-ecx <span id="L391" class="LineNr">391 </span><span class="Constant">$parse-hex-int:initial-0x</span>: <span id="L392" class="LineNr">392 </span> <span class="subxS1Comment"># . if (curr >= in->end) return result</span> <span id="L393" class="LineNr">393 </span> 39/compare 3/mod/direct 1/rm32/ecx <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"># compare ecx with edx</span> -<span id="L394" class="LineNr">394 </span> 73/jump-if-greater-or-equal-unsigned $parse-hex-int:end/disp8 +<span id="L394" class="LineNr">394 </span> 73/jump-if-addr>= $parse-hex-int:end/disp8 <span id="L395" class="LineNr">395 </span> <span class="subxS1Comment"># . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again</span> <span id="L396" class="LineNr">396 </span> 31/xor 3/mod/direct 0/rm32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># clear eax</span> <span id="L397" class="LineNr">397 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/AL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to AL</span> <span id="L398" class="LineNr">398 </span> 3d/compare-eax-and 0x78/imm32/x -<span id="L399" class="LineNr">399 </span> 75/jump-if-not-equal $parse-hex-int:<span class="Constant">loop</span>/disp8 +<span id="L399" class="LineNr">399 </span> 75/jump-if-!= $parse-hex-int:<span class="Constant">loop</span>/disp8 <span id="L400" class="LineNr">400 </span> <span class="subxS1Comment"># . ++curr</span> <span id="L401" class="LineNr">401 </span> 41/increment-ecx <span id="L402" class="LineNr">402 </span><span class="Constant">$parse-hex-int:loop</span>: <span id="L403" class="LineNr">403 </span> <span class="subxComment"># if (curr >= in->end) break</span> <span id="L404" class="LineNr">404 </span> 39/compare 3/mod/direct 1/rm32/ecx <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"># compare ecx with edx</span> -<span id="L405" class="LineNr">405 </span> 73/jump-if-greater-or-equal-unsigned $parse-hex-int:negate/disp8 +<span id="L405" class="LineNr">405 </span> 73/jump-if-addr>= $parse-hex-int:negate/disp8 <span id="L406" class="LineNr">406 </span> <span class="subxComment"># var eax : int = from-hex-char(*curr)</span> <span id="L407" class="LineNr">407 </span> <span class="subxS2Comment"># . . copy arg to eax</span> <span id="L408" class="LineNr">408 </span> 8a/copy-byte 0/mod/indirect 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/AL <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># copy byte at *ecx to AL</span> @@ -478,7 +478,7 @@ if ('onhashchange' in window) { <span id="L418" class="LineNr">418 </span><span class="Constant">$parse-hex-int:negate</span>: <span id="L419" class="LineNr">419 </span> <span class="subxComment"># if (negate?) result = -result</span> <span id="L420" class="LineNr">420 </span> 81 7/subop/compare 3/mod/direct 6/rm32/esi <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/imm32/false <span class="subxComment"># compare esi</span> -<span id="L421" class="LineNr">421 </span> 74/jump-if-equal $parse-hex-int:end/disp8 +<span id="L421" class="LineNr">421 </span> 74/jump-if-= $parse-hex-int:end/disp8 <span id="L422" class="LineNr">422 </span> f7 3/subop/negate 3/mod/direct 3/rm32/ebx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="subxComment"># negate ebx</span> <span id="L423" class="LineNr">423 </span><span class="Constant">$parse-hex-int:end</span>: <span id="L424" class="LineNr">424 </span> <span class="subxComment"># return result</span> @@ -707,18 +707,18 @@ if ('onhashchange' in window) { <span id="L647" class="LineNr">647 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 1/r32/ecx 8/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+8) to ecx</span> <span id="L648" class="LineNr">648 </span> <span class="subxComment"># return false if c < '0'</span> <span id="L649" class="LineNr">649 </span> 81 7/subop/compare 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x30/imm32 <span class="subxComment"># compare ecx</span> -<span id="L650" class="LineNr">650 </span> 7c/jump-if-lesser $is-hex-digit?:false/disp8 +<span id="L650" class="LineNr">650 </span> 7c/jump-if-< $is-hex-digit?:false/disp8 <span id="L651" class="LineNr">651 </span> <span class="subxComment"># return true if c <= '9'</span> <span id="L652" class="LineNr">652 </span> 81 7/subop/compare 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x39/imm32 <span class="subxComment"># compare ecx</span> -<span id="L653" class="LineNr">653 </span> 7e/jump-if-lesser-or-equal $is-hex-digit?:true/disp8 +<span id="L653" class="LineNr">653 </span> 7e/jump-if-<= $is-hex-digit?:true/disp8 <span id="L654" class="LineNr">654 </span> <span class="subxComment"># drop case</span> <span id="L655" class="LineNr">655 </span> 25/and-eax-with 0x5f/imm32 <span id="L656" class="LineNr">656 </span> <span class="subxComment"># return false if c > 'f'</span> <span id="L657" class="LineNr">657 </span> 81 7/subop/compare 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x66/imm32 <span class="subxComment"># compare ecx</span> -<span id="L658" class="LineNr">658 </span> 7f/jump-if-greater $is-hex-digit?:false/disp8 +<span id="L658" class="LineNr">658 </span> 7f/jump-if-> $is-hex-digit?:false/disp8 <span id="L659" class="LineNr">659 </span> <span class="subxComment"># return true if c >= 'a'</span> <span id="L660" class="LineNr">660 </span> 81 7/subop/compare 3/mod/direct 1/rm32/ecx <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0x61/imm32 <span class="subxComment"># compare ecx</span> -<span id="L661" class="LineNr">661 </span> 7d/jump-if-greater-or-equal $is-hex-digit?:true/disp8 +<span id="L661" class="LineNr">661 </span> 7d/jump-if->= $is-hex-digit?:true/disp8 <span id="L662" class="LineNr">662 </span> <span class="subxComment"># otherwise return false</span> <span id="L663" class="LineNr">663 </span><span class="Constant">$is-hex-digit?:false</span>: <span id="L664" class="LineNr">664 </span> b8/copy-to-eax 0/imm32/false @@ -864,15 +864,15 @@ if ('onhashchange' in window) { <span id="L804" class="LineNr">804 </span><span class="Constant">$from-hex-char:check0</span>: <span id="L805" class="LineNr">805 </span> <span class="subxComment"># if (eax < '0') goto abort</span> <span id="L806" class="LineNr">806 </span> 3d/compare-eax-with 0x30/imm32/0 -<span id="L807" class="LineNr">807 </span> 7c/jump-if-lesser $from-hex-char:abort/disp8 +<span id="L807" class="LineNr">807 </span> 7c/jump-if-< $from-hex-char:abort/disp8 <span id="L808" class="LineNr">808 </span><span class="Constant">$from-hex-char:check1</span>: <span id="L809" class="LineNr">809 </span> <span class="subxComment"># if (eax > 'f') goto abort</span> <span id="L810" class="LineNr">810 </span> 3d/compare-eax-with 0x66/imm32/f -<span id="L811" class="LineNr">811 </span> 7f/jump-if-greater $from-hex-char:abort/disp8 +<span id="L811" class="LineNr">811 </span> 7f/jump-if-> $from-hex-char:abort/disp8 <span id="L812" class="LineNr">812 </span><span class="Constant">$from-hex-char:check2</span>: <span id="L813" class="LineNr">813 </span> <span class="subxComment"># if (eax > '9') goto next check</span> <span id="L814" class="LineNr">814 </span> 3d/compare-eax-with 0x39/imm32/9 -<span id="L815" class="LineNr">815 </span> 7f/jump-if-greater $from-hex-char:check3/disp8 +<span id="L815" class="LineNr">815 </span> 7f/jump-if-> $from-hex-char:check3/disp8 <span id="L816" class="LineNr">816 </span><span class="Constant">$from-hex-char:digit</span>: <span id="L817" class="LineNr">817 </span> <span class="subxComment"># return eax - '0'</span> <span id="L818" class="LineNr">818 </span> 2d/subtract-from-eax 0x30/imm32/0 @@ -880,7 +880,7 @@ if ('onhashchange' in window) { <span id="L820" class="LineNr">820 </span><span class="Constant">$from-hex-char:check3</span>: <span id="L821" class="LineNr">821 </span> <span class="subxComment"># if (eax < 'a') goto abort</span> <span id="L822" class="LineNr">822 </span> 3d/compare-eax-with 0x61/imm32/a -<span id="L823" class="LineNr">823 </span> 7c/jump-if-lesser $from-hex-char:abort/disp8 +<span id="L823" class="LineNr">823 </span> 7c/jump-if-< $from-hex-char:abort/disp8 <span id="L824" class="LineNr">824 </span><span class="Constant">$from-hex-char:letter</span>: <span id="L825" class="LineNr">825 </span> <span class="subxComment"># return eax - ('a'-10)</span> <span id="L826" class="LineNr">826 </span> 2d/subtract-from-eax 0x57/imm32/a-10 |