diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-01-16 18:31:12 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-01-16 18:31:12 -0800 |
commit | 6070c23e5e1c60d3bb169e43bddfa59b1d322427 (patch) | |
tree | 9a70e378c33c15e4779cf94abda8f37c35a5d1da /html/apps/calls.subx.html | |
parent | 5a6601aba973ba1d1ef30b7b64438c25623b89c5 (diff) | |
download | mu-6070c23e5e1c60d3bb169e43bddfa59b1d322427.tar.gz |
5897 - rename comparison instructions
Signed and unsigned don't quite capture the essence of what the different combinations of x86 flags are doing for SubX. The crucial distinction is that one set of comparison operators is for integers and the second is for addresses.
Diffstat (limited to 'html/apps/calls.subx.html')
-rw-r--r-- | html/apps/calls.subx.html | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/html/apps/calls.subx.html b/html/apps/calls.subx.html index 2513b344..0f1f352d 100644 --- a/html/apps/calls.subx.html +++ b/html/apps/calls.subx.html @@ -102,7 +102,7 @@ if ('onhashchange' in window) { <span id="L41" class="LineNr"> 41 </span> <span class="subxH1Comment"># - if argc > 1 and argv[1] == "test", then return run_tests()</span> <span id="L42" class="LineNr"> 42 </span> <span class="subxComment"># if (argc <= 1) goto run-main</span> <span id="L43" class="LineNr"> 43 </span> 81 7/subop/compare *ebp 1/imm32 -<span id="L44" class="LineNr"> 44 </span> 7e/jump-if-lesser-or-equal $subx-calls-main:interactive/disp8 +<span id="L44" class="LineNr"> 44 </span> 7e/jump-if-<= $subx-calls-main:interactive/disp8 <span id="L45" class="LineNr"> 45 </span> <span class="subxComment"># if (!kernel-string-equal?(argv[1], "test")) goto run-main</span> <span id="L46" class="LineNr"> 46 </span> <span class="subxS1Comment"># . eax = kernel-string-equal?(argv[1], "test")</span> <span id="L47" class="LineNr"> 47 </span> <span class="subxS2Comment"># . . push args</span> @@ -114,7 +114,7 @@ if ('onhashchange' in window) { <span id="L53" class="LineNr"> 53 </span> 81 0/subop/add %esp 8/imm32 <span id="L54" class="LineNr"> 54 </span> <span class="subxS1Comment"># . if (eax == false) goto run-main</span> <span id="L55" class="LineNr"> 55 </span> 3d/compare-eax-and 0/imm32/false -<span id="L56" class="LineNr"> 56 </span> 74/jump-if-equal $subx-calls-main:interactive/disp8 +<span id="L56" class="LineNr"> 56 </span> 74/jump-if-= $subx-calls-main:interactive/disp8 <span id="L57" class="LineNr"> 57 </span> <span class="subxComment"># run-tests()</span> <span id="L58" class="LineNr"> 58 </span> e8/call run-tests/disp32 <span id="L59" class="LineNr"> 59 </span> <span class="subxComment"># syscall(exit, *Num-test-failures)</span> @@ -197,7 +197,7 @@ if ('onhashchange' in window) { <span id="L136" class="LineNr"> 136 </span><span class="Constant">$subx-calls:check0</span>: <span id="L137" class="LineNr"> 137 </span> <span class="subxComment"># if (line->write == 0) break</span> <span id="L138" class="LineNr"> 138 </span> 81 7/subop/compare *esi 0/imm32 -<span id="L139" class="LineNr"> 139 </span> 0f 84/jump-if-equal $subx-calls:<span class="Constant">break</span>/disp32 +<span id="L139" class="LineNr"> 139 </span> 0f 84/jump-if-= $subx-calls:<span class="Constant">break</span>/disp32 <span id="L140" class="LineNr"> 140 </span> <span class="subxComment"># skip-chars-matching-whitespace(line)</span> <span id="L141" class="LineNr"> 141 </span> <span class="subxS2Comment"># . . push args</span> <span id="L142" class="LineNr"> 142 </span> 56/push-esi @@ -213,7 +213,7 @@ if ('onhashchange' in window) { <span id="L152" class="LineNr"> 152 </span> 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL <span id="L153" class="LineNr"> 153 </span> <span class="subxS1Comment"># . if (eax == '(') goto convert-call</span> <span id="L154" class="LineNr"> 154 </span> 3d/compare-eax-and 0x28/imm32/open-paren -<span id="L155" class="LineNr"> 155 </span> 74/jump-if-equal $subx-calls:convert-call/disp8 +<span id="L155" class="LineNr"> 155 </span> 74/jump-if-= $subx-calls:convert-call/disp8 <span id="L156" class="LineNr"> 156 </span><span class="Constant">$subx-calls:pass-through</span>: <span id="L157" class="LineNr"> 157 </span> <span class="subxComment"># write-stream-data(out, line)</span> <span id="L158" class="LineNr"> 158 </span> <span class="subxS2Comment"># . . push args</span> @@ -331,7 +331,7 @@ if ('onhashchange' in window) { <span id="L270" class="LineNr"> 270 </span> 81 0/subop/add %esp 4/imm32 <span id="L271" class="LineNr"> 271 </span> <span class="subxS1Comment"># . if (eax != false) break</span> <span id="L272" class="LineNr"> 272 </span> 3d/compare-eax-and 0/imm32/false -<span id="L273" class="LineNr"> 273 </span> 0f 85/jump-if-not-equal $parse-line:end/disp32 +<span id="L273" class="LineNr"> 273 </span> 0f 85/jump-if-!= $parse-line:end/disp32 <span id="L274" class="Folded"> 274 </span><span class="Folded">+-- 40 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> <span id="L314" class="LineNr"> 314 </span><span class="Constant">$parse-line:write-word</span>: <span id="L315" class="LineNr"> 315 </span> <span class="subxComment"># write-int(words, word-slice->start)</span> @@ -402,7 +402,7 @@ if ('onhashchange' in window) { <span id="L380" class="LineNr"> 380 </span> <span class="subxS1Comment"># . ecx = words->write - 8</span> <span id="L381" class="LineNr"> 381 </span> 8b/-> *esi 1/r32/ecx <span id="L382" class="LineNr"> 382 </span> 81 5/subop/subtract %ecx 8/imm32 -<span id="L383" class="LineNr"> 383 </span> 0f 8c/jump-if-lesser $emit-call:error1/disp32 +<span id="L383" class="LineNr"> 383 </span> 0f 8c/jump-if-< $emit-call:error1/disp32 <span id="L384" class="LineNr"> 384 </span> <span class="subxComment"># var curr/ecx : (addr slice) = &words->data[words->write-8]</span> <span id="L385" class="LineNr"> 385 </span> 8d/copy-address *(esi+ecx+0xc) 1/r32/ecx <span id="L386" class="LineNr"> 386 </span> <span class="subxComment"># var min/edx : (addr byte) = words->data</span> @@ -411,7 +411,7 @@ if ('onhashchange' in window) { <span id="L389" class="LineNr"> 389 </span><span class="Constant">$emit-call:push-loop</span>: <span id="L390" class="LineNr"> 390 </span> <span class="subxComment"># if (curr <= min) break</span> <span id="L391" class="LineNr"> 391 </span> 39/compare %ecx 2/r32/edx -<span id="L392" class="LineNr"> 392 </span> 0f 8e/jump-if-lesser-or-equal $emit-call:call-instruction/disp32 +<span id="L392" class="LineNr"> 392 </span> 0f 8e/jump-if-<= $emit-call:call-instruction/disp32 <span id="L393" class="LineNr"> 393 </span> <span class="subxComment"># if (*curr->start in '%' '*') goto push-rm32</span> <span id="L394" class="LineNr"> 394 </span> <span class="subxS1Comment"># . var start/eax : (addr byte) = curr->start</span> <span id="L395" class="LineNr"> 395 </span> 8b/-> *ecx 0/r32/eax @@ -420,10 +420,10 @@ if ('onhashchange' in window) { <span id="L398" class="LineNr"> 398 </span> 81 4/subop/and %eax 0xff/imm32 <span id="L399" class="LineNr"> 399 </span> <span class="subxS1Comment"># . if (c == '%') goto push-rm32</span> <span id="L400" class="LineNr"> 400 </span> 3d/compare-eax-and 0x25/imm32/percent -<span id="L401" class="LineNr"> 401 </span> 74/jump-if-equal $emit-call:push-rm32/disp8 +<span id="L401" class="LineNr"> 401 </span> 74/jump-if-= $emit-call:push-rm32/disp8 <span id="L402" class="LineNr"> 402 </span> <span class="subxS1Comment"># . if (c == '*') goto push-rm32</span> <span id="L403" class="LineNr"> 403 </span> 3d/compare-eax-and 0x2a/imm32/asterisk -<span id="L404" class="LineNr"> 404 </span> 74/jump-if-equal $emit-call:push-rm32/disp8 +<span id="L404" class="LineNr"> 404 </span> 74/jump-if-= $emit-call:push-rm32/disp8 <span id="L405" class="LineNr"> 405 </span><span class="Constant">$emit-call:push-imm32</span>: <span id="L406" class="LineNr"> 406 </span> <span class="subxComment"># write-buffered(out, "68/push ")</span> <span id="L407" class="LineNr"> 407 </span> 68/push <span class="Constant">"68/push "</span>/imm32 @@ -814,7 +814,7 @@ if ('onhashchange' in window) { <span id="L824" class="LineNr"> 824 </span> 8b/-> *(esi+4) 1/r32/ecx <span id="L825" class="LineNr"> 825 </span> <span class="subxS1Comment"># . if (ecx >= line->write) return out = {0, 0}</span> <span id="L826" class="LineNr"> 826 </span> 3b/compare 1/r32/ecx *esi -<span id="L827" class="LineNr"> 827 </span> 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 +<span id="L827" class="LineNr"> 827 </span> 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 <span id="L828" class="LineNr"> 828 </span><span class="Constant">$next-word-string-or-expression-without-metadata:check-for-comment</span>: <span id="L829" class="LineNr"> 829 </span> <span class="subxComment"># out->start = &line->data[line->read]</span> <span id="L830" class="LineNr"> 830 </span> 8d/copy-address *(esi+ecx+0xc) 0/r32/eax @@ -825,7 +825,7 @@ if ('onhashchange' in window) { <span id="L835" class="LineNr"> 835 </span> 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL <span id="L836" class="LineNr"> 836 </span> <span class="subxS1Comment"># . if (eax != '#') goto next check</span> <span id="L837" class="LineNr"> 837 </span> 3d/compare-eax-and 0x23/imm32/pound -<span id="L838" class="LineNr"> 838 </span> 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-string-literal/disp8 +<span id="L838" class="LineNr"> 838 </span> 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-string-literal/disp8 <span id="L839" class="LineNr"> 839 </span><span class="Constant">$next-word-string-or-expression-without-metadata:comment</span>: <span id="L840" class="LineNr"> 840 </span> <span class="subxComment"># out->end = &line->data[line->write]</span> <span id="L841" class="LineNr"> 841 </span> 8b/-> *esi 0/r32/eax @@ -839,7 +839,7 @@ if ('onhashchange' in window) { <span id="L849" class="LineNr"> 849 </span><span class="Constant">$next-word-string-or-expression-without-metadata:check-for-string-literal</span>: <span id="L850" class="LineNr"> 850 </span> <span class="subxComment"># if (line->data[line->read] != '"') goto next check</span> <span id="L851" class="LineNr"> 851 </span> 3d/compare-eax-and 0x22/imm32/dquote -<span id="L852" class="LineNr"> 852 </span> 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-expression/disp8 +<span id="L852" class="LineNr"> 852 </span> 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-expression/disp8 <span id="L853" class="LineNr"> 853 </span><span class="Constant">$next-word-string-or-expression-without-metadata:string-literal</span>: <span id="L854" class="LineNr"> 854 </span> <span class="subxComment"># skip-string(line)</span> <span id="L855" class="LineNr"> 855 </span> <span class="subxS2Comment"># . . push args</span> @@ -857,14 +857,14 @@ if ('onhashchange' in window) { <span id="L867" class="LineNr"> 867 </span><span class="Constant">$next-word-string-or-expression-without-metadata:check-for-expression</span>: <span id="L868" class="LineNr"> 868 </span> <span class="subxComment"># if (line->data[line->read] != '*') goto next check</span> <span id="L869" class="LineNr"> 869 </span> 3d/compare-eax-and 0x2a/imm32/asterisk -<span id="L870" class="LineNr"> 870 </span> 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-end-of-call/disp8 +<span id="L870" class="LineNr"> 870 </span> 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-end-of-call/disp8 <span id="L871" class="LineNr"> 871 </span> <span class="subxComment"># if (line->data[line->read + 1] == ' ') goto error1</span> <span id="L872" class="LineNr"> 872 </span> 8a/copy-byte *(esi+ecx+0xd) 0/r32/AL <span id="L873" class="LineNr"> 873 </span> 3d/compare-eax-and 0x20/imm32/space -<span id="L874" class="LineNr"> 874 </span> 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error1/disp32 +<span id="L874" class="LineNr"> 874 </span> 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error1/disp32 <span id="L875" class="LineNr"> 875 </span> <span class="subxComment"># if (line->data[line->read + 1] != '(') goto regular-word</span> <span id="L876" class="LineNr"> 876 </span> 3d/compare-eax-and 0x28/imm32/open-paren -<span id="L877" class="LineNr"> 877 </span> 0f 85/jump-if-not-equal $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp32 +<span id="L877" class="LineNr"> 877 </span> 0f 85/jump-if-!= $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp32 <span id="L878" class="LineNr"> 878 </span><span class="Constant">$next-word-string-or-expression-without-metadata:paren</span>: <span id="L879" class="LineNr"> 879 </span> <span class="subxComment"># skip-until-close-paren(line)</span> <span id="L880" class="LineNr"> 880 </span> <span class="subxS2Comment"># . . push args</span> @@ -879,7 +879,7 @@ if ('onhashchange' in window) { <span id="L889" class="LineNr"> 889 </span> 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL <span id="L890" class="LineNr"> 890 </span> <span class="subxS1Comment"># . if (eax != ')') goto error2</span> <span id="L891" class="LineNr"> 891 </span> 3d/compare-eax-and 0x29/imm32/close-paren -<span id="L892" class="LineNr"> 892 </span> 0f 85/jump-if-not-equal $next-word-string-or-expression-without-metadata:error2/disp32 +<span id="L892" class="LineNr"> 892 </span> 0f 85/jump-if-!= $next-word-string-or-expression-without-metadata:error2/disp32 <span id="L893" class="LineNr"> 893 </span> <span class="subxComment"># ++line->read to skip ')'</span> <span id="L894" class="LineNr"> 894 </span> ff 0/subop/increment *(esi+4) <span id="L895" class="LineNr"> 895 </span> <span class="subxComment"># out->end = &line->data[line->read]</span> @@ -891,7 +891,7 @@ if ('onhashchange' in window) { <span id="L901" class="LineNr"> 901 </span><span class="Constant">$next-word-string-or-expression-without-metadata:check-for-end-of-call</span>: <span id="L902" class="LineNr"> 902 </span> <span class="subxComment"># if (line->data[line->read] != ')') goto next check</span> <span id="L903" class="LineNr"> 903 </span> 3d/compare-eax-and 0x29/imm32/close-paren -<span id="L904" class="LineNr"> 904 </span> 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp8 +<span id="L904" class="LineNr"> 904 </span> 75/jump-if-!= $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp8 <span id="L905" class="LineNr"> 905 </span> <span class="subxComment"># ++line->read to skip ')'</span> <span id="L906" class="LineNr"> 906 </span> ff 0/subop/increment *(esi+4) <span id="L907" class="LineNr"> 907 </span> <span class="subxH1Comment"># - error checking: make sure there's nothing else of importance on the line</span> @@ -900,13 +900,13 @@ if ('onhashchange' in window) { <span id="L910" class="LineNr"> 910 </span> 8b/-> *(esi+4) 1/r32/ecx <span id="L911" class="LineNr"> 911 </span> <span class="subxS1Comment"># . if (ecx >= line->write) return {0, 0}</span> <span id="L912" class="LineNr"> 912 </span> 3b/compare 1/r32/ecx *esi -<span id="L913" class="LineNr"> 913 </span> 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 +<span id="L913" class="LineNr"> 913 </span> 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 <span id="L914" class="LineNr"> 914 </span> <span class="subxComment"># if (line->data[line->read] == '/') goto error3</span> <span id="L915" class="LineNr"> 915 </span> <span class="subxS1Comment"># . eax = line->data[line->read]</span> <span id="L916" class="LineNr"> 916 </span> 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL <span id="L917" class="LineNr"> 917 </span> <span class="subxS1Comment"># . if (eax == '/') goto error3</span> <span id="L918" class="LineNr"> 918 </span> 3d/compare-eax-and 0x2f/imm32/slash -<span id="L919" class="LineNr"> 919 </span> 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error3/disp32 +<span id="L919" class="LineNr"> 919 </span> 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error3/disp32 <span id="L920" class="LineNr"> 920 </span> <span class="subxComment"># skip-chars-matching-whitespace(line)</span> <span id="L921" class="LineNr"> 921 </span> <span class="subxS2Comment"># . . push args</span> <span id="L922" class="LineNr"> 922 </span> 56/push-esi @@ -919,14 +919,14 @@ if ('onhashchange' in window) { <span id="L929" class="LineNr"> 929 </span> 8b/-> *(esi+4) 1/r32/ecx <span id="L930" class="LineNr"> 930 </span> <span class="subxS1Comment"># . if (ecx >= line->write) return {0, 0}</span> <span id="L931" class="LineNr"> 931 </span> 3b/compare 1/r32/ecx *esi -<span id="L932" class="LineNr"> 932 </span> 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 +<span id="L932" class="LineNr"> 932 </span> 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 <span id="L933" class="LineNr"> 933 </span> <span class="subxComment"># if (line->data[line->read] == '#') return out = {0, 0}</span> <span id="L934" class="LineNr"> 934 </span> <span class="subxS1Comment"># . eax = line->data[line->read]</span> <span id="L935" class="LineNr"> 935 </span> 8b/-> *(esi+4) 1/r32/ecx <span id="L936" class="LineNr"> 936 </span> 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL <span id="L937" class="LineNr"> 937 </span> <span class="subxS1Comment"># . if (eax == '#') return out = {0, 0}</span> <span id="L938" class="LineNr"> 938 </span> 3d/compare-eax-and 0x23/imm32/pound -<span id="L939" class="LineNr"> 939 </span> 74/jump-if-equal $next-word-string-or-expression-without-metadata:return-eol/disp8 +<span id="L939" class="LineNr"> 939 </span> 74/jump-if-= $next-word-string-or-expression-without-metadata:return-eol/disp8 <span id="L940" class="LineNr"> 940 </span> <span class="subxComment"># otherwise goto error4</span> <span id="L941" class="LineNr"> 941 </span> e9/jump $next-word-string-or-expression-without-metadata:error4/disp32 <span id="L942" class="LineNr"> 942 </span><span class="Constant">$next-word-string-or-expression-without-metadata:regular-word-without-metadata</span>: @@ -935,20 +935,20 @@ if ('onhashchange' in window) { <span id="L945" class="LineNr"> 945 </span> 8b/-> *(esi+4) 1/r32/ecx <span id="L946" class="LineNr"> 946 </span> <span class="subxS1Comment"># . if (ecx >= line->write) break</span> <span id="L947" class="LineNr"> 947 </span> 3b/compare *esi 1/r32/ecx -<span id="L948" class="LineNr"> 948 </span> 7d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp8 +<span id="L948" class="LineNr"> 948 </span> 7d/jump-if->= $next-word-string-or-expression-without-metadata:regular-word-break/disp8 <span id="L949" class="LineNr"> 949 </span> <span class="subxComment"># if (line->data[line->read] == ' ') break</span> <span id="L950" class="LineNr"> 950 </span> <span class="subxS1Comment"># . eax = line->data[line->read]</span> <span id="L951" class="LineNr"> 951 </span> 8b/-> *(esi+4) 1/r32/ecx <span id="L952" class="LineNr"> 952 </span> 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL <span id="L953" class="LineNr"> 953 </span> <span class="subxS1Comment"># . if (eax == ' ') break</span> <span id="L954" class="LineNr"> 954 </span> 3d/compare-eax-and 0x20/imm32/space -<span id="L955" class="LineNr"> 955 </span> 74/jump-if-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp8 +<span id="L955" class="LineNr"> 955 </span> 74/jump-if-= $next-word-string-or-expression-without-metadata:regular-word-break/disp8 <span id="L956" class="LineNr"> 956 </span> <span class="subxComment"># if (line->data[line->read] == ')') break</span> <span id="L957" class="LineNr"> 957 </span> 3d/compare-eax-and 0x29/imm32/close-paren -<span id="L958" class="LineNr"> 958 </span> 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp32 +<span id="L958" class="LineNr"> 958 </span> 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:regular-word-break/disp32 <span id="L959" class="LineNr"> 959 </span> <span class="subxComment"># if (line->data[line->read] == '/') goto error5</span> <span id="L960" class="LineNr"> 960 </span> 3d/compare-eax-and 0x2f/imm32/slash -<span id="L961" class="LineNr"> 961 </span> 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error5/disp32 +<span id="L961" class="LineNr"> 961 </span> 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error5/disp32 <span id="L962" class="LineNr"> 962 </span> <span class="subxComment"># ++line->read</span> <span id="L963" class="LineNr"> 963 </span> ff 0/subop/increment *(esi+4) <span id="L964" class="LineNr"> 964 </span> <span class="subxComment"># loop</span> |