From 6070c23e5e1c60d3bb169e43bddfa59b1d322427 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Thu, 16 Jan 2020 18:31:12 -0800 Subject: 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. --- html/apps/assort.subx.html | 16 +-- html/apps/braces.subx.html | 18 ++-- html/apps/calls.subx.html | 50 ++++----- html/apps/crenshaw2-1.subx.html | 12 +-- html/apps/crenshaw2-1b.subx.html | 14 +-- html/apps/dquotes.subx.html | 50 ++++----- html/apps/ex10.subx.html | 6 +- html/apps/ex11.subx.html | 8 +- html/apps/ex3.subx.html | 2 +- html/apps/ex8.subx.html | 2 +- html/apps/factorial.subx.html | 4 +- html/apps/factorial2.subx.html | 4 +- html/apps/factorial3.subx.html | 4 +- html/apps/factorial4.subx.html | 10 +- html/apps/handle.subx.html | 6 +- html/apps/hex.subx.html | 44 ++++---- html/apps/mu.subx.html | 220 +++++++++++++++++++-------------------- html/apps/mulisp.subx.html | 8 +- html/apps/pack.subx.html | 98 ++++++++--------- html/apps/sigils.subx.html | 96 ++++++++--------- html/apps/survey.subx.html | 70 ++++++------- html/apps/tests.subx.html | 12 +-- 22 files changed, 377 insertions(+), 377 deletions(-) (limited to 'html/apps') diff --git a/html/apps/assort.subx.html b/html/apps/assort.subx.html index 127ccce8..a7452e6b 100644 --- a/html/apps/assort.subx.html +++ b/html/apps/assort.subx.html @@ -102,7 +102,7 @@ if ('onhashchange' in window) { 40 # - if argc > 1 and argv[1] == "test", then return run_tests() 41 # if (argc <= 1) goto interactive 42 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 43 7e/jump-if-lesser-or-equal $subx-assort-main:interactive/disp8 + 43 7e/jump-if-<= $subx-assort-main:interactive/disp8 44 # if (!kernel-string-equal?(argv[1], "test")) goto interactive 45 # . eax = kernel-string-equal?(argv[1], "test") 46 # . . push args @@ -114,7 +114,7 @@ if ('onhashchange' in window) { 52 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 53 # . if (eax == false) goto interactive 54 3d/compare-eax-and 0/imm32/false - 55 74/jump-if-equal $subx-assort-main:interactive/disp8 + 55 74/jump-if-= $subx-assort-main:interactive/disp8 56 # run-tests() 57 e8/call run-tests/disp32 58 # syscall(exit, *Num-test-failures) @@ -539,7 +539,7 @@ if ('onhashchange' in window) { 525 $read-segments:check0: 526 # if (line->write == 0) break 527 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx -528 0f 84/jump-if-equal $read-segments:break/disp32 +528 0f 84/jump-if-= $read-segments:break/disp32 529 +-- 33 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- 562 # next-word-or-string(line, word-slice) 563 # . . push args @@ -561,7 +561,7 @@ if ('onhashchange' in window) { 587 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 588 # . if (eax != false) continue 589 3d/compare-eax-and 0/imm32/false -590 0f 85/jump-if-not-equal $read-segments:loop/disp32 +590 0f 85/jump-if-!= $read-segments:loop/disp32 591 $read-segments:check-for-comment: 592 +-- 9 lines: #? # print("check for comment\n") ---------------------------------------------------------------------------------------------------------- 601 # if (slice-starts-with?(word-slice, "#")) continue @@ -572,7 +572,7 @@ if ('onhashchange' in window) { 606 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL 607 # . if (c == '#') continue 608 3d/compare-eax-and 0x23/imm32/hash -609 0f 84/jump-if-equal $read-segments:loop/disp32 +609 0f 84/jump-if-= $read-segments:loop/disp32 610 $read-segments:check-for-segment-header: 611 +-- 9 lines: #? # print("check for segment header\n") --------------------------------------------------------------------------------------------------- 620 +-- 40 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- @@ -587,7 +587,7 @@ if ('onhashchange' in window) { 668 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 669 # . if (eax == false) goto check3 670 3d/compare-eax-and 0/imm32/false -671 0f 84/jump-if-equal $read-segments:regular-line/disp32 +671 0f 84/jump-if-= $read-segments:regular-line/disp32 672 # segment-name = next-word-or-string(line) 673 # . . push args 674 52/push-edx @@ -610,7 +610,7 @@ if ('onhashchange' in window) { 730 8b/copy 0/mod/indirect 0/rm32/eax . . . 3/r32/ebx . . # copy *eax to ebx 731 # if (curr-segment != 0) continue 732 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32 # compare ebx -733 0f 85/jump-if-not-equal $read-segments:loop/disp32 +733 0f 85/jump-if-!= $read-segments:loop/disp32 734 # curr-segment = new-stream(Heap, Segment-size, 1) 735 # . save segment-slot 736 50/push-eax @@ -695,7 +695,7 @@ if ('onhashchange' in window) { 871 $write-segments:loop: 872 # if (curr >= max) break 873 39/compare 3/mod/direct 6/rm32/esi . . . 2/r32/edx . . # compare esi with edx -874 73/jump-if-greater-or-equal-unsigned $write-segments:break/disp8 +874 73/jump-if-addr>= $write-segments:break/disp8 875 # var stream/eax : (addr stream byte) = table[i].stream 876 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax 877 # write-stream-data(out, stream) diff --git a/html/apps/braces.subx.html b/html/apps/braces.subx.html index 038eb673..47428966 100644 --- a/html/apps/braces.subx.html +++ b/html/apps/braces.subx.html @@ -116,11 +116,11 @@ if ('onhashchange' in window) { 57 (new-segment *Heap-size Heap) 58 # if (argc <= 1) goto interactive 59 81 7/subop/compare *ebp 1/imm32 - 60 7e/jump-if-lesser-or-equal $subx-braces-main:interactive/disp8 + 60 7e/jump-if-<= $subx-braces-main:interactive/disp8 61 # if (argv[1] != "test")) goto interactive 62 (kernel-string-equal? *(ebp+8) "test") # => eax 63 3d/compare-eax-and 0/imm32 - 64 74/jump-if-equal $subx-braces-main:interactive/disp8 + 64 74/jump-if-= $subx-braces-main:interactive/disp8 65 # 66 (run-tests) 67 # syscall(exit, *Num-test-failures) @@ -205,7 +205,7 @@ if ('onhashchange' in window) { 146 $subx-braces:check0: 147 # if (line->write == 0) break 148 81 7/subop/compare *ecx 0/imm32 -149 0f 84/jump-if-equal $subx-braces:break/disp32 +149 0f 84/jump-if-= $subx-braces:break/disp32 150 (skip-chars-matching-whitespace %ecx) 151 $subx-braces:check-for-curly-open: 152 # if (line->data[line->read] != '{') goto next check @@ -215,7 +215,7 @@ if ('onhashchange' in window) { 156 81 4/subop/and %eax 0xff/imm32 157 # . if (eax != '{') continue 158 3d/compare-eax-and 0x7b/imm32/open-curly -159 0f 85/jump-if-not-equal $subx-braces:check-for-curly-closed/disp32 +159 0f 85/jump-if-!= $subx-braces:check-for-curly-closed/disp32 160 $subx-braces:emit-curly-open: 161 # print(out, "_loop" next-label-id ":") 162 (write-buffered *(ebp+0xc) "_loop") @@ -230,7 +230,7 @@ if ('onhashchange' in window) { 171 $subx-braces:check-for-curly-closed: 172 # if (line->data[line->read] != '}') goto next check 173 3d/compare-eax-and 0x7d/imm32/close-curly -174 0f 85/jump-if-equal $subx-braces:word-loop/disp32 +174 0f 85/jump-if-= $subx-braces:word-loop/disp32 175 $subx-braces:emit-curly-closed: 176 # eax = pop(label-stack) 177 (pop %edx) @@ -246,7 +246,7 @@ if ('onhashchange' in window) { 187 # if (slice-empty?(word-slice)) break 188 (slice-empty? %edi) 189 3d/compare-eax-and 0/imm32 -190 0f 85/jump-if-not-equal $subx-braces:next-line/disp32 +190 0f 85/jump-if-!= $subx-braces:next-line/disp32 191 $subx-braces:check-for-comment: 192 # if (slice-starts-with?(word-slice, "#")) continue 193 # . eax = *word-slice->start @@ -255,14 +255,14 @@ if ('onhashchange' in window) { 196 81 4/subop/and %eax 0xff/imm32 197 # . if (eax == '#') continue 198 3d/compare-eax-and 0x23/imm32/hash -199 74/jump-if-equal $subx-braces:word-loop/disp8 +199 74/jump-if-= $subx-braces:word-loop/disp8 200 $subx-braces:check-for-break: 201 # if (!slice-starts-with?(word-slice, "break/")) goto next check 202 # . eax = slice-starts-with?(word-slice, "break/") 203 (slice-starts-with? %edi "break/") 204 # . if (eax == false) goto next check 205 3d/compare-eax-and 0/imm32/false -206 74/jump-if-equal $subx-braces:check-for-loop/disp8 +206 74/jump-if-= $subx-braces:check-for-loop/disp8 207 $subx-braces:emit-break: 208 (top %edx) 209 # print(out, "_break" eax) @@ -278,7 +278,7 @@ if ('onhashchange' in window) { 219 (slice-starts-with? %edi "loop/") 220 # . if (eax == false) goto next check 221 3d/compare-eax-and 0/imm32/false -222 74/jump-if-equal $subx-braces:emit-word-slice/disp8 +222 74/jump-if-= $subx-braces:emit-word-slice/disp8 223 $subx-braces:emit-loop: 224 (top %edx) 225 # print(out, "_loop" eax) 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) { 41 # - if argc > 1 and argv[1] == "test", then return run_tests() 42 # if (argc <= 1) goto run-main 43 81 7/subop/compare *ebp 1/imm32 - 44 7e/jump-if-lesser-or-equal $subx-calls-main:interactive/disp8 + 44 7e/jump-if-<= $subx-calls-main:interactive/disp8 45 # if (!kernel-string-equal?(argv[1], "test")) goto run-main 46 # . eax = kernel-string-equal?(argv[1], "test") 47 # . . push args @@ -114,7 +114,7 @@ if ('onhashchange' in window) { 53 81 0/subop/add %esp 8/imm32 54 # . if (eax == false) goto run-main 55 3d/compare-eax-and 0/imm32/false - 56 74/jump-if-equal $subx-calls-main:interactive/disp8 + 56 74/jump-if-= $subx-calls-main:interactive/disp8 57 # run-tests() 58 e8/call run-tests/disp32 59 # syscall(exit, *Num-test-failures) @@ -197,7 +197,7 @@ if ('onhashchange' in window) { 136 $subx-calls:check0: 137 # if (line->write == 0) break 138 81 7/subop/compare *esi 0/imm32 - 139 0f 84/jump-if-equal $subx-calls:break/disp32 + 139 0f 84/jump-if-= $subx-calls:break/disp32 140 # skip-chars-matching-whitespace(line) 141 # . . push args 142 56/push-esi @@ -213,7 +213,7 @@ if ('onhashchange' in window) { 152 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL 153 # . if (eax == '(') goto convert-call 154 3d/compare-eax-and 0x28/imm32/open-paren - 155 74/jump-if-equal $subx-calls:convert-call/disp8 + 155 74/jump-if-= $subx-calls:convert-call/disp8 156 $subx-calls:pass-through: 157 # write-stream-data(out, line) 158 # . . push args @@ -331,7 +331,7 @@ if ('onhashchange' in window) { 270 81 0/subop/add %esp 4/imm32 271 # . if (eax != false) break 272 3d/compare-eax-and 0/imm32/false - 273 0f 85/jump-if-not-equal $parse-line:end/disp32 + 273 0f 85/jump-if-!= $parse-line:end/disp32 274 +-- 40 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- 314 $parse-line:write-word: 315 # write-int(words, word-slice->start) @@ -402,7 +402,7 @@ if ('onhashchange' in window) { 380 # . ecx = words->write - 8 381 8b/-> *esi 1/r32/ecx 382 81 5/subop/subtract %ecx 8/imm32 - 383 0f 8c/jump-if-lesser $emit-call:error1/disp32 + 383 0f 8c/jump-if-< $emit-call:error1/disp32 384 # var curr/ecx : (addr slice) = &words->data[words->write-8] 385 8d/copy-address *(esi+ecx+0xc) 1/r32/ecx 386 # var min/edx : (addr byte) = words->data @@ -411,7 +411,7 @@ if ('onhashchange' in window) { 389 $emit-call:push-loop: 390 # if (curr <= min) break 391 39/compare %ecx 2/r32/edx - 392 0f 8e/jump-if-lesser-or-equal $emit-call:call-instruction/disp32 + 392 0f 8e/jump-if-<= $emit-call:call-instruction/disp32 393 # if (*curr->start in '%' '*') goto push-rm32 394 # . var start/eax : (addr byte) = curr->start 395 8b/-> *ecx 0/r32/eax @@ -420,10 +420,10 @@ if ('onhashchange' in window) { 398 81 4/subop/and %eax 0xff/imm32 399 # . if (c == '%') goto push-rm32 400 3d/compare-eax-and 0x25/imm32/percent - 401 74/jump-if-equal $emit-call:push-rm32/disp8 + 401 74/jump-if-= $emit-call:push-rm32/disp8 402 # . if (c == '*') goto push-rm32 403 3d/compare-eax-and 0x2a/imm32/asterisk - 404 74/jump-if-equal $emit-call:push-rm32/disp8 + 404 74/jump-if-= $emit-call:push-rm32/disp8 405 $emit-call:push-imm32: 406 # write-buffered(out, "68/push ") 407 68/push "68/push "/imm32 @@ -814,7 +814,7 @@ if ('onhashchange' in window) { 824 8b/-> *(esi+4) 1/r32/ecx 825 # . if (ecx >= line->write) return out = {0, 0} 826 3b/compare 1/r32/ecx *esi - 827 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 + 827 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 828 $next-word-string-or-expression-without-metadata:check-for-comment: 829 # out->start = &line->data[line->read] 830 8d/copy-address *(esi+ecx+0xc) 0/r32/eax @@ -825,7 +825,7 @@ if ('onhashchange' in window) { 835 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL 836 # . if (eax != '#') goto next check 837 3d/compare-eax-and 0x23/imm32/pound - 838 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-string-literal/disp8 + 838 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-string-literal/disp8 839 $next-word-string-or-expression-without-metadata:comment: 840 # out->end = &line->data[line->write] 841 8b/-> *esi 0/r32/eax @@ -839,7 +839,7 @@ if ('onhashchange' in window) { 849 $next-word-string-or-expression-without-metadata:check-for-string-literal: 850 # if (line->data[line->read] != '"') goto next check 851 3d/compare-eax-and 0x22/imm32/dquote - 852 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-expression/disp8 + 852 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-expression/disp8 853 $next-word-string-or-expression-without-metadata:string-literal: 854 # skip-string(line) 855 # . . push args @@ -857,14 +857,14 @@ if ('onhashchange' in window) { 867 $next-word-string-or-expression-without-metadata:check-for-expression: 868 # if (line->data[line->read] != '*') goto next check 869 3d/compare-eax-and 0x2a/imm32/asterisk - 870 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-end-of-call/disp8 + 870 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-end-of-call/disp8 871 # if (line->data[line->read + 1] == ' ') goto error1 872 8a/copy-byte *(esi+ecx+0xd) 0/r32/AL 873 3d/compare-eax-and 0x20/imm32/space - 874 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error1/disp32 + 874 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error1/disp32 875 # if (line->data[line->read + 1] != '(') goto regular-word 876 3d/compare-eax-and 0x28/imm32/open-paren - 877 0f 85/jump-if-not-equal $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp32 + 877 0f 85/jump-if-!= $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp32 878 $next-word-string-or-expression-without-metadata:paren: 879 # skip-until-close-paren(line) 880 # . . push args @@ -879,7 +879,7 @@ if ('onhashchange' in window) { 889 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL 890 # . if (eax != ')') goto error2 891 3d/compare-eax-and 0x29/imm32/close-paren - 892 0f 85/jump-if-not-equal $next-word-string-or-expression-without-metadata:error2/disp32 + 892 0f 85/jump-if-!= $next-word-string-or-expression-without-metadata:error2/disp32 893 # ++line->read to skip ')' 894 ff 0/subop/increment *(esi+4) 895 # out->end = &line->data[line->read] @@ -891,7 +891,7 @@ if ('onhashchange' in window) { 901 $next-word-string-or-expression-without-metadata:check-for-end-of-call: 902 # if (line->data[line->read] != ')') goto next check 903 3d/compare-eax-and 0x29/imm32/close-paren - 904 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp8 + 904 75/jump-if-!= $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp8 905 # ++line->read to skip ')' 906 ff 0/subop/increment *(esi+4) 907 # - error checking: make sure there's nothing else of importance on the line @@ -900,13 +900,13 @@ if ('onhashchange' in window) { 910 8b/-> *(esi+4) 1/r32/ecx 911 # . if (ecx >= line->write) return {0, 0} 912 3b/compare 1/r32/ecx *esi - 913 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 + 913 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 914 # if (line->data[line->read] == '/') goto error3 915 # . eax = line->data[line->read] 916 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL 917 # . if (eax == '/') goto error3 918 3d/compare-eax-and 0x2f/imm32/slash - 919 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error3/disp32 + 919 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error3/disp32 920 # skip-chars-matching-whitespace(line) 921 # . . push args 922 56/push-esi @@ -919,14 +919,14 @@ if ('onhashchange' in window) { 929 8b/-> *(esi+4) 1/r32/ecx 930 # . if (ecx >= line->write) return {0, 0} 931 3b/compare 1/r32/ecx *esi - 932 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 + 932 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 933 # if (line->data[line->read] == '#') return out = {0, 0} 934 # . eax = line->data[line->read] 935 8b/-> *(esi+4) 1/r32/ecx 936 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL 937 # . if (eax == '#') return out = {0, 0} 938 3d/compare-eax-and 0x23/imm32/pound - 939 74/jump-if-equal $next-word-string-or-expression-without-metadata:return-eol/disp8 + 939 74/jump-if-= $next-word-string-or-expression-without-metadata:return-eol/disp8 940 # otherwise goto error4 941 e9/jump $next-word-string-or-expression-without-metadata:error4/disp32 942 $next-word-string-or-expression-without-metadata:regular-word-without-metadata: @@ -935,20 +935,20 @@ if ('onhashchange' in window) { 945 8b/-> *(esi+4) 1/r32/ecx 946 # . if (ecx >= line->write) break 947 3b/compare *esi 1/r32/ecx - 948 7d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp8 + 948 7d/jump-if->= $next-word-string-or-expression-without-metadata:regular-word-break/disp8 949 # if (line->data[line->read] == ' ') break 950 # . eax = line->data[line->read] 951 8b/-> *(esi+4) 1/r32/ecx 952 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL 953 # . if (eax == ' ') break 954 3d/compare-eax-and 0x20/imm32/space - 955 74/jump-if-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp8 + 955 74/jump-if-= $next-word-string-or-expression-without-metadata:regular-word-break/disp8 956 # if (line->data[line->read] == ')') break 957 3d/compare-eax-and 0x29/imm32/close-paren - 958 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp32 + 958 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:regular-word-break/disp32 959 # if (line->data[line->read] == '/') goto error5 960 3d/compare-eax-and 0x2f/imm32/slash - 961 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error5/disp32 + 961 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error5/disp32 962 # ++line->read 963 ff 0/subop/increment *(esi+4) 964 # loop diff --git a/html/apps/crenshaw2-1.subx.html b/html/apps/crenshaw2-1.subx.html index df65b7c6..e42c901c 100644 --- a/html/apps/crenshaw2-1.subx.html +++ b/html/apps/crenshaw2-1.subx.html @@ -108,7 +108,7 @@ if ('onhashchange' in window) { 47 # - if argc > 1 and argv[1] == "test", then return run_tests() 48 # if (argc <= 1) goto run-main 49 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 50 7e/jump-if-lesser-or-equal $run-main/disp8 + 50 7e/jump-if-<= $run-main/disp8 51 # if (!kernel-string-equal?(argv[1], "test")) goto run-main 52 # . eax = kernel-string-equal?(argv[1], "test") 53 # . . push args @@ -120,7 +120,7 @@ if ('onhashchange' in window) { 59 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 60 # . if (eax == false) goto run-main 61 3d/compare-eax-and 0/imm32/false - 62 74/jump-if-equal $run-main/disp8 + 62 74/jump-if-= $run-main/disp8 63 # run-tests() 64 e8/call run-tests/disp32 65 # syscall(exit, *Num-test-failures) @@ -285,7 +285,7 @@ if ('onhashchange' in window) { 224 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 225 # . if (eax == false) 226 3d/compare-eax-and 0/imm32/false -227 75/jump-if-not-equal $get-num:main/disp8 +227 75/jump-if-!= $get-num:main/disp8 228 # . expected(ed, err, "integer") 229 # . . push args 230 68/push "integer"/imm32 @@ -316,7 +316,7 @@ if ('onhashchange' in window) { 255 $get-num:loop: 256 # if (out->write >= out->length) error 257 39/compare 3/mod/direct 2/rm32/edx . . . 1/r32/ecx . . # compare edx with ecx -258 7d/jump-if-lesser $get-num:stage2/disp8 +258 7d/jump-if-< $get-num:stage2/disp8 259 # . error(ed, err, msg) # TODO: show full number 260 # . . push args 261 68/push "get-num: too many digits in number"/imm32 @@ -604,10 +604,10 @@ if ('onhashchange' in window) { 543 b8/copy-to-eax 0/imm32 544 # if (c < '0') return false 545 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x30/imm32 # compare *(ebp+8) -546 7c/jump-if-lesser $is-digit?:end/disp8 +546 7c/jump-if-< $is-digit?:end/disp8 547 # if (c > '9') return false 548 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x39/imm32 # compare *(ebp+8) -549 7f/jump-if-greater $is-digit?:end/disp8 +549 7f/jump-if-> $is-digit?:end/disp8 550 # otherwise return true 551 b8/copy-to-eax 1/imm32 552 $is-digit?:end: diff --git a/html/apps/crenshaw2-1b.subx.html b/html/apps/crenshaw2-1b.subx.html index 4327640b..ae74e982 100644 --- a/html/apps/crenshaw2-1b.subx.html +++ b/html/apps/crenshaw2-1b.subx.html @@ -108,7 +108,7 @@ if ('onhashchange' in window) { 47 # - if argc > 1 and argv[1] == "test", then return run_tests() 48 # if (argc <= 1) goto run-main 49 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 50 7e/jump-if-lesser-or-equal $run-main/disp8 + 50 7e/jump-if-<= $run-main/disp8 51 # if (!kernel-string-equal?(argv[1], "test")) goto run-main 52 # . eax = kernel-string-equal?(argv[1], "test") 53 # . . push args @@ -120,7 +120,7 @@ if ('onhashchange' in window) { 59 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 60 # . if (eax == false) goto run-main 61 3d/compare-eax-and 0/imm32/false - 62 74/jump-if-equal $run-main/disp8 + 62 74/jump-if-= $run-main/disp8 63 # run-tests() 64 e8/call run-tests/disp32 65 # syscall(exit, *Num-test-failures) @@ -290,7 +290,7 @@ if ('onhashchange' in window) { 229 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 230 # . if (eax == false) 231 3d/compare-eax-and 0/imm32/false -232 75/jump-if-not-equal $get-num:main/disp8 +232 75/jump-if-!= $get-num:main/disp8 233 # . expected(ed, err, "integer") 234 # . . push args 235 68/push "integer"/imm32 @@ -321,7 +321,7 @@ if ('onhashchange' in window) { 260 $get-num:loop: 261 # if (out->write >= out->length) error 262 39/compare 3/mod/direct 2/rm32/edx . . . 1/r32/ecx . . # compare edx with ecx -263 7d/jump-if-lesser $get-num:loop-stage2/disp8 +263 7d/jump-if-< $get-num:loop-stage2/disp8 264 # . error(ed, err, msg) # TODO: show full number 265 # . . push args 266 68/push "get-num: too many digits in number"/imm32 @@ -355,7 +355,7 @@ if ('onhashchange' in window) { 294 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 295 # . if (eax != false) loop 296 3d/compare-eax-and 0/imm32/false -297 0f 85/jump-if-not-equal $get-num:loop/disp32 +297 0f 85/jump-if-!= $get-num:loop/disp32 298 $get-num:loop-end: 299 # persist necessary variables from registers 300 89/copy 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # copy ecx to *edi @@ -798,10 +798,10 @@ if ('onhashchange' in window) { 737 b8/copy-to-eax 0/imm32 738 # if (c < '0') return false 739 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x30/imm32 # compare *(ebp+8) -740 7c/jump-if-lesser $is-digit?:end/disp8 +740 7c/jump-if-< $is-digit?:end/disp8 741 # if (c > '9') return false 742 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x39/imm32 # compare *(ebp+8) -743 7f/jump-if-greater $is-digit?:end/disp8 +743 7f/jump-if-> $is-digit?:end/disp8 744 # otherwise return true 745 b8/copy-to-eax 1/imm32 746 $is-digit?:end: diff --git a/html/apps/dquotes.subx.html b/html/apps/dquotes.subx.html index 03753533..367f650e 100644 --- a/html/apps/dquotes.subx.html +++ b/html/apps/dquotes.subx.html @@ -99,7 +99,7 @@ if ('onhashchange' in window) { 36 # - if argc > 1 and argv[1] == "test", then return run-tests() 37 # if (argc <= 1) goto interactive 38 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 39 7e/jump-if-lesser-or-equal $subx-dquotes-main:interactive/disp8 + 39 7e/jump-if-<= $subx-dquotes-main:interactive/disp8 40 # if (!kernel-string-equal?(argv[1], "test")) goto interactive 41 # . eax = kernel-string-equal?(argv[1], "test") 42 # . . push args @@ -111,7 +111,7 @@ if ('onhashchange' in window) { 48 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 49 # . if (eax == false) goto interactive 50 3d/compare-eax-and 0/imm32/false - 51 74/jump-if-equal $subx-dquotes-main:interactive/disp8 + 51 74/jump-if-= $subx-dquotes-main:interactive/disp8 52 # run-tests() 53 e8/call run-tests/disp32 54 # syscall(exit, *Num-test-failures) @@ -237,7 +237,7 @@ if ('onhashchange' in window) { 174 $subx-dquotes:check0: 175 # if (line->write == 0) break 176 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 177 0f 84/jump-if-equal $subx-dquotes:break/disp32 + 177 0f 84/jump-if-= $subx-dquotes:break/disp32 178 $subx-dquotes:word-loop: 179 # next-word-or-string(line, word-slice) 180 # . . push args @@ -258,7 +258,7 @@ if ('onhashchange' in window) { 195 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 196 # . if (eax != false) break 197 3d/compare-eax-and 0/imm32/false - 198 0f 85/jump-if-not-equal $subx-dquotes:next-line/disp32 + 198 0f 85/jump-if-!= $subx-dquotes:next-line/disp32 199 $subx-dquotes:check-for-comment: 200 # if (slice-starts-with?(word-slice, "#")) continue 201 # . var start/esi : (addr byte) = word-slice->start @@ -268,11 +268,11 @@ if ('onhashchange' in window) { 205 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL 206 # . if (c == '#') continue 207 3d/compare-eax-and 0x23/imm32/hash - 208 74/jump-if-equal $subx-dquotes:word-loop/disp8 + 208 74/jump-if-= $subx-dquotes:word-loop/disp8 209 $subx-dquotes:check-for-string-literal: 210 # if (slice-starts-with?(word-slice, '"')) continue 211 3d/compare-eax-and 0x22/imm32/dquote - 212 75/jump-if-not-equal $subx-dquotes:regular-word/disp8 + 212 75/jump-if-!= $subx-dquotes:regular-word/disp8 213 $subx-dquotes:string-literal: 214 # process-string-literal(word-slice, out, new-data-segment) 215 # . . push args @@ -931,25 +931,25 @@ if ('onhashchange' in window) { 925 $emit-string-literal-data:loop: 926 # if (curr >= max) break 927 39/compare 3/mod/direct 2/rm32/edx . . . 6/r32/esi . . # compare edx with esi - 928 0f 83/jump-if-greater-or-equal-unsigned $emit-string-literal-data:end/disp32 + 928 0f 83/jump-if-addr>= $emit-string-literal-data:end/disp32 929 # CL = *curr 930 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL 931 # if (c == '"') break 932 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x22/imm32/dquote # compare ecx - 933 0f 84/jump-if-equal $emit-string-literal-data:end/disp32 + 933 0f 84/jump-if-= $emit-string-literal-data:end/disp32 934 # if (c != '\') goto emit 935 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x5c/imm32/backslash # compare ecx - 936 75/jump-if-not-equal $emit-string-literal-data:emit/disp8 + 936 75/jump-if-!= $emit-string-literal-data:emit/disp8 937 # ++curr 938 42/increment-edx 939 # if (curr >= max) break 940 39/compare 3/mod/direct 2/rm32/edx . . . 6/r32/esi . . # compare edx with esi - 941 0f 83/jump-if-greater-or-equal-unsigned $emit-string-literal-data:end/disp32 + 941 0f 83/jump-if-addr>= $emit-string-literal-data:end/disp32 942 # c = *curr 943 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL 944 # if (c == 'n') c = newline 945 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x6e/imm32/n # compare ecx - 946 75/jump-if-not-equal $emit-string-literal-data:emit/disp8 + 946 75/jump-if-!= $emit-string-literal-data:emit/disp8 947 b9/copy-to-ecx 0x0a/imm32/newline 948 $emit-string-literal-data:emit: 949 # append-byte-hex(out, CL) @@ -970,7 +970,7 @@ if ('onhashchange' in window) { 964 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 965 # . if (eax == false) goto char-done 966 3d/compare-eax-and 0/imm32/false - 967 74/jump-if-equal $emit-string-literal-data:char-done/disp8 + 967 74/jump-if-= $emit-string-literal-data:char-done/disp8 968 # . write(out, "/") 969 # . . push args 970 68/push Slash/imm32 @@ -1002,7 +1002,7 @@ if ('onhashchange' in window) { 996 43/increment-ebx 997 # if (idx < 0x40) continue 998 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x40/imm32 # compare ebx - 999 7c/jump-if-lesser $emit-string-literal-data:next-char/disp8 + 999 7c/jump-if-< $emit-string-literal-data:next-char/disp8 1000 # idx = 0 1001 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx 1002 # write(out, "\n") @@ -1035,22 +1035,22 @@ if ('onhashchange' in window) { 1029 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 8/disp8 . # copy *(ebp+8) to eax 1030 # if (c < '0') return false 1031 3d/compare-eax-with 0x30/imm32/0 -1032 7c/jump-if-lesser $is-alphanumeric?:false/disp8 +1032 7c/jump-if-< $is-alphanumeric?:false/disp8 1033 # if (c <= '9') return true 1034 3d/compare-eax-with 0x39/imm32/9 -1035 7e/jump-if-lesser-or-equal $is-alphanumeric?:true/disp8 +1035 7e/jump-if-<= $is-alphanumeric?:true/disp8 1036 # if (c < 'A') return false 1037 3d/compare-eax-with 0x41/imm32/A -1038 7c/jump-if-lesser $is-alphanumeric?:false/disp8 +1038 7c/jump-if-< $is-alphanumeric?:false/disp8 1039 # if (c <= 'Z') return true 1040 3d/compare-eax-with 0x5a/imm32/Z -1041 7e/jump-if-lesser-or-equal $is-alphanumeric?:true/disp8 +1041 7e/jump-if-<= $is-alphanumeric?:true/disp8 1042 # if (c < 'a') return false 1043 3d/compare-eax-with 0x61/imm32/a -1044 7c/jump-if-lesser $is-alphanumeric?:false/disp8 +1044 7c/jump-if-< $is-alphanumeric?:false/disp8 1045 # if (c <= 'z') return true 1046 3d/compare-eax-with 0x7a/imm32/z -1047 7e/jump-if-lesser-or-equal $is-alphanumeric?:true/disp8 +1047 7e/jump-if-<= $is-alphanumeric?:true/disp8 1048 # return false 1049 $is-alphanumeric?:false: 1050 b8/copy-to-eax 0/imm32/false @@ -1301,7 +1301,7 @@ if ('onhashchange' in window) { 1420 # - if (*curr == '"') curr = skip-string-in-slice(curr, end) 1421 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 1422 3d/compare-eax-and 0x22/imm32/dquote -1423 75/jump-if-not-equal $emit-metadata:skip-datum-loop/disp8 +1423 75/jump-if-!= $emit-metadata:skip-datum-loop/disp8 1424 $emit-metadata:skip-string-literal: 1425 # . eax = skip-string-in-slice(curr, end) 1426 # . . push args @@ -1318,11 +1318,11 @@ if ('onhashchange' in window) { 1437 # - otherwise scan for '/' 1438 # if (curr == end) return 1439 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx and edx -1440 74/jump-if-equal $emit-metadata:end/disp8 +1440 74/jump-if-= $emit-metadata:end/disp8 1441 # if (*curr == '/') break 1442 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 1443 3d/compare-eax-and 0x2f/imm32/slash -1444 74/jump-if-equal $emit-metadata:emit/disp8 +1444 74/jump-if-= $emit-metadata:emit/disp8 1445 # ++curr 1446 41/increment-ecx 1447 eb/jump $emit-metadata:skip-datum-loop/disp8 @@ -1655,17 +1655,17 @@ if ('onhashchange' in window) { 1799 $string-length-at-start-of-slice:loop: 1800 # if (curr >= end) return length 1801 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -1802 73/jump-if-greater-unsigned-or-equal $string-length-at-start-of-slice:end/disp8 +1802 73/jump-if-addr>= $string-length-at-start-of-slice:end/disp8 1803 # c = *curr 1804 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL 1805 $string-length-at-start-of-slice:dquote: 1806 # if (c == '"') break 1807 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x22/imm32/dquote # compare ebx -1808 74/jump-if-equal $string-length-at-start-of-slice:end/disp8 +1808 74/jump-if-= $string-length-at-start-of-slice:end/disp8 1809 $string-length-at-start-of-slice:check-for-escape: 1810 # if (c == '\') escape next char 1811 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x5c/imm32/backslash # compare ebx -1812 75/jump-if-not-equal $string-length-at-start-of-slice:continue/disp8 +1812 75/jump-if-!= $string-length-at-start-of-slice:continue/disp8 1813 $string-length-at-start-of-slice:escape: 1814 # increment curr but not result 1815 41/increment-ecx diff --git a/html/apps/ex10.subx.html b/html/apps/ex10.subx.html index 2671b311..79fbfc5c 100644 --- a/html/apps/ex10.subx.html +++ b/html/apps/ex10.subx.html @@ -104,10 +104,10 @@ if ('onhashchange' in window) { 45 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 3/r32/BL . . # copy byte at *edx to BL 46 # if (c1 == 0) break 47 3d/compare-eax-and 0/imm32 -48 74/jump-if-equal $argv-equal:break/disp8 +48 74/jump-if-= $argv-equal:break/disp8 49 # if (c1 != c2) return false 50 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx -51 75/jump-if-not-equal $argv-equal:false/disp8 +51 75/jump-if-!= $argv-equal:false/disp8 52 # ++s1, ++s2 53 41/increment-ecx 54 42/increment-edx @@ -116,7 +116,7 @@ if ('onhashchange' in window) { 57 $argv-equal:break: 58 # if (c2 == 0) return true 59 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32 # compare ebx -60 75/jump-if-not-equal $argv-equal:false/disp8 +60 75/jump-if-!= $argv-equal:false/disp8 61 $argv-equal:success: 62 b8/copy-to-eax 1/imm32 63 c3/return diff --git a/html/apps/ex11.subx.html b/html/apps/ex11.subx.html index 84519e0e..d9c64f2a 100644 --- a/html/apps/ex11.subx.html +++ b/html/apps/ex11.subx.html @@ -135,17 +135,17 @@ if ('onhashchange' in window) { 73 $kernel-string-equal?:loop: 74 # if (i >= n) break 75 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 76 7d/jump-if-greater-or-equal $kernel-string-equal?:break/disp8 + 76 7d/jump-if->= $kernel-string-equal?:break/disp8 77 # c1 = *s1 78 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL 79 # c2 = *s2 80 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL 81 # if (c1 == 0) return false 82 3d/compare-eax-and 0/imm32 - 83 74/jump-if-equal $kernel-string-equal?:false/disp8 + 83 74/jump-if-= $kernel-string-equal?:false/disp8 84 # if (c1 != c2) return false 85 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 86 75/jump-if-not-equal $kernel-string-equal?:false/disp8 + 86 75/jump-if-!= $kernel-string-equal?:false/disp8 87 # ++i 88 41/increment-ecx 89 # ++s1 @@ -157,7 +157,7 @@ if ('onhashchange' in window) { 95 # return *s1 == 0 96 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL 97 3d/compare-eax-and 0/imm32 - 98 75/jump-if-not-equal $kernel-string-equal?:false/disp8 + 98 75/jump-if-!= $kernel-string-equal?:false/disp8 99 $kernel-string-equal?:true: 100 b8/copy-to-eax 1/imm32 101 eb/jump $kernel-string-equal?:end/disp8 diff --git a/html/apps/ex3.subx.html b/html/apps/ex3.subx.html index e5eece81..31ff11a1 100644 --- a/html/apps/ex3.subx.html +++ b/html/apps/ex3.subx.html @@ -79,7 +79,7 @@ if ('onhashchange' in window) { 21 $loop: 22 # if (counter > 10) break 23 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0xa/imm32 # compare ecx -24 7f/jump-if-greater $exit/disp8 +24 7f/jump-if-> $exit/disp8 25 # result += counter 26 01/add 3/mod/direct 3/rm32/ebx . . . 1/r32/ecx . . # add ecx to ebx 27 # ++counter diff --git a/html/apps/ex8.subx.html b/html/apps/ex8.subx.html index 04c0e1cb..df27c764 100644 --- a/html/apps/ex8.subx.html +++ b/html/apps/ex8.subx.html @@ -103,7 +103,7 @@ if ('onhashchange' in window) { 44 8a/copy-byte 0/mod/* 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL 45 # if (c == '\0') break 46 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx -47 74/jump-if-equal $ascii-length:end/disp8 +47 74/jump-if-= $ascii-length:end/disp8 48 # ++s 49 42/increment-edx 50 # ++result diff --git a/html/apps/factorial.subx.html b/html/apps/factorial.subx.html index 026f22e2..5aa74fc5 100644 --- a/html/apps/factorial.subx.html +++ b/html/apps/factorial.subx.html @@ -96,7 +96,7 @@ if ('onhashchange' in window) { 35 # - if argc > 1 and argv[1] == "test", then return run_tests() 36 # if (argc <= 1) goto run-main 37 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 38 7e/jump-if-lesser-or-equal $run-main/disp8 + 38 7e/jump-if-<= $run-main/disp8 39 # if (!kernel-string-equal?(argv[1], "test")) goto run-main 40 # . eax = kernel-string-equal?(argv[1], "test") 41 # . . push args @@ -108,7 +108,7 @@ if ('onhashchange' in window) { 47 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 48 # . if (eax == false) goto run-main 49 3d/compare-eax-and 0/imm32/false - 50 74/jump-if-equal $run-main/disp8 + 50 74/jump-if-= $run-main/disp8 51 # run-tests() 52 e8/call run-tests/disp32 53 # syscall(exit, *Num-test-failures) diff --git a/html/apps/factorial2.subx.html b/html/apps/factorial2.subx.html index 4d758401..fa0eb720 100644 --- a/html/apps/factorial2.subx.html +++ b/html/apps/factorial2.subx.html @@ -95,7 +95,7 @@ if ('onhashchange' in window) { 35 # - if argc > 1 and argv[1] == "test", then return run_tests() 36 # if (argc <= 1) goto run-main 37 81 7/subop/compare *ebp 1/imm32 - 38 7e/jump-if-lesser-or-equal $run-main/disp8 + 38 7e/jump-if-<= $run-main/disp8 39 # if (!kernel-string-equal?(argv[1], "test")) goto run-main 40 # . eax = kernel-string-equal?(argv[1], "test") 41 # . . push args @@ -107,7 +107,7 @@ if ('onhashchange' in window) { 47 81 0/subop/add %esp 8/imm32 48 # . if (eax == false) goto run-main 49 3d/compare-eax-and 0/imm32/false - 50 74/jump-if-equal $run-main/disp8 + 50 74/jump-if-= $run-main/disp8 51 # run-tests() 52 e8/call run-tests/disp32 53 # syscall(exit, *Num-test-failures) diff --git a/html/apps/factorial3.subx.html b/html/apps/factorial3.subx.html index 04ebfe81..7b7cefe3 100644 --- a/html/apps/factorial3.subx.html +++ b/html/apps/factorial3.subx.html @@ -88,12 +88,12 @@ if ('onhashchange' in window) { 29 # - if argc > 1 and argv[1] == "test", then return run_tests() 30 # if (argc <= 1) goto run-main 31 81 7/subop/compare *ebp 1/imm32 -32 7e/jump-if-lesser-or-equal $run-main/disp8 +32 7e/jump-if-<= $run-main/disp8 33 # if (!kernel-string-equal?(argv[1], "test")) goto run-main 34 (kernel-string-equal? *(ebp+8) "test") # => eax 35 # . if (eax == false) goto run-main 36 3d/compare-eax-and 0/imm32/false -37 74/jump-if-equal $run-main/disp8 +37 74/jump-if-= $run-main/disp8 38 # 39 (run-tests) 40 # syscall(exit, *Num-test-failures) diff --git a/html/apps/factorial4.subx.html b/html/apps/factorial4.subx.html index 143ecc2c..db3331d9 100644 --- a/html/apps/factorial4.subx.html +++ b/html/apps/factorial4.subx.html @@ -90,11 +90,11 @@ if ('onhashchange' in window) { 31 { 32 # if (argc <= 1) break 33 81 7/subop/compare *ebp 1/imm32 -34 7e/jump-if-lesser-or-equal break/disp8 +34 7e/jump-if-<= break/disp8 35 # if (!kernel-string-equal?(argv[1], "test")) break 36 (kernel-string-equal? *(ebp+8) "test") # => eax 37 3d/compare-eax-and 0/imm32/false -38 74/jump-if-equal break/disp8 +38 74/jump-if-= break/disp8 39 # 40 (run-tests) 41 # eax = *Num-test-failures @@ -104,7 +104,7 @@ if ('onhashchange' in window) { 45 { 46 # if (argc > 1) break 47 81 7/subop/compare *ebp 1/imm32 -48 7f/jump-if-greater break/disp8 +48 7f/jump-if-> break/disp8 49 # eax = factorial(5) 50 (factorial 5) 51 # syscall(exit, eax) @@ -123,12 +123,12 @@ if ('onhashchange' in window) { 64 # if (n <= 1) return 1 65 81 7/subop/compare *(ebp+8) 1/imm32 66 { -67 7f/jump-if-greater break/disp8 +67 7f/jump-if-> break/disp8 68 b8/copy-to-eax 1/imm32 69 } 70 # if (n > 1) return n * factorial(n-1) 71 { -72 7e/jump-if-lesser-or-equal break/disp8 +72 7e/jump-if-<= break/disp8 73 # var ebx : int = n-1 74 8b/-> *(ebp+8) 3/r32/ebx 75 4b/decrement-ebx diff --git a/html/apps/handle.subx.html b/html/apps/handle.subx.html index e9470f7e..a3489f99 100644 --- a/html/apps/handle.subx.html +++ b/html/apps/handle.subx.html @@ -132,7 +132,7 @@ if ('onhashchange' in window) { 69 89/copy 1/mod/*+disp8 2/rm32/edx . . . 0/r32/eax 4/disp8 . # copy eax to *(edx+4) 70 # if (eax == 0) out->alloc_id = 0, return 71 3d/compare-eax-and 0/imm32 - 72 75/jump-if-not-equal $new:continue/disp8 + 72 75/jump-if-!= $new:continue/disp8 73 c7 0/subop/copy 0/mod/indirect 2/rm32/edx . . . . . 0/imm32 # copy to *edx 74 eb/jump $new:end/disp8 75 $new:continue: @@ -302,7 +302,7 @@ if ('onhashchange' in window) { 239 8b/copy 0/mod/indirect 0/rm32/eax . . . . . . # copy *eax to eax 240 # if (eax != handle->alloc_id) abort 241 39/compare 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none . 0/r32/eax 4/disp8 . # compare *(esp+4) and eax -242 75/jump-if-not-equal $lookup:abort/disp8 +242 75/jump-if-!= $lookup:abort/disp8 243 # eax = pop handle->address 244 58/pop-to-eax 245 # discard handle->alloc_id @@ -317,7 +317,7 @@ if ('onhashchange' in window) { 254 #? 8b/copy 1/mod/*+disp8 0/rm32/eax . . . 0/r32/eax 4/disp8 . # copy *(eax+4) to eax 255 #? # if (ecx != *eax) abort 256 #? 39/compare 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # compare *eax and ecx -257 #? 75/jump-if-not-equal $lookup:abort/disp8 +257 #? 75/jump-if-!= $lookup:abort/disp8 258 #? # add 4 to eax 259 #? 05/add-to-eax 4/imm32 260 # - } diff --git a/html/apps/hex.subx.html b/html/apps/hex.subx.html index b52d4284..1ea0f352 100644 --- a/html/apps/hex.subx.html +++ b/html/apps/hex.subx.html @@ -95,7 +95,7 @@ if ('onhashchange' in window) { 34 # - if argc > 1 and argv[1] == "test", then return run_tests() 35 # if (argc <= 1) goto interactive 36 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 37 7e/jump-if-lesser-or-equal $subx-hex-main:interactive/disp8 + 37 7e/jump-if-<= $subx-hex-main:interactive/disp8 38 # if (!kernel-string-equal?(argv[1], "test")) goto interactive 39 # . eax = kernel-string-equal?(argv[1], "test") 40 # . . push args @@ -107,7 +107,7 @@ if ('onhashchange' in window) { 46 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 47 # . if (eax == false) goto interactive 48 3d/compare-eax-and 0/imm32/false - 49 74/jump-if-equal $subx-hex-main:interactive/disp8 + 49 74/jump-if-= $subx-hex-main:interactive/disp8 50 # run-tests() 51 e8/call run-tests/disp32 52 # syscall(exit, *Num-test-failures) @@ -163,7 +163,7 @@ if ('onhashchange' in window) { 102 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 103 # if (eax == Eof) break 104 3d/compare-eax-and 0xffffffff/imm32/Eof - 105 74/jump-if-equal $subx-hex:loop-end/disp8 + 105 74/jump-if-= $subx-hex:loop-end/disp8 106 # write-byte-buffered(out, AL) 107 # . . push args 108 50/push-eax @@ -223,7 +223,7 @@ if ('onhashchange' in window) { 162 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 163 # if (eax == Eof) return 164 3d/compare-eax-and 0xffffffff/imm32/Eof - 165 74/jump-if-equal $convert-next-octet:end/disp8 + 165 74/jump-if-= $convert-next-octet:end/disp8 166 # eax = from-hex-char(eax) 167 e8/call from-hex-char/disp32 168 # ecx = eax @@ -239,7 +239,7 @@ if ('onhashchange' in window) { 178 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 179 # if (eax == Eof) error(ed, err, "partial byte found.") 180 3d/compare-eax-and 0xffffffff/imm32/Eof - 181 75/jump-if-not-equal $convert-next-octet:convert/disp8 + 181 75/jump-if-!= $convert-next-octet:convert/disp8 182 # . error-byte(ed, err, msg, '.') # reusing error-byte to avoid creating _yet_ another helper 183 # . . push args 184 68/push 0x2e/imm32/period/dummy @@ -345,7 +345,7 @@ if ('onhashchange' in window) { 284 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 285 # return if abort 286 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 287 75/jump-if-not-equal $test-convert-next-octet:end/disp8 + 287 75/jump-if-!= $test-convert-next-octet:end/disp8 288 # check-ints-equal(eax, 0xab, msg) 289 # . . push args 290 68/push "F - test-convert-next-octet"/imm32 @@ -435,7 +435,7 @@ if ('onhashchange' in window) { 374 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 375 # return if abort 376 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 377 75/jump-if-not-equal $test-convert-next-octet-handles-Eof:end/disp8 + 377 75/jump-if-!= $test-convert-next-octet-handles-Eof:end/disp8 378 # check-ints-equal(eax, Eof, msg) 379 # . . push args 380 68/push "F - test-convert-next-octet-handles-Eof"/imm32 @@ -566,7 +566,7 @@ if ('onhashchange' in window) { 505 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 506 # if (eax == Eof) return eax 507 3d/compare-with-eax 0xffffffff/imm32/Eof - 508 74/jump-if-equal $scan-next-byte:end/disp8 + 508 74/jump-if-= $scan-next-byte:end/disp8 509 # if (is-hex-digit?(eax)) return eax 510 # . save eax for now 511 50/push-eax @@ -582,21 +582,21 @@ if ('onhashchange' in window) { 521 # . restore eax (does not affect flags) 522 58/pop-to-eax 523 # . check whether to return - 524 75/jump-if-not-equal $scan-next-byte:end/disp8 + 524 75/jump-if-!= $scan-next-byte:end/disp8 525 $scan-next-byte:check1: 526 # if (eax == ' ') continue 527 3d/compare-eax-and 0x20/imm32/space - 528 74/jump-if-equal $scan-next-byte:loop/disp8 + 528 74/jump-if-= $scan-next-byte:loop/disp8 529 # if (eax == '\t') continue 530 3d/compare-eax-and 9/imm32/tab - 531 74/jump-if-equal $scan-next-byte:loop/disp8 + 531 74/jump-if-= $scan-next-byte:loop/disp8 532 # if (eax == '\n') continue 533 3d/compare-eax-and 0xa/imm32/newline - 534 74/jump-if-equal $scan-next-byte:loop/disp8 + 534 74/jump-if-= $scan-next-byte:loop/disp8 535 $scan-next-byte:check2: 536 # if (eax == '#') skip-until-newline(in) 537 3d/compare-with-eax 0x23/imm32 - 538 75/jump-if-not-equal $scan-next-byte:check3/disp8 + 538 75/jump-if-!= $scan-next-byte:check3/disp8 539 # . skip-until-newline(in) 540 # . . push args 541 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -702,7 +702,7 @@ if ('onhashchange' in window) { 641 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 642 # return if abort 643 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 644 75/jump-if-not-equal $test-scan-next-byte:end/disp8 + 644 75/jump-if-!= $test-scan-next-byte:end/disp8 645 # check-ints-equal(eax, 0x61/a, msg) 646 # . . push args 647 68/push "F - test-scan-next-byte"/imm32 @@ -800,7 +800,7 @@ if ('onhashchange' in window) { 739 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 740 # return if abort 741 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 742 75/jump-if-not-equal $test-scan-next-byte-skips-whitespace:end/disp8 + 742 75/jump-if-!= $test-scan-next-byte-skips-whitespace:end/disp8 743 # check-ints-equal(eax, 0x61/a, msg) 744 # . . push args 745 68/push "F - test-scan-next-byte-skips-whitespace"/imm32 @@ -906,7 +906,7 @@ if ('onhashchange' in window) { 845 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 846 # return if abort 847 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 848 75/jump-if-not-equal $test-scan-next-byte-skips-comment:end/disp8 + 848 75/jump-if-!= $test-scan-next-byte-skips-comment:end/disp8 849 # check-ints-equal(eax, 0x61/a, msg) 850 # . . push args 851 68/push "F - test-scan-next-byte-skips-comment"/imm32 @@ -1012,7 +1012,7 @@ if ('onhashchange' in window) { 951 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 952 # return if abort 953 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 954 75/jump-if-not-equal $test-scan-next-byte-skips-comment-and-whitespace:end/disp8 + 954 75/jump-if-!= $test-scan-next-byte-skips-comment-and-whitespace:end/disp8 955 # check-ints-equal(eax, 0x61/a, msg) 956 # . . push args 957 68/push "F - test-scan-next-byte-skips-comment-and-whitespace"/imm32 @@ -1120,7 +1120,7 @@ if ('onhashchange' in window) { 1059 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 1060 # return if abort 1061 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) -1062 75/jump-if-not-equal $test-scan-next-byte-skips-whitespace-and-comment:end/disp8 +1062 75/jump-if-!= $test-scan-next-byte-skips-whitespace-and-comment:end/disp8 1063 # check-ints-equal(eax, 0x61/a, msg) 1064 # . . push args 1065 68/push "F - test-scan-next-byte-skips-whitespace-and-comment"/imm32 @@ -1218,7 +1218,7 @@ if ('onhashchange' in window) { 1157 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 1158 # return if abort 1159 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) -1160 75/jump-if-not-equal $test-scan-next-byte-reads-final-byte:end/disp8 +1160 75/jump-if-!= $test-scan-next-byte-reads-final-byte:end/disp8 1161 # check-ints-equal(eax, 0x61/a, msg) 1162 # . . push args 1163 68/push "F - test-scan-next-byte-reads-final-byte"/imm32 @@ -1308,7 +1308,7 @@ if ('onhashchange' in window) { 1247 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 1248 # return if abort 1249 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) -1250 75/jump-if-not-equal $test-scan-next-byte-handles-Eof:end/disp8 +1250 75/jump-if-!= $test-scan-next-byte-handles-Eof:end/disp8 1251 # check-ints-equal(eax, Eof, msg) 1252 # . . push args 1253 68/push "F - test-scan-next-byte-handles-Eof"/imm32 @@ -1434,10 +1434,10 @@ if ('onhashchange' in window) { 1373 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 1374 # . if (eax == Eof) break 1375 3d/compare-eax-and 0xffffffff/imm32/Eof -1376 74/jump-if-equal $skip-until-newline:end/disp8 +1376 74/jump-if-= $skip-until-newline:end/disp8 1377 # . if (eax != 0xa/newline) loop 1378 3d/compare-eax-and 0xa/imm32/newline -1379 75/jump-if-not-equal $skip-until-newline:loop/disp8 +1379 75/jump-if-!= $skip-until-newline:loop/disp8 1380 $skip-until-newline:end: 1381 # . restore registers 1382 58/pop-to-eax diff --git a/html/apps/mu.subx.html b/html/apps/mu.subx.html index f8e3cd69..a16e5c67 100644 --- a/html/apps/mu.subx.html +++ b/html/apps/mu.subx.html @@ -436,11 +436,11 @@ if ('onhashchange' in window) { 374 { 375 # if (argc <= 1) break 376 81 7/subop/compare *ebp 1/imm32 - 377 7e/jump-if-lesser-or-equal break/disp8 + 377 7e/jump-if-<= break/disp8 378 # if (argv[1] != "test") break 379 (kernel-string-equal? *(ebp+8) "test") # => eax 380 3d/compare-eax-and 0/imm32 - 381 74/jump-if-equal break/disp8 + 381 74/jump-if-= break/disp8 382 # 383 (run-tests) 384 # syscall(exit, *Num-test-failures) @@ -1042,13 +1042,13 @@ if ('onhashchange' in window) { 1025 (read-line-buffered *(ebp+8) %ecx) 1026 # if (line->write == 0) break 1027 81 7/subop/compare *ecx 0/imm32 -1028 0f 84/jump-if-equal break/disp32 +1028 0f 84/jump-if-= break/disp32 1029 +-- 6 lines: #? # dump line --------------------------------------------------------------------------------------------------------------------------- 1035 (next-word-or-string %ecx %edx) 1036 # if slice-empty?(word-slice) continue 1037 (slice-empty? %edx) 1038 3d/compare-eax-and 0/imm32 -1039 0f 85/jump-if-not-equal loop/disp32 +1039 0f 85/jump-if-!= loop/disp32 1040 # if (*word-slice->start == "#") continue 1041 # . eax = *word-slice->start 1042 8b/-> *edx 0/r32/eax @@ -1056,13 +1056,13 @@ if ('onhashchange' in window) { 1044 81 4/subop/and %eax 0xff/imm32 1045 # . if (eax == '#') continue 1046 3d/compare-eax-and 0x23/imm32/hash -1047 0f 84/jump-if-equal loop/disp32 +1047 0f 84/jump-if-= loop/disp32 1048 # if (slice-equal?(word-slice, "fn")) parse a function 1049 { 1050 $parse-mu:fn: 1051 (slice-equal? %edx "fn") 1052 3d/compare-eax-and 0/imm32 -1053 0f 84/jump-if-equal break/disp32 +1053 0f 84/jump-if-= break/disp32 1054 # var new-function/eax : (handle function) = populate-mu-function(in, new-function, vars) 1055 (allocate Heap *Function-size) # => eax 1056 (zero-out %eax *Function-size) @@ -1181,15 +1181,15 @@ if ('onhashchange' in window) { 1169 # if (word-slice == '{') abort 1170 (slice-equal? %ecx "{") # => eax 1171 3d/compare-eax-and 0/imm32 -1172 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 +1172 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 1173 # if (word-slice == '->') abort 1174 (slice-equal? %ecx "->") # => eax 1175 3d/compare-eax-and 0/imm32 -1176 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 +1176 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 1177 # if (word-slice == '}') abort 1178 (slice-equal? %ecx "}") # => eax 1179 3d/compare-eax-and 0/imm32 -1180 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 +1180 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 1181 # save function name 1182 (slice-to-string Heap %ecx) # => eax 1183 89/<- *edi 0/r32/eax # Function-name @@ -1202,21 +1202,21 @@ if ('onhashchange' in window) { 1190 # if (word-slice == '{') goto done 1191 (slice-equal? %ecx "{") # => eax 1192 3d/compare-eax-and 0/imm32 -1193 0f 85/jump-if-not-equal $populate-mu-function-header:done/disp32 +1193 0f 85/jump-if-!= $populate-mu-function-header:done/disp32 1194 # if (word-slice == '->') break 1195 (slice-equal? %ecx "->") # => eax 1196 3d/compare-eax-and 0/imm32 -1197 0f 85/jump-if-not-equal break/disp32 +1197 0f 85/jump-if-!= break/disp32 1198 # if (word-slice == '}') abort 1199 (slice-equal? %ecx "}") # => eax 1200 3d/compare-eax-and 0/imm32 -1201 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 +1201 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 1202 # var v/ebx : (handle var) = parse-var-with-type(word-slice, first-line) 1203 (parse-var-with-type %ecx *(ebp+8)) # => eax 1204 89/<- %ebx 0/r32/eax 1205 # assert(v->register == null) 1206 81 7/subop/compare *(ebx+0x10) 0/imm32 # Var-register -1207 0f 85/jump-if-not-equal $populate-mu-function-header:error2/disp32 +1207 0f 85/jump-if-!= $populate-mu-function-header:error2/disp32 1208 # v->stack-offset = next-offset 1209 89/<- *(ebx+0xc) 2/r32/edx # Var-stack-offset 1210 # next-offset += size-of(v) @@ -1236,21 +1236,21 @@ if ('onhashchange' in window) { 1224 # if (word-slice == '{') break 1225 (slice-equal? %ecx "{") # => eax 1226 3d/compare-eax-and 0/imm32 -1227 0f 85/jump-if-not-equal break/disp32 +1227 0f 85/jump-if-!= break/disp32 1228 # if (word-slice == '->') abort 1229 (slice-equal? %ecx "->") # => eax 1230 3d/compare-eax-and 0/imm32 -1231 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 +1231 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 1232 # if (word-slice == '}') abort 1233 (slice-equal? %ecx "}") # => eax 1234 3d/compare-eax-and 0/imm32 -1235 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 +1235 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 1236 # 1237 (parse-var-with-type %ecx *(ebp+8)) # => eax 1238 89/<- %ebx 0/r32/eax 1239 # assert(var->register != null) 1240 81 7/subop/compare *(ebx+0x10) 0/imm32 # Var-register -1241 0f 84/jump-if-equal $populate-mu-function-header:error3/disp32 +1241 0f 84/jump-if-= $populate-mu-function-header:error3/disp32 1242 (append-list Heap %ebx *(edi+0xc)) # Function-outputs => eax 1243 89/<- *(edi+0xc) 0/r32/eax # Function-outputs 1244 e9/jump loop/disp32 @@ -1534,7 +1534,7 @@ if ('onhashchange' in window) { 1522 8a/copy-byte *eax 3/r32/BL 1523 81 4/subop/and %ebx 0xff/imm32 1524 81 7/subop/compare %ebx 0x3a/imm32/colon -1525 75/jump-if-not-equal break/disp8 +1525 75/jump-if-!= break/disp8 1526 89/<- *(ecx+4) 0/r32/eax 1527 } 1528 # . if s ends with ',', decrement s->end @@ -1544,7 +1544,7 @@ if ('onhashchange' in window) { 1532 8a/copy-byte *eax 3/r32/BL 1533 81 4/subop/and %ebx 0xff/imm32 1534 81 7/subop/compare %ebx 0x2c/imm32/comma -1535 75/jump-if-not-equal break/disp8 +1535 75/jump-if-!= break/disp8 1536 89/<- *(ecx+4) 0/r32/eax 1537 } 1538 $parse-var-with-type:write-name: @@ -1560,7 +1560,7 @@ if ('onhashchange' in window) { 1548 8a/copy-byte *eax 3/r32/BL 1549 81 4/subop/and %ebx 0xff/imm32 1550 81 7/subop/compare %ebx 0x3a/imm32/colon -1551 75/jump-if-not-equal break/disp8 +1551 75/jump-if-!= break/disp8 1552 89/<- *(ecx+4) 0/r32/eax 1553 } 1554 # . if s ends with ',', decrement s->end @@ -1570,7 +1570,7 @@ if ('onhashchange' in window) { 1558 8a/copy-byte *eax 3/r32/BL 1559 81 4/subop/and %ebx 0xff/imm32 1560 81 7/subop/compare %ebx 0x2c/imm32/comma -1561 75/jump-if-not-equal break/disp8 +1561 75/jump-if-!= break/disp8 1562 89/<- *(ecx+4) 0/r32/eax 1563 } 1564 # if (!slice-empty?(s)) v->register = slice-to-string(s) @@ -1580,7 +1580,7 @@ if ('onhashchange' in window) { 1568 # That's probably a sign we have the wrong algorithm for this function. 1569 8b/-> *ecx 0/r32/eax 1570 39/compare 0/r32/eax *(ecx+4) -1571 76/jump-if-lesser-or-equal break/disp8 +1571 76/jump-if-<= break/disp8 1572 (slice-to-string Heap %ecx) 1573 89/<- *(edi+0x10) 0/r32/eax # Var-register 1574 } @@ -1589,33 +1589,33 @@ if ('onhashchange' in window) { 1577 # if (word-slice == '{') abort 1578 (slice-equal? %ecx "{") # => eax 1579 3d/compare-eax-and 0/imm32 -1580 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 +1580 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 1581 # if (word-slice == '->') abort 1582 (slice-equal? %ecx "->") # => eax 1583 3d/compare-eax-and 0/imm32 -1584 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 +1584 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 1585 # if (word-slice == '}') abort 1586 (slice-equal? %ecx "}") # => eax 1587 3d/compare-eax-and 0/imm32 -1588 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 +1588 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 1589 # if (slice-empty?(type)) skip 1590 (slice-empty? %ecx) 1591 { 1592 3d/compare-eax-and 0/imm32 -1593 0f 84/jump-if-equal break/disp32 +1593 0f 84/jump-if-= break/disp32 1594 (next-mu-token *(ebp+0xc) %ecx) 1595 # if (word-slice == '{') abort 1596 (slice-equal? %ecx "{") # => eax 1597 3d/compare-eax-and 0/imm32 -1598 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 +1598 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 1599 # if (word-slice == '->') abort 1600 (slice-equal? %ecx "->") # => eax 1601 3d/compare-eax-and 0/imm32 -1602 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 +1602 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 1603 # if (word-slice == '}') abort 1604 (slice-equal? %ecx "}") # => eax 1605 3d/compare-eax-and 0/imm32 -1606 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 +1606 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 1607 } 1608 (type-for %ecx) # => eax 1609 89/<- *(edi+4) 0/r32/eax # Var-type @@ -1667,7 +1667,7 @@ if ('onhashchange' in window) { 1655 8a/copy-byte *eax 3/r32/BL 1656 81 4/subop/and %ebx 0xff/imm32 1657 81 7/subop/compare %ebx 0x3a/imm32/colon -1658 75/jump-if-not-equal break/disp8 +1658 75/jump-if-!= break/disp8 1659 89/<- *(edi+4) 0/r32/eax 1660 } 1661 # if out ends with ',', decrement out->end @@ -1677,7 +1677,7 @@ if ('onhashchange' in window) { 1665 8a/copy-byte *eax 3/r32/BL 1666 81 4/subop/and %ebx 0xff/imm32 1667 81 7/subop/compare %ebx 0x2c/imm32/comma -1668 75/jump-if-not-equal break/disp8 +1668 75/jump-if-!= break/disp8 1669 89/<- *(edi+4) 0/r32/eax 1670 } 1671 $next-mu-token:end: @@ -1734,14 +1734,14 @@ if ('onhashchange' in window) { 1722 # if (curr >= max) return -1 1723 39/compare %edx 3/r32/ebx 1724 { -1725 72/jump-if-lesser-unsigned break/disp8 +1725 72/jump-if-addr< break/disp8 1726 b8/copy-to-eax 1/imm32 1727 eb/jump $pos-slice:end/disp8 1728 } 1729 # if (slice-equal?(s, *curr)) break 1730 (slice-equal? *(ebp+0xc) *edx) # => eax 1731 3d/compare-eax-and 0/imm32 -1732 75/jump-if-not-equal break/disp8 +1732 75/jump-if-!= break/disp8 1733 # ++index 1734 41/increment-ecx 1735 # curr += 4 @@ -1913,7 +1913,7 @@ if ('onhashchange' in window) { 1901 # if (slice-empty?(in)) return false 1902 (slice-empty? *(ebp+8)) # => eax 1903 3d/compare-eax-and 0/imm32 -1904 75/jump-if-not-equal $is-identifier?:false/disp8 +1904 75/jump-if-!= $is-identifier?:false/disp8 1905 # var c/eax : byte = *in->start 1906 8b/-> *(ebp+8) 0/r32/eax 1907 8b/-> *eax 0/r32/eax @@ -1921,18 +1921,18 @@ if ('onhashchange' in window) { 1909 81 4/subop/and %eax 0xff/imm32 1910 # if (c == '$') return true 1911 3d/compare-eax-and 0x24/imm32/$ -1912 74/jump-if-equal $is-identifier?:true/disp8 +1912 74/jump-if-= $is-identifier?:true/disp8 1913 # if (c == '_') return true 1914 3d/compare-eax-and 0x5f/imm32/_ -1915 74/jump-if-equal $is-identifier?:true/disp8 +1915 74/jump-if-= $is-identifier?:true/disp8 1916 # drop case 1917 25/and-eax-with 0x5f/imm32 1918 # if (c < 'A') return false 1919 3d/compare-eax-and 0x41/imm32/A -1920 7c/jump-if-lesser $is-identifier?:false/disp8 +1920 7c/jump-if-< $is-identifier?:false/disp8 1921 # if (c > 'Z') return false 1922 3d/compare-eax-and 0x5a/imm32/Z -1923 7f/jump-if-greater $is-identifier?:false/disp8 +1923 7f/jump-if-> $is-identifier?:false/disp8 1924 # otherwise return true 1925 $is-identifier?:true: 1926 b8/copy-to-eax 1/imm32/true @@ -2294,7 +2294,7 @@ if ('onhashchange' in window) { 2282 #? (flush Stderr) 2283 # if (line->write == 0) break 2284 81 7/subop/compare *ecx 0/imm32 -2285 0f 84/jump-if-equal break/disp32 +2285 0f 84/jump-if-= break/disp32 2286 # word-slice = next-word(line) 2287 (next-word %ecx %edx) 2288 #? (write-buffered Stderr "word: ") @@ -2304,7 +2304,7 @@ if ('onhashchange' in window) { 2292 # if slice-empty?(word-slice) continue 2293 (slice-empty? %edx) 2294 3d/compare-eax-and 0/imm32 -2295 0f 85/jump-if-not-equal loop/disp32 +2295 0f 85/jump-if-!= loop/disp32 2296 # if (slice-starts-with?(word-slice, '#') continue 2297 # . eax = *word-slice->start 2298 8b/-> *edx 0/r32/eax @@ -2312,13 +2312,13 @@ if ('onhashchange' in window) { 2300 81 4/subop/and %eax 0xff/imm32 2301 # . if (eax == '#') continue 2302 3d/compare-eax-and 0x23/imm32/hash -2303 0f 84/jump-if-equal loop/disp32 +2303 0f 84/jump-if-= loop/disp32 2304 # if slice-equal?(word-slice, "{") 2305 { 2306 $parse-mu-block:check-for-block: 2307 (slice-equal? %edx "{") 2308 3d/compare-eax-and 0/imm32 -2309 74/jump-if-equal break/disp8 +2309 74/jump-if-= break/disp8 2310 (check-no-tokens-left %ecx) 2311 # parse new block and append 2312 (parse-mu-block *(ebp+8) *(ebp+0xc) *(ebp+0x10)) # => eax @@ -2329,7 +2329,7 @@ if ('onhashchange' in window) { 2317 $parse-mu-block:check-for-end: 2318 (slice-equal? %edx "}") 2319 3d/compare-eax-and 0/imm32 -2320 0f 85/jump-if-not-equal break/disp32 +2320 0f 85/jump-if-!= break/disp32 2321 # if slice-ends-with?(word-slice, ":") parse named block and append 2322 { 2323 $parse-mu-block:check-for-named-block: @@ -2339,7 +2339,7 @@ if ('onhashchange' in window) { 2327 81 4/subop/and %eax 0xff/imm32 2328 # . if (eax != ':') break 2329 3d/compare-eax-and 0x23/imm32/hash -2330 0f 85/jump-if-not-equal break/disp32 +2330 0f 85/jump-if-!= break/disp32 2331 # 2332 (parse-mu-named-block %edx %ecx *(ebp+8) *(ebp+0xc) *(ebp+0x10)) # => eax 2333 (append-to-block %edi %eax) @@ -2350,7 +2350,7 @@ if ('onhashchange' in window) { 2338 $parse-mu-block:check-for-var: 2339 (slice-equal? %edx "var") 2340 3d/compare-eax-and 0/imm32 -2341 74/jump-if-equal break/disp8 +2341 74/jump-if-= break/disp8 2342 # 2343 (parse-mu-var-def %ecx *(ebp+0xc)) # => eax 2344 (append-to-block %edi %eax) @@ -2406,7 +2406,7 @@ if ('onhashchange' in window) { 2394 # if slice-empty?(s) return 2395 (slice-empty? %ecx) 2396 3d/compare-eax-and 0/imm32 -2397 75/jump-if-not-equal $check-no-tokens-left:end/disp8 +2397 75/jump-if-!= $check-no-tokens-left:end/disp8 2398 # if (slice-starts-with?(s, '#') return 2399 # . eax = *s->start 2400 8b/-> *edx 0/r32/eax @@ -2414,7 +2414,7 @@ if ('onhashchange' in window) { 2402 81 4/subop/and %eax 0xff/imm32 2403 # . if (eax == '#') continue 2404 3d/compare-eax-and 0x23/imm32/hash -2405 74/jump-if-equal $check-no-tokens-left:end/disp8 +2405 74/jump-if-= $check-no-tokens-left:end/disp8 2406 # abort 2407 (write-buffered Stderr "'{' or '}' should be on its own line, but got '") 2408 (rewind-stream %ecx) @@ -2532,7 +2532,7 @@ if ('onhashchange' in window) { 2520 { 2521 (stmt-has-outputs? *(ebp+8)) 2522 3d/compare-eax-and 0/imm32 -2523 0f 84/jump-if-equal break/disp32 +2523 0f 84/jump-if-= break/disp32 2524 { 2525 $parse-mu-stmt:read-outputs: 2526 # name = next-word(line) @@ -2540,15 +2540,15 @@ if ('onhashchange' in window) { 2528 # if slice-empty?(word-slice) break 2529 (slice-empty? %ecx) 2530 3d/compare-eax-and 0/imm32 -2531 0f 85/jump-if-not-equal break/disp32 +2531 0f 85/jump-if-!= break/disp32 2532 # if (name == "<-") break 2533 (slice-equal? %ecx "<-") 2534 3d/compare-eax-and 0/imm32 -2535 75/jump-if-not-equal break/disp8 +2535 75/jump-if-!= break/disp8 2536 # assert(is-identifier?(name)) 2537 (is-identifier? %ecx) 2538 3d/compare-eax-and 0/imm32 -2539 0f 84/jump-if-equal $parse-mu-stmt:abort/disp32 +2539 0f 84/jump-if-= $parse-mu-stmt:abort/disp32 2540 # 2541 (lookup-or-define-var %ecx *(ebp+0xc) *(ebp+0x10)) # => eax 2542 (append-list Heap %eax *(edi+0xc)) # Stmt1-outputs => eax @@ -2567,11 +2567,11 @@ if ('onhashchange' in window) { 2555 # if slice-empty?(word-slice) break 2556 (slice-empty? %ecx) 2557 3d/compare-eax-and 0/imm32 -2558 0f 85/jump-if-not-equal break/disp32 +2558 0f 85/jump-if-!= break/disp32 2559 # if (name == "<-") abort 2560 (slice-equal? %ecx "<-") 2561 3d/compare-eax-and 0/imm32 -2562 0f 85/jump-if-not-equal $parse-mu-stmt:abort2/disp32 +2562 0f 85/jump-if-!= $parse-mu-stmt:abort2/disp32 2563 # 2564 (lookup-var-or-literal %ecx *(ebp+0xc)) # => eax 2565 (append-list Heap %eax *(edi+8)) # Stmt1-inouts => eax @@ -2635,7 +2635,7 @@ if ('onhashchange' in window) { 2623 (slice-empty? %ecx) 2624 3d/compare-eax-and 0/imm32 2625 b8/copy-to-eax 0/imm32/false/result # restore result (if we're here it's still false) -2626 0f 85/jump-if-not-equal break/disp32 +2626 0f 85/jump-if-!= break/disp32 2627 # if slice-starts-with?(word-slice, '#') break 2628 # . eax = *word-slice->start 2629 8b/-> *ecx 0/r32/eax @@ -2644,11 +2644,11 @@ if ('onhashchange' in window) { 2632 # . if (eax == '#') break 2633 3d/compare-eax-and 0x23/imm32/hash 2634 b8/copy-to-eax 0/imm32/false/result # restore result (if we're here it's still false) -2635 0f 84/jump-if-equal break/disp32 +2635 0f 84/jump-if-= break/disp32 2636 # if slice-equal?(word-slice, '<-') return true 2637 (slice-equal? %ecx "<-") 2638 3d/compare-eax-and 0/imm32 -2639 74/jump-if-equal loop/disp8 +2639 74/jump-if-= loop/disp8 2640 b8/copy-to-eax 1/imm32/true 2641 } 2642 $stmt-has-outputs:end: @@ -2676,7 +2676,7 @@ if ('onhashchange' in window) { 2664 # if slice-empty?(name) abort 2665 (slice-empty? %esi) # => eax 2666 3d/compare-eax-and 0/imm32 -2667 0f 85/jump-if-not-equal $lookup-var-or-literal:abort/disp32 +2667 0f 85/jump-if-!= $lookup-var-or-literal:abort/disp32 2668 # var ecx : byte = *name->start 2669 8b/-> *esi 1/r32/ecx 2670 8a/copy-byte *ecx 1/r32/CL @@ -2685,12 +2685,12 @@ if ('onhashchange' in window) { 2673 (is-decimal-digit? %ecx) # => eax 2674 81 7/subop/compare %eax 0/imm32 2675 { -2676 74/jump-if-equal break/disp8 +2676 74/jump-if-= break/disp8 2677 (new-literal-integer Heap %esi) # => eax 2678 } 2679 # otherwise return lookup-var(name, vars) 2680 { -2681 75/jump-if-not-equal break/disp8 +2681 75/jump-if-!= break/disp8 2682 (lookup-var %esi *(ebp+0xc)) # => eax 2683 } 2684 $lookup-var-or-literal:end: @@ -2722,7 +2722,7 @@ if ('onhashchange' in window) { 2710 (lookup-var-helper %eax *(ebp+0xc)) # => eax 2711 # if (result == 0) abort 2712 3d/compare-eax-and 0/imm32 -2713 74/jump-if-equal $lookup-var:abort/disp8 +2713 74/jump-if-= $lookup-var:abort/disp8 2714 $lookup-var:end: 2715 # . epilogue 2716 89/<- %esp 5/r32/ebp @@ -2764,7 +2764,7 @@ if ('onhashchange' in window) { 2752 8b/-> *esi 3/r32/ebx 2753 # if (vars->top > vars->length) abort 2754 3b/compare 0/r32/eax *(esi+4) -2755 0f 8f/jump-if-greater $lookup-var-helper:error1/disp32 +2755 0f 8f/jump-if-> $lookup-var-helper:error1/disp32 2756 # var min/edx : (addr handle var) = vars->data 2757 8d/copy-address *(esi+8) 2/r32/edx 2758 # var curr/ebx : (addr handle var) = &vars->data[vars->top - 4] @@ -2774,14 +2774,14 @@ if ('onhashchange' in window) { 2762 # if (curr < min) return 0 2763 39/compare %ebx 2/r32/edx 2764 b8/copy-to-eax 0/imm32 -2765 0f 82/jump-if-lesser-unsigned break/disp32 +2765 0f 82/jump-if-addr< break/disp32 2766 # var v/eax : (handle var) = *curr 2767 8b/-> *ebx 0/r32/eax 2768 # if (v->name == name) return v 2769 (string-equal? *eax *(ebp+8)) # Var-name 2770 3d/compare-eax-and 0/imm32 2771 8b/-> *ebx 0/r32/eax -2772 75/jump-if-not-equal break/disp8 +2772 75/jump-if-!= break/disp8 2773 # curr -= 4 2774 81 5/subop/subtract %ebx 4/imm32 2775 e9/jump loop/disp32 @@ -2822,13 +2822,13 @@ if ('onhashchange' in window) { 2810 { 2811 # if (result != 0) return 2812 3d/compare-eax-and 0/imm32 -2813 75/jump-if-not-equal break/disp8 +2813 75/jump-if-!= break/disp8 2814 # if name is one of fn's outputs, return it 2815 { 2816 (find-in-function-outputs *(ebp+0x10) %ecx) # => eax 2817 3d/compare-eax-and 0/imm32 2818 # otherwise abort -2819 0f 84/jump-if-not-equal $lookup-var:abort/disp32 +2819 0f 84/jump-if-!= $lookup-var:abort/disp32 2820 } 2821 } 2822 $lookup-or-define-var:end: @@ -2851,7 +2851,7 @@ if ('onhashchange' in window) { 2839 # while curr != null 2840 { 2841 81 7/subop/compare %ecx 0/imm32 -2842 74/jump-if-equal break/disp8 +2842 74/jump-if-= break/disp8 2843 # var v : (handle var) = *curr 2844 8b/-> *ecx 0/r32/eax # List-value 2845 # if (curr->name == name) return curr @@ -2859,7 +2859,7 @@ if ('onhashchange' in window) { 2847 (string-equal? *eax *(ebp+0xc)) 2848 3d/compare-eax-and 0/imm32 2849 58/pop-to-eax -2850 75/jump-if-not-equal $find-in-function-outputs:end/disp8 +2850 75/jump-if-!= $find-in-function-outputs:end/disp8 2851 # curr = curr->next 2852 8b/-> *(ecx+4) 1/r32/ecx # List-next 2853 eb/jump loop/disp8 @@ -2972,7 +2972,7 @@ if ('onhashchange' in window) { 2960 # if (!is-hex-int?(name)) abort 2961 (is-hex-int? *(ebp+0xc)) # => eax 2962 3d/compare-eax-and 0/imm32 -2963 0f 84/jump-if-equal $new-literal-integer:abort/disp32 +2963 0f 84/jump-if-= $new-literal-integer:abort/disp32 2964 # var s/ecx : (addr array byte) 2965 (slice-to-string Heap *(ebp+0xc)) # => eax 2966 89/<- %ecx 0/r32/eax @@ -3149,14 +3149,14 @@ if ('onhashchange' in window) { 3137 89/<- *eax 1/r32/ecx # List-value 3138 # if (list == null) return result 3139 81 7/subop/compare *(ebp+0x10) 0/imm32 -3140 74/jump-if-equal $new-list:end/disp8 +3140 74/jump-if-= $new-list:end/disp8 3141 # otherwise append 3142 # var curr/ecx = list 3143 8b/-> *(ebp+0x10) 1/r32/ecx 3144 # while (curr->next != null) curr = curr->next 3145 { 3146 81 7/subop/compare *(ecx+4) 0/imm32 # List-next -3147 74/jump-if-equal break/disp8 +3147 74/jump-if-= break/disp8 3148 # curr = curr->next 3149 8b/-> *(ecx+4) 1/r32/ecx 3150 eb/jump loop/disp8 @@ -3237,7 +3237,7 @@ if ('onhashchange' in window) { 3225 { 3226 # if (curr == null) break 3227 81 7/subop/compare %ecx 0/imm32 -3228 0f 84/jump-if-equal break/disp32 +3228 0f 84/jump-if-= break/disp32 3229 (emit-subx-function %edi %ecx) 3230 # curr = curr->next 3231 8b/-> *(ecx+0x14) 1/r32/ecx # Function-next @@ -3292,12 +3292,12 @@ if ('onhashchange' in window) { 3280 { 3281 $emit-subx-block:check-empty: 3282 81 7/subop/compare %esi 0/imm32 -3283 0f 84/jump-if-equal break/disp32 +3283 0f 84/jump-if-= break/disp32 3284 (write-buffered *(ebp+8) "{\n") 3285 { 3286 $emit-subx-block:stmt: 3287 81 7/subop/compare %esi 0/imm32 -3288 74/jump-if-equal break/disp8 +3288 74/jump-if-= break/disp8 3289 (emit-subx-statement *(ebp+8) *esi Primitives *Program) 3290 (write-buffered *(ebp+8) Newline) 3291 8b/-> *(esi+4) 6/r32/esi # List-next @@ -3323,7 +3323,7 @@ if ('onhashchange' in window) { 3311 $emit-subx-statement:primitive: 3312 (find-matching-primitive *(ebp+0x10) *(ebp+0xc)) # primitives, stmt => curr/eax 3313 3d/compare-eax-and 0/imm32 -3314 74/jump-if-equal break/disp8 +3314 74/jump-if-= break/disp8 3315 (emit-subx-primitive *(ebp+8) *(ebp+0xc) %eax) # out, stmt, curr 3316 e9/jump $emit-subx-statement:end/disp32 3317 } @@ -3332,7 +3332,7 @@ if ('onhashchange' in window) { 3320 $emit-subx-statement:call: 3321 (find-matching-function *(ebp+0x14) *(ebp+0xc)) # functions, stmt => curr/eax 3322 3d/compare-eax-and 0/imm32 -3323 74/jump-if-equal break/disp8 +3323 74/jump-if-= break/disp8 3324 (emit-subx-call *(ebp+8) *(ebp+0xc) %eax) # out, stmt, curr 3325 e9/jump $emit-subx-statement:end/disp32 3326 } @@ -4148,7 +4148,7 @@ if ('onhashchange' in window) { 4136 50/push-eax 4137 # if (l == 0) return 4138 81 7/subop/compare *(ebp+0xc) 0/imm32 -4139 74/jump-if-equal $emit-subx-rm32:end/disp8 +4139 74/jump-if-= $emit-subx-rm32:end/disp8 4140 # 4141 (get-stmt-operand-from-arg-location *(ebp+0x10) *(ebp+0xc)) # stmt, l => var/eax 4142 (emit-subx-var-as-rm32 *(ebp+8) %eax) # out, var @@ -4173,7 +4173,7 @@ if ('onhashchange' in window) { 4161 # if (l == 1) return stmt->inouts->var 4162 { 4163 3d/compare-eax-and 1/imm32 -4164 75/jump-if-not-equal break/disp8 +4164 75/jump-if-!= break/disp8 4165 $get-stmt-operand-from-arg-location:1: 4166 8b/-> *(ecx+8) 0/r32/eax # Stmt1-inouts 4167 8b/-> *eax 0/r32/eax # Operand-var @@ -4182,7 +4182,7 @@ if ('onhashchange' in window) { 4170 # if (l == 2) return stmt->inouts->next->var 4171 { 4172 3d/compare-eax-and 2/imm32 -4173 75/jump-if-not-equal break/disp8 +4173 75/jump-if-!= break/disp8 4174 $get-stmt-operand-from-arg-location:2: 4175 8b/-> *(ecx+8) 0/r32/eax # Stmt1-inouts 4176 8b/-> *(eax+4) 0/r32/eax # Operand-next @@ -4192,7 +4192,7 @@ if ('onhashchange' in window) { 4180 # if (l == 3) return stmt->outputs 4181 { 4182 3d/compare-eax-and 3/imm32 -4183 75/jump-if-not-equal break/disp8 +4183 75/jump-if-!= break/disp8 4184 $get-stmt-operand-from-arg-location:3: 4185 8b/-> *(ecx+0xc) 0/r32/eax # Stmt1-outputs 4186 8b/-> *eax 0/r32/eax # Operand-var @@ -4229,7 +4229,7 @@ if ('onhashchange' in window) { 4217 51/push-ecx 4218 # if (location == 0) return 4219 81 7/subop/compare *(ebp+0xc) 0/imm32 -4220 0f 84/jump-if-equal $emit-subx-r32:end/disp32 +4220 0f 84/jump-if-= $emit-subx-r32:end/disp32 4221 # 4222 (get-stmt-operand-from-arg-location *(ebp+0x10) *(ebp+0xc)) # stmt, l => var/eax 4223 (maybe-get Registers *(eax+0x10) 8) # Var-register => eax : (addr register-index) @@ -4254,7 +4254,7 @@ if ('onhashchange' in window) { 4242 51/push-ecx 4243 # if (location == 0) return 4244 81 7/subop/compare *(ebp+0xc) 0/imm32 -4245 74/jump-if-equal $emit-subx-imm32:end/disp8 +4245 74/jump-if-= $emit-subx-imm32:end/disp8 4246 # 4247 (get-stmt-operand-from-arg-location *(ebp+0x10) *(ebp+0xc)) # stmt, l => var/eax 4248 (write-buffered *(ebp+8) Space) @@ -4288,7 +4288,7 @@ if ('onhashchange' in window) { 4276 { 4277 # if (curr == null) break 4278 81 7/subop/compare %ecx 0/imm32 -4279 74/jump-if-equal break/disp8 +4279 74/jump-if-= break/disp8 4280 # 4281 (emit-subx-call-operand *(ebp+8) *ecx) 4282 # curr = curr->next @@ -4317,7 +4317,7 @@ if ('onhashchange' in window) { 4305 # if (operand->register) emit "%__" 4306 { 4307 81 7/subop/compare *(eax+0x10) 0/imm32 # Var-register -4308 74/jump-if-equal break/disp8 +4308 74/jump-if-= break/disp8 4309 $emit-subx-call-operand:register: 4310 (write-buffered *(ebp+8) " %") 4311 (write-buffered *(ebp+8) *(eax+0x10)) # Var-register @@ -4326,7 +4326,7 @@ if ('onhashchange' in window) { 4314 # else if (operand->stack-offset) emit "*(ebp+__)" 4315 { 4316 81 7/subop/compare *(eax+0xc) 0/imm32 # Var-stack-offset -4317 74/jump-if-equal break/disp8 +4317 74/jump-if-= break/disp8 4318 $emit-subx-call-operand:stack: 4319 (write-buffered *(ebp+8) Space) 4320 (write-buffered *(ebp+8) "*(ebp+") @@ -4341,7 +4341,7 @@ if ('onhashchange' in window) { 4329 8b/-> *(eax+4) 0/r32/eax # Var-type 4330 81 7/subop/compare *eax 0/imm32 # Tree-left 4331 58/pop-to-eax -4332 75/jump-if-not-equal break/disp8 +4332 75/jump-if-!= break/disp8 4333 $emit-subx-call-operand:literal: 4334 (write-buffered *(ebp+8) Space) 4335 (write-buffered *(ebp+8) *eax) @@ -4365,7 +4365,7 @@ if ('onhashchange' in window) { 4353 # if (operand->register) emit "%__" 4354 { 4355 81 7/subop/compare *(eax+0x10) 0/imm32 # Var-register -4356 74/jump-if-equal break/disp8 +4356 74/jump-if-= break/disp8 4357 $emit-subx-var-as-rm32:register: 4358 (write-buffered *(ebp+8) " %") 4359 (write-buffered *(ebp+8) *(eax+0x10)) # Var-register @@ -4373,7 +4373,7 @@ if ('onhashchange' in window) { 4361 # else if (operand->stack-offset) emit "*(ebp+__)" 4362 { 4363 81 7/subop/compare *(eax+0xc) 0/imm32 # Var-stack-offset -4364 74/jump-if-equal break/disp8 +4364 74/jump-if-= break/disp8 4365 $emit-subx-var-as-rm32:stack: 4366 (write-buffered *(ebp+8) Space) 4367 (write-buffered *(ebp+8) "*(ebp+") @@ -4400,12 +4400,12 @@ if ('onhashchange' in window) { 4388 { 4389 # if (curr == null) break 4390 81 7/subop/compare %ecx 0/imm32 -4391 74/jump-if-equal break/disp8 +4391 74/jump-if-= break/disp8 4392 # if match(stmt, curr) return curr 4393 { 4394 (mu-stmt-matches-function? *(ebp+0xc) %ecx) # => eax 4395 3d/compare-eax-and 0/imm32 -4396 74/jump-if-equal break/disp8 +4396 74/jump-if-= break/disp8 4397 89/<- %eax 1/r32/ecx 4398 eb/jump $find-matching-function:end/disp8 4399 } @@ -4435,7 +4435,7 @@ if ('onhashchange' in window) { 4423 $find-matching-primitive:loop: 4424 # if (curr == null) break 4425 81 7/subop/compare %ecx 0/imm32 -4426 0f 84/jump-if-equal break/disp32 +4426 0f 84/jump-if-= break/disp32 4427 #? (write-buffered Stderr "prim: ") 4428 #? (write-buffered Stderr *ecx) # Primitive-name 4429 #? (write-buffered Stderr " => ") @@ -4446,7 +4446,7 @@ if ('onhashchange' in window) { 4434 { 4435 (mu-stmt-matches-primitive? *(ebp+0xc) %ecx) # => eax 4436 3d/compare-eax-and 0/imm32 -4437 74/jump-if-equal break/disp8 +4437 74/jump-if-= break/disp8 4438 89/<- %eax 1/r32/ecx 4439 eb/jump $find-matching-primitive:end/disp8 4440 } @@ -4507,7 +4507,7 @@ if ('onhashchange' in window) { 4495 # if (primitive->name != stmt->operation) return false 4496 (string-equal? *(ecx+4) *edx) # Stmt1-operation, Primitive-name => eax 4497 3d/compare-eax-and 0/imm32 -4498 75/jump-if-not-equal break/disp8 +4498 75/jump-if-!= break/disp8 4499 b8/copy-to-eax 0/imm32 4500 e9/jump $mu-stmt-matches-primitive?:end/disp32 4501 } @@ -4519,11 +4519,11 @@ if ('onhashchange' in window) { 4507 # if (curr == 0 && curr2 == 0) move on to check outputs 4508 { 4509 81 7/subop/compare %esi 0/imm32 -4510 75/jump-if-not-equal break/disp8 +4510 75/jump-if-!= break/disp8 4511 $mu-stmt-matches-primitive?:stmt-inout-is-null: 4512 { 4513 81 7/subop/compare %edi 0/imm32 -4514 75/jump-if-not-equal break/disp8 +4514 75/jump-if-!= break/disp8 4515 # 4516 e9/jump $mu-stmt-matches-primitive?:check-outputs/disp32 4517 } @@ -4534,7 +4534,7 @@ if ('onhashchange' in window) { 4522 # if (curr2 == 0) return false 4523 { 4524 81 7/subop/compare %edi 0/imm32 -4525 75/jump-if-not-equal break/disp8 +4525 75/jump-if-!= break/disp8 4526 $mu-stmt-matches-primitive?:prim-inout-is-null: 4527 b8/copy-to-eax 0/imm32/false 4528 e9/jump $mu-stmt-matches-primitive?:end/disp32 @@ -4543,7 +4543,7 @@ if ('onhashchange' in window) { 4531 { 4532 (operand-matches-primitive? *esi *edi) # => eax 4533 3d/compare-eax-and 0/imm32 -4534 75/jump-if-not-equal break/disp8 +4534 75/jump-if-!= break/disp8 4535 b8/copy-to-eax 0/imm32/false 4536 e9/jump $mu-stmt-matches-primitive?:end/disp32 4537 } @@ -4562,10 +4562,10 @@ if ('onhashchange' in window) { 4550 { 4551 $mu-stmt-matches-primitive?:check-output: 4552 81 7/subop/compare %esi 0/imm32 -4553 75/jump-if-not-equal break/disp8 +4553 75/jump-if-!= break/disp8 4554 { 4555 81 7/subop/compare %edi 0/imm32 -4556 75/jump-if-not-equal break/disp8 +4556 75/jump-if-!= break/disp8 4557 # return true 4558 b8/copy-to-eax 1/imm32 4559 e9/jump $mu-stmt-matches-primitive?:end/disp32 @@ -4577,7 +4577,7 @@ if ('onhashchange' in window) { 4565 # if (curr2 == 0) return false 4566 { 4567 81 7/subop/compare %edi 0/imm32 -4568 75/jump-if-not-equal break/disp8 +4568 75/jump-if-!= break/disp8 4569 b8/copy-to-eax 0/imm32 4570 e9/jump $mu-stmt-matches-primitive?:end/disp32 4571 } @@ -4585,7 +4585,7 @@ if ('onhashchange' in window) { 4573 { 4574 (operand-matches-primitive? *esi *edi) # List-value List-value => eax 4575 3d/compare-eax-and 0/imm32 -4576 75/jump-if-not-equal break/disp8 +4576 75/jump-if-!= break/disp8 4577 b8/copy-to-eax 0/imm32 4578 e9/jump $mu-stmt-matches-primitive?:end/disp32 4579 } @@ -4624,28 +4624,28 @@ if ('onhashchange' in window) { 4612 (type-equal? *(esi+4) *(edi+4)) # Var-type, Var-type => eax 4613 3d/compare-eax-and 0/imm32 4614 b8/copy-to-eax 0/imm32/false -4615 74/jump-if-equal $operand-matches-primitive?:end/disp8 +4615 74/jump-if-= $operand-matches-primitive?:end/disp8 4616 # return false if var->register doesn't match prim-var->register 4617 { 4618 # if addresses are equal, don't return here 4619 8b/-> *(esi+0x10) 0/r32/eax 4620 39/compare *(edi+0x10) 0/r32/eax -4621 74/jump-if-equal break/disp8 +4621 74/jump-if-= break/disp8 4622 # if either address is 0, return false 4623 3d/compare-eax-and 0/imm32 -4624 74/jump-if-equal $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result +4624 74/jump-if-= $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result 4625 81 7/subop/compare *(edi+0x10) 0/imm32 -4626 74/jump-if-equal $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result +4626 74/jump-if-= $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result 4627 # if prim-var->register is "*", return true 4628 (string-equal? *(edi+0x10) "*") # Var-register 4629 3d/compare-eax-and 0/imm32 4630 b8/copy-to-eax 1/imm32/true -4631 75/jump-if-not-equal $operand-matches-primitive?:end/disp8 +4631 75/jump-if-!= $operand-matches-primitive?:end/disp8 4632 # if string contents don't match, return false 4633 (string-equal? *(esi+0x10) *(edi+0x10)) # Var-register Var-register 4634 3d/compare-eax-and 0/imm32 4635 b8/copy-to-eax 0/imm32/false -4636 74/jump-if-equal $operand-matches-primitive?:end/disp8 +4636 74/jump-if-= $operand-matches-primitive?:end/disp8 4637 } 4638 # return true 4639 b8/copy-to-eax 1/imm32/true @@ -4673,19 +4673,19 @@ if ('onhashchange' in window) { 4661 8b/-> %ecx 0/r32/eax # Var-type 4662 39/compare %edx 0/r32/eax # Var-type 4663 b8/copy-to-eax 1/imm32/true -4664 0f 84/jump-if-equal $type-equal?:end/disp32 +4664 0f 84/jump-if-= $type-equal?:end/disp32 4665 # if (a == 0) return false 4666 81 7/subop/compare %ecx 0/imm32 4667 b8/copy-to-eax 0/imm32/false -4668 0f 84/jump-if-equal $type-equal?:end/disp32 +4668 0f 84/jump-if-= $type-equal?:end/disp32 4669 # if (b == 0) return false 4670 81 7/subop/compare %edx 0/imm32 4671 b8/copy-to-eax 0/imm32/false -4672 0f 84/jump-if-equal $type-equal?:end/disp32 +4672 0f 84/jump-if-= $type-equal?:end/disp32 4673 # if (!type-equal?(a->left, b->left)) return false 4674 (type-equal? *ecx *edx) # Tree-left, Tree-left => eax 4675 3d/compare-eax-and 0/imm32 -4676 0f 84/jump-if-equal $type-equal?:end/disp32 +4676 0f 84/jump-if-= $type-equal?:end/disp32 4677 # return type-equal?(a->right, b->right 4678 (type-equal? *(ecx+4) *(edx+4)) # Tree-right, Tree-right => eax 4679 $type-equal?:end: diff --git a/html/apps/mulisp.subx.html b/html/apps/mulisp.subx.html index 3bbb6b82..cf34f56b 100644 --- a/html/apps/mulisp.subx.html +++ b/html/apps/mulisp.subx.html @@ -76,11 +76,11 @@ if ('onhashchange' in window) { 18 { 19 # if (argc <= 1) break 20 81 7/subop/compare *ebp 1/imm32 - 21 7e/jump-if-lesser-or-equal break/disp8 + 21 7e/jump-if-<= break/disp8 22 # if (argv[1] != "test")) break 23 (kernel-string-equal? *(ebp+8) "test") # => eax 24 3d/compare-eax-and 0/imm32 - 25 74/jump-if-equal break/disp8 + 25 74/jump-if-= break/disp8 26 # 27 (run-tests) 28 # syscall(exit, *Num-test-failures) @@ -142,7 +142,7 @@ if ('onhashchange' in window) { 84 (lisp-read Stdin) # => eax : (handle cell) 85 # if (eax == 0) break 86 3d/compare-eax-and 0/imm32 - 87 74/jump-if-equal break/disp8 + 87 74/jump-if-= break/disp8 88 # 89 (lisp-eval %eax) # => eax : (handle cell) 90 (lisp-print Stdout %eax) @@ -181,7 +181,7 @@ if ('onhashchange' in window) { 123 # if (s->write == 0) return null 124 { 125 81 7/subop/compare *ecx 0/imm32 -126 75/jump-if-not-equal break/disp8 +126 75/jump-if-!= break/disp8 127 b8/copy-to-eax 0/imm32/eof 128 eb/jump $lisp-read:end/disp8 129 } diff --git a/html/apps/pack.subx.html b/html/apps/pack.subx.html index bd5015eb..d3cb17a9 100644 --- a/html/apps/pack.subx.html +++ b/html/apps/pack.subx.html @@ -97,7 +97,7 @@ if ('onhashchange' in window) { 35 # - if argc > 1 and argv[1] == "test", then return run_tests() 36 # if (argc <= 1) goto interactive 37 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 38 7e/jump-if-lesser-or-equal $subx-pack-main:interactive/disp8 + 38 7e/jump-if-<= $subx-pack-main:interactive/disp8 39 # if (!kernel-string-equal?(argv[1], "test")) goto interactive 40 # . eax = kernel-string-equal?(argv[1], "test") 41 # . . push args @@ -109,7 +109,7 @@ if ('onhashchange' in window) { 47 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 48 # . if (eax == false) goto interactive 49 3d/compare-eax-and 0/imm32/false - 50 74/jump-if-equal $subx-pack-main:interactive/disp8 + 50 74/jump-if-= $subx-pack-main:interactive/disp8 51 # run-tests() 52 e8/call run-tests/disp32 53 # syscall(exit, *Num-test-failures) @@ -221,7 +221,7 @@ if ('onhashchange' in window) { 159 $subx-pack:check0: 160 # if (line->write == 0) break 161 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 162 0f 84/jump-if-equal $subx-pack:break/disp32 + 162 0f 84/jump-if-= $subx-pack:break/disp32 163 +-- 26 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- 189 # next-word(line, word-slice) 190 # . . push args @@ -242,7 +242,7 @@ if ('onhashchange' in window) { 205 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 206 # . if (eax != false) write-stream-data(out, line) 207 3d/compare-eax-and 0/imm32/false - 208 0f 85/jump-if-not-equal $subx-pack:pass-through/disp32 + 208 0f 85/jump-if-!= $subx-pack:pass-through/disp32 209 $subx-pack:check2: 210 +-- 40 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- 250 # if (!slice-equal?(word-slice, "==")) goto next check @@ -256,7 +256,7 @@ if ('onhashchange' in window) { 258 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 259 # . if (eax == false) goto check3 260 3d/compare-eax-and 0/imm32/false - 261 0f 84/jump-if-equal $subx-pack:check3/disp32 + 261 0f 84/jump-if-= $subx-pack:check3/disp32 262 # word-slice = next-word(line) 263 # . . push args 264 52/push-edx @@ -289,7 +289,7 @@ if ('onhashchange' in window) { 330 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 331 # if (in-code? != false) convert-instruction(line, out) 332 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32/false # compare ebx - 333 74/jump-if-equal $subx-pack:data/disp8 + 333 74/jump-if-= $subx-pack:data/disp8 334 $subx-pack:code: 335 # . convert-instruction(line, out) 336 # . . push args @@ -871,7 +871,7 @@ if ('onhashchange' in window) { 1026 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 1027 # . if (eax != false) break 1028 3d/compare-eax-and 0/imm32/false -1029 0f 85/jump-if-not-equal $convert-data:break/disp32 +1029 0f 85/jump-if-!= $convert-data:break/disp32 1030 $convert-data:check-for-comment: 1031 # if (slice-starts-with?(word-slice, "#")) 1032 # . var start/edx : (addr byte) = word-slice->start @@ -881,7 +881,7 @@ if ('onhashchange' in window) { 1036 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL 1037 # . if (c != '#') goto next check 1038 3d/compare-eax-and 0x23/imm32/hash -1039 75/jump-if-not-equal $convert-data:check-for-label/disp8 +1039 75/jump-if-!= $convert-data:check-for-label/disp8 1040 $convert-data:comment: 1041 # write-slice-buffered(out, word-slice) 1042 # . . push args @@ -892,7 +892,7 @@ if ('onhashchange' in window) { 1047 # . . discard args 1048 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1049 # return -1050 0f 85/jump-if-not-equal $convert-data:end/disp32 +1050 0f 85/jump-if-!= $convert-data:end/disp32 1051 $convert-data:check-for-label: 1052 # if (slice-ends-with?(word-slice, ":")) 1053 # . var end/edx : (addr byte) = word-slice->end @@ -902,7 +902,7 @@ if ('onhashchange' in window) { 1057 8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 0/r32/AL -1/disp8 . # copy byte at *ecx to AL 1058 # . if (c != ':') goto next check 1059 3d/compare-eax-and 0x3a/imm32/colon -1060 75/jump-if-not-equal $convert-data:check-for-imm32/disp8 +1060 75/jump-if-!= $convert-data:check-for-imm32/disp8 1061 $convert-data:label: 1062 # write-stream-data(out, line) 1063 # . . push args @@ -913,7 +913,7 @@ if ('onhashchange' in window) { 1068 # . . discard args 1069 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1070 # return -1071 75/jump-if-not-equal $convert-data:end/disp8 +1071 75/jump-if-!= $convert-data:end/disp8 1072 $convert-data:check-for-imm32: 1073 # if (has-metadata?(word-slice, "imm32")) 1074 # . eax = has-metadata?(ecx, "imm32") @@ -926,7 +926,7 @@ if ('onhashchange' in window) { 1081 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1082 # . if (eax == false) process as a single byte 1083 3d/compare-eax-and 0/imm32/false -1084 74/jump-if-equal $convert-data:single-byte/disp8 +1084 74/jump-if-= $convert-data:single-byte/disp8 1085 $convert-data:imm32: 1086 # emit(out, word-slice, 4) 1087 # . . push args @@ -1630,7 +1630,7 @@ if ('onhashchange' in window) { 1860 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 1861 # . if (eax != false) pass through 1862 3d/compare-eax-and 0/imm32/false -1863 75/jump-if-not-equal $convert-instruction:pass-through/disp8 +1863 75/jump-if-!= $convert-instruction:pass-through/disp8 1864 $convert-instruction:check1: 1865 # if (slice-starts-with?(word-slice, "#")) write-stream-data(out, line) 1866 # . var start/edx : (addr byte) = word-slice->start @@ -1640,7 +1640,7 @@ if ('onhashchange' in window) { 1870 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL 1871 # . if (c == '#') pass through 1872 3d/compare-eax-and 0x23/imm32/hash -1873 74/jump-if-equal $convert-instruction:pass-through/disp8 +1873 74/jump-if-= $convert-instruction:pass-through/disp8 1874 $convert-instruction:check2: 1875 # if (slice-ends-with?(word-slice, ":")) write-stream-data(out, line) 1876 # . var end/edx : (addr byte) = word-slice->end @@ -1650,7 +1650,7 @@ if ('onhashchange' in window) { 1880 8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 0/r32/AL -1/disp8 . # copy byte at *ecx to AL 1881 # . if (c == ':') pass through 1882 3d/compare-eax-and 0x3a/imm32/colon -1883 75/jump-if-not-equal $convert-instruction:really-convert/disp8 +1883 75/jump-if-!= $convert-instruction:really-convert/disp8 1884 $convert-instruction:pass-through: 1885 # write-stream-data(out, line) 1886 # . . push args @@ -1798,7 +1798,7 @@ if ('onhashchange' in window) { 2028 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2029 # . if (eax != false) return 2030 3d/compare-eax-and 0/imm32/false -2031 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 +2031 0f 85/jump-if-!= $emit-opcodes:end/disp32 2032 # if (slice-starts-with?(op1, "#")) return 2033 # . var start/ebx : (addr byte) = op1->start 2034 8b/copy 0/mod/indirect 1/rm32/ecx . . . 3/r32/ebx . . # copy *ecx to ebx @@ -1807,7 +1807,7 @@ if ('onhashchange' in window) { 2037 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL 2038 # . if (c == '#') return 2039 3d/compare-eax-and 0x23/imm32/hash -2040 0f 84/jump-if-equal $emit-opcodes:end/disp32 +2040 0f 84/jump-if-= $emit-opcodes:end/disp32 2041 # op1 = next-token-from-slice(op1->start, op1->end, '/') 2042 # . . push args 2043 51/push-ecx @@ -1845,7 +1845,7 @@ if ('onhashchange' in window) { 2075 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2076 # . if (eax != false) goto op2 2077 3d/compare-eax-and 0/imm32/false -2078 75/jump-if-not-equal $emit-opcodes:op2/disp8 +2078 75/jump-if-!= $emit-opcodes:op2/disp8 2079 # if (slice-equal?(op1, "f2")) goto op2 2080 # . eax = slice-equal?(op1, "f2") 2081 # . . push args @@ -1857,7 +1857,7 @@ if ('onhashchange' in window) { 2087 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2088 # . if (eax != false) goto op2 2089 3d/compare-eax-and 0/imm32/false -2090 75/jump-if-not-equal $emit-opcodes:op2/disp8 +2090 75/jump-if-!= $emit-opcodes:op2/disp8 2091 # if (slice-equal?(op1, "f3")) goto op2 2092 # . eax = slice-equal?(op1, "f3") 2093 # . . push args @@ -1869,7 +1869,7 @@ if ('onhashchange' in window) { 2099 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2100 # . if (eax != false) goto op2 2101 3d/compare-eax-and 0/imm32/false -2102 75/jump-if-not-equal $emit-opcodes:op2/disp8 +2102 75/jump-if-!= $emit-opcodes:op2/disp8 2103 # otherwise return 2104 e9/jump $emit-opcodes:end/disp32 2105 $emit-opcodes:op2: @@ -1891,7 +1891,7 @@ if ('onhashchange' in window) { 2121 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2122 # . if (eax != false) return 2123 3d/compare-eax-and 0/imm32/false -2124 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 +2124 0f 85/jump-if-!= $emit-opcodes:end/disp32 2125 # if (slice-starts-with?(op2, "#")) return 2126 # . var start/ebx : (addr byte) = op2->start 2127 8b/copy 0/mod/indirect 2/rm32/edx . . . 3/r32/ebx . . # copy *edx to ebx @@ -1900,7 +1900,7 @@ if ('onhashchange' in window) { 2130 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL 2131 # . if (c == '#') return 2132 3d/compare-eax-and 0x23/imm32/hash -2133 0f 84/jump-if-equal $emit-opcodes:end/disp32 +2133 0f 84/jump-if-= $emit-opcodes:end/disp32 2134 # op2 = next-token-from-slice(op2->start, op2->end, '/') 2135 # . . push args 2136 52/push-edx @@ -1938,7 +1938,7 @@ if ('onhashchange' in window) { 2168 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2169 # . if (eax != false) return 2170 3d/compare-eax-and 0/imm32/false -2171 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 +2171 0f 85/jump-if-!= $emit-opcodes:end/disp32 2172 # if (!slice-equal?(op2, "0f")) return 2173 # . eax = slice-equal?(op2, "0f") 2174 # . . push args @@ -1950,7 +1950,7 @@ if ('onhashchange' in window) { 2180 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2181 # . if (eax == false) return 2182 3d/compare-eax-and 0/imm32/false -2183 0f 84/jump-if-equal $emit-opcodes:end/disp32 +2183 0f 84/jump-if-= $emit-opcodes:end/disp32 2184 $emit-opcodes:op3: 2185 # next-word(line, op3) # reuse op2/edx 2186 # . . push args @@ -1970,7 +1970,7 @@ if ('onhashchange' in window) { 2200 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2201 # . if (eax != false) return 2202 3d/compare-eax-and 0/imm32/false -2203 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 +2203 0f 85/jump-if-!= $emit-opcodes:end/disp32 2204 # if (slice-starts-with?(op3, "#")) return 2205 # . var start/ebx : (addr byte) = op2->start 2206 8b/copy 0/mod/indirect 2/rm32/edx . . . 3/r32/ebx . . # copy *edx to ebx @@ -1979,7 +1979,7 @@ if ('onhashchange' in window) { 2209 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL 2210 # . if (c == '#') return 2211 3d/compare-eax-and 0x23/imm32/hash -2212 0f 84/jump-if-equal $emit-opcodes:end/disp32 +2212 0f 84/jump-if-= $emit-opcodes:end/disp32 2213 # op3 = next-token-from-slice(op3->start, op3->end, '/') 2214 # . . push args 2215 52/push-edx @@ -2096,7 +2096,7 @@ if ('onhashchange' in window) { 2397 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2398 # . if (eax != false) pass through 2399 3d/compare-eax-and 0/imm32/false -2400 0f 85/jump-if-not-equal $emit-modrm:break/disp32 +2400 0f 85/jump-if-!= $emit-modrm:break/disp32 2401 $emit-modrm:check1: 2402 # if (slice-starts-with?(word-slice, "#")) break 2403 # . spill edx @@ -2110,7 +2110,7 @@ if ('onhashchange' in window) { 2411 5a/pop-to-edx 2412 # . if (c == '#') pass through 2413 3d/compare-eax-and 0x23/imm32/hash -2414 0f 84/jump-if-equal $emit-modrm:break/disp32 +2414 0f 84/jump-if-= $emit-modrm:break/disp32 2415 $emit-modrm:check-for-mod: 2416 # if (has-metadata?(word-slice, "mod")) 2417 # . eax = has-metadata?(ecx, "mod") @@ -2123,7 +2123,7 @@ if ('onhashchange' in window) { 2424 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2425 # . if (eax == false) goto next check 2426 3d/compare-eax-and 0/imm32/false -2427 74/jump-if-equal $emit-modrm:check-for-rm32/disp8 +2427 74/jump-if-= $emit-modrm:check-for-rm32/disp8 2428 $emit-modrm:mod: 2429 # mod = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2430 # . eax = parse-datum-of-word(word-slice) @@ -2151,7 +2151,7 @@ if ('onhashchange' in window) { 2452 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2453 # . if (eax == false) goto next check 2454 3d/compare-eax-and 0/imm32/false -2455 74/jump-if-equal $emit-modrm:check-for-r32/disp8 +2455 74/jump-if-= $emit-modrm:check-for-r32/disp8 2456 $emit-modrm:rm32: 2457 # rm32 = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2458 # . eax = parse-datum-of-word(word-slice) @@ -2179,7 +2179,7 @@ if ('onhashchange' in window) { 2480 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2481 # . if (eax == false) goto next check 2482 3d/compare-eax-and 0/imm32/false -2483 74/jump-if-equal $emit-modrm:check-for-subop/disp8 +2483 74/jump-if-= $emit-modrm:check-for-subop/disp8 2484 $emit-modrm:r32: 2485 # r32 = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2486 # . eax = parse-datum-of-word(word-slice) @@ -2207,7 +2207,7 @@ if ('onhashchange' in window) { 2508 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2509 # . if (eax == false) loop 2510 3d/compare-eax-and 0/imm32/false -2511 0f 84/jump-if-equal $emit-modrm:loop/disp32 +2511 0f 84/jump-if-= $emit-modrm:loop/disp32 2512 $emit-modrm:subop: 2513 # r32 = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2514 # . eax = parse-datum-of-word(word-slice) @@ -2226,7 +2226,7 @@ if ('onhashchange' in window) { 2527 $emit-modrm:break: 2528 # if (!has-modrm?) return 2529 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32/false # compare edx -2530 74/jump-if-equal $emit-modrm:end/disp8 +2530 74/jump-if-= $emit-modrm:end/disp8 2531 $emit-modrm:calculate: 2532 # var modrm/ebx : byte = mod & 0b11 2533 81 4/subop/and 3/mod/direct 3/rm32/ebx . . . . . 3/imm32/0b11 # bitwise and of ebx @@ -2341,7 +2341,7 @@ if ('onhashchange' in window) { 2706 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2707 # . if (eax != false) pass through 2708 3d/compare-eax-and 0/imm32/false -2709 0f 85/jump-if-not-equal $emit-sib:break/disp32 +2709 0f 85/jump-if-!= $emit-sib:break/disp32 2710 $emit-sib:check1: 2711 # if (slice-starts-with?(word-slice, "#")) break 2712 # . spill edx @@ -2355,7 +2355,7 @@ if ('onhashchange' in window) { 2720 5a/pop-to-edx 2721 # . if (c == '#') pass through 2722 3d/compare-eax-and 0x23/imm32/hash -2723 0f 84/jump-if-equal $emit-sib:break/disp32 +2723 0f 84/jump-if-= $emit-sib:break/disp32 2724 $emit-sib:check-for-scale: 2725 # if (has-metadata?(word-slice, "scale")) 2726 # . eax = has-metadata?(ecx, "scale") @@ -2368,7 +2368,7 @@ if ('onhashchange' in window) { 2733 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2734 # . if (eax == false) goto next check 2735 3d/compare-eax-and 0/imm32/false -2736 74/jump-if-equal $emit-sib:check-for-base/disp8 +2736 74/jump-if-= $emit-sib:check-for-base/disp8 2737 $emit-sib:scale: 2738 # scale = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2739 # . eax = parse-datum-of-word(word-slice) @@ -2396,7 +2396,7 @@ if ('onhashchange' in window) { 2761 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2762 # . if (eax == false) goto next check 2763 3d/compare-eax-and 0/imm32/false -2764 74/jump-if-equal $emit-sib:check-for-index/disp8 +2764 74/jump-if-= $emit-sib:check-for-index/disp8 2765 $emit-sib:base: 2766 # base = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2767 # . eax = parse-datum-of-word(word-slice) @@ -2424,7 +2424,7 @@ if ('onhashchange' in window) { 2789 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2790 # . if (eax == false) loop 2791 3d/compare-eax-and 0/imm32/false -2792 0f 84/jump-if-equal $emit-sib:loop/disp32 +2792 0f 84/jump-if-= $emit-sib:loop/disp32 2793 $emit-sib:index: 2794 # index = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2795 # . eax = parse-datum-of-word(word-slice) @@ -2443,7 +2443,7 @@ if ('onhashchange' in window) { 2808 $emit-sib:break: 2809 # if (!has-sib?) return 2810 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32/false # compare edx -2811 74/jump-if-equal $emit-sib:end/disp8 +2811 74/jump-if-= $emit-sib:end/disp8 2812 $emit-sib:calculate: 2813 # var sib/ebx : byte = scale & 0b11 2814 81 4/subop/and 3/mod/direct 3/rm32/ebx . . . . . 3/imm32/0b11 # bitwise and of ebx @@ -2540,7 +2540,7 @@ if ('onhashchange' in window) { 2969 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2970 # . if (eax != false) pass through 2971 3d/compare-eax-and 0/imm32/false -2972 0f 85/jump-if-not-equal $emit-disp:break/disp32 +2972 0f 85/jump-if-!= $emit-disp:break/disp32 2973 $emit-disp:check1: 2974 # if (slice-starts-with?(word-slice, "#")) break 2975 # . var start/edx : (addr byte) = word-slice->start @@ -2550,7 +2550,7 @@ if ('onhashchange' in window) { 2979 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL 2980 # . if (c == '#') break 2981 3d/compare-eax-and 0x23/imm32/hash -2982 0f 84/jump-if-equal $emit-disp:break/disp32 +2982 0f 84/jump-if-= $emit-disp:break/disp32 2983 $emit-disp:check-for-disp32: 2984 # if (has-metadata?(word-slice, "disp32")) 2985 # . eax = has-metadata?(ecx, "disp32") @@ -2563,7 +2563,7 @@ if ('onhashchange' in window) { 2992 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2993 # . if (eax == false) goto next check 2994 3d/compare-eax-and 0/imm32/false -2995 74/jump-if-equal $emit-disp:check-for-disp16/disp8 +2995 74/jump-if-= $emit-disp:check-for-disp16/disp8 2996 $emit-disp:disp32: 2997 # emit(out, word-slice, 4) 2998 # . . push args @@ -2588,7 +2588,7 @@ if ('onhashchange' in window) { 3017 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3018 # . if (eax == false) goto next check 3019 3d/compare-eax-and 0/imm32/false -3020 74/jump-if-equal $emit-disp:check-for-disp8/disp8 +3020 74/jump-if-= $emit-disp:check-for-disp8/disp8 3021 $emit-disp:disp16: 3022 # emit(out, word-slice, 2) 3023 # . . push args @@ -2613,7 +2613,7 @@ if ('onhashchange' in window) { 3042 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3043 # . if (eax == false) loop 3044 3d/compare-eax-and 0/imm32/false -3045 0f 84/jump-if-equal $emit-disp:loop/disp32 +3045 0f 84/jump-if-= $emit-disp:loop/disp32 3046 $emit-disp:disp8: 3047 # emit(out, word-slice, 1) 3048 # . . push args @@ -2695,7 +2695,7 @@ if ('onhashchange' in window) { 3188 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 3189 # . if (eax != false) pass through 3190 3d/compare-eax-and 0/imm32/false -3191 0f 85/jump-if-not-equal $emit-imm:break/disp32 +3191 0f 85/jump-if-!= $emit-imm:break/disp32 3192 $emit-imm:check1: 3193 # if (slice-starts-with?(word-slice, "#")) break 3194 # . var start/edx : (addr byte) = slice->start @@ -2705,7 +2705,7 @@ if ('onhashchange' in window) { 3198 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL 3199 # . if (c == '#') break 3200 3d/compare-eax-and 0x23/imm32/hash -3201 0f 84/jump-if-equal $emit-imm:break/disp32 +3201 0f 84/jump-if-= $emit-imm:break/disp32 3202 $emit-imm:check-for-imm32: 3203 # if (has-metadata?(word-slice, "imm32")) 3204 # . eax = has-metadata?(ecx, "imm32") @@ -2718,7 +2718,7 @@ if ('onhashchange' in window) { 3211 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3212 # . if (eax == false) goto next check 3213 3d/compare-eax-and 0/imm32/false -3214 74/jump-if-equal $emit-imm:check-for-imm16/disp8 +3214 74/jump-if-= $emit-imm:check-for-imm16/disp8 3215 $emit-imm:imm32: 3216 # emit(out, word-slice, 4) 3217 # . . push args @@ -2743,7 +2743,7 @@ if ('onhashchange' in window) { 3236 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3237 # . if (eax == false) goto next check 3238 3d/compare-eax-and 0/imm32/false -3239 74/jump-if-equal $emit-imm:check-for-imm8/disp8 +3239 74/jump-if-= $emit-imm:check-for-imm8/disp8 3240 $emit-imm:imm16: 3241 # emit(out, word-slice, 2) 3242 # . . push args @@ -2768,7 +2768,7 @@ if ('onhashchange' in window) { 3261 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3262 # . if (eax == false) loop 3263 3d/compare-eax-and 0/imm32/false -3264 0f 84/jump-if-equal $emit-imm:loop/disp32 +3264 0f 84/jump-if-= $emit-imm:loop/disp32 3265 $emit-imm:imm8: 3266 # emit(out, word-slice, 1) 3267 # . . push args diff --git a/html/apps/sigils.subx.html b/html/apps/sigils.subx.html index 0dd7a70e..937f2bfc 100644 --- a/html/apps/sigils.subx.html +++ b/html/apps/sigils.subx.html @@ -130,7 +130,7 @@ if ('onhashchange' in window) { 68 # - if argc > 1 and argv[1] == "test", then return run_tests() 69 # if (argc <= 1) goto interactive 70 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 71 7e/jump-if-lesser-or-equal $subx-sigils-main:interactive/disp8 + 71 7e/jump-if-<= $subx-sigils-main:interactive/disp8 72 # if (!kernel-string-equal?(argv[1], "test")) goto interactive 73 # . eax = kernel-string-equal?(argv[1], "test") 74 # . . push args @@ -142,7 +142,7 @@ if ('onhashchange' in window) { 80 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 81 # . if (eax == false) goto interactive 82 3d/compare-eax-and 0/imm32/false - 83 74/jump-if-equal $subx-sigils-main:interactive/disp8 + 83 74/jump-if-= $subx-sigils-main:interactive/disp8 84 # run-tests() 85 e8/call run-tests/disp32 86 # syscall(exit, *Num-test-failures) @@ -232,7 +232,7 @@ if ('onhashchange' in window) { 170 $subx-sigils:check0: 171 # if (line->write == 0) break 172 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 173 0f 84/jump-if-equal $subx-sigils:break/disp32 + 173 0f 84/jump-if-= $subx-sigils:break/disp32 174 $subx-sigils:word-loop: 175 # next-word-or-expression(line, word-slice) 176 # . . push args @@ -253,7 +253,7 @@ if ('onhashchange' in window) { 191 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 192 # . if (eax != false) break 193 3d/compare-eax-and 0/imm32/false - 194 0f 85/jump-if-not-equal $subx-sigils:next-line/disp32 + 194 0f 85/jump-if-!= $subx-sigils:next-line/disp32 195 $subx-sigils:check-for-comment: 196 # if (slice-starts-with?(word-slice, "#")) continue 197 # . start/ebx = word-slice->start @@ -263,11 +263,11 @@ if ('onhashchange' in window) { 201 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL 202 # . if (eax == '#') continue 203 3d/compare-eax-and 0x23/imm32/hash - 204 74/jump-if-equal $subx-sigils:word-loop/disp8 + 204 74/jump-if-= $subx-sigils:word-loop/disp8 205 $subx-sigils:check-for-direct-mode: 206 # if (!slice-starts-with?(word-slice, "%")) goto next check 207 3d/compare-eax-and 0x25/imm32/percent - 208 75/jump-if-not-equal $subx-sigils:check-for-indirect-mode/disp8 + 208 75/jump-if-!= $subx-sigils:check-for-indirect-mode/disp8 209 $subx-sigils:direct-mode: 210 +-- 40 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- 250 # emit-direct-mode(out, word-slice) @@ -283,7 +283,7 @@ if ('onhashchange' in window) { 260 $subx-sigils:check-for-indirect-mode: 261 # if (!slice-starts-with?(word-slice, "*")) goto next check 262 3d/compare-eax-and 0x2a/imm32/asterisk - 263 75/jump-if-not-equal $subx-sigils:check-for-invalid-addition/disp8 + 263 75/jump-if-!= $subx-sigils:check-for-invalid-addition/disp8 264 # if (!disp32-mode?(word-slice)) goto indirect mode 265 # . eax = disp32-mode?(word-slice) 266 # . . push args @@ -294,7 +294,7 @@ if ('onhashchange' in window) { 271 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 272 # . if (eax == false) goto indirect mode 273 3d/compare-eax-and 0/imm32/false - 274 74/jump-if-equal $subx-sigils:indirect-mode/disp8 + 274 74/jump-if-= $subx-sigils:indirect-mode/disp8 275 $subx-sigils:disp32-mode: 276 # emit-indirect-mode(out, word-slice) 277 # . . push args @@ -340,11 +340,11 @@ if ('onhashchange' in window) { 317 $subx-sigils:check-for-invalid-addition: 318 # if (slice-starts-with?(word-slice, "+")) goto error1 319 3d/compare-eax-and 0x2b/imm32/plus - 320 74/jump-if-equal $subx-sigils:error1/disp8 + 320 74/jump-if-= $subx-sigils:error1/disp8 321 $subx-sigils:check-for-invalid-left-shift: 322 # if (slice-starts-with?(word-slice, "<")) goto error1 323 3d/compare-eax-and 0x3c/imm32/less-than - 324 74/jump-if-equal $subx-sigils:error1/disp8 + 324 74/jump-if-= $subx-sigils:error1/disp8 325 $subx-sigils:regular-word: 326 # write-slice-buffered(out, word-slice) 327 # . . push args @@ -1425,7 +1425,7 @@ if ('onhashchange' in window) { 1652 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # copy *(esi+4) to ecx 1653 # . if (ecx < line->write) goto next check 1654 3b/compare 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # compare ecx with *esi -1655 7c/jump-if-lesser $next-word-or-expression:check-for-comment/disp8 +1655 7c/jump-if-< $next-word-or-expression:check-for-comment/disp8 1656 # . return out = {0, 0} 1657 c7 0/subop/copy 0/mod/direct 7/rm32/edi . . . . . 0/imm32 # copy to *edi 1658 c7 0/subop/copy 1/mod/*+disp8 7/rm32/edi . . . . 4/disp8 0/imm32 # copy to *(edi+4) @@ -1440,7 +1440,7 @@ if ('onhashchange' in window) { 1667 8a/copy-byte 1/mod/*+disp8 4/rm32/sib 6/base/esi 1/index/ecx . 0/r32/AL 0xc/disp8 . # copy byte at *(esi+ecx+12) to AL 1668 # . if (eax != '#') goto next check 1669 3d/compare-eax-and 0x23/imm32/pound -1670 75/jump-if-not-equal $next-word-or-expression:check-for-string-literal/disp8 +1670 75/jump-if-!= $next-word-or-expression:check-for-string-literal/disp8 1671 $next-word-or-expression:comment: 1672 # out->end = &line->data[line->write] 1673 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax @@ -1454,7 +1454,7 @@ if ('onhashchange' in window) { 1681 $next-word-or-expression:check-for-string-literal: 1682 # if (line->data[line->read] != '"') goto next check 1683 3d/compare-eax-and 0x22/imm32/dquote -1684 75/jump-if-not-equal $next-word-or-expression:check-for-expression/disp8 +1684 75/jump-if-!= $next-word-or-expression:check-for-expression/disp8 1685 $next-word-or-expression:string-literal: 1686 # skip-string(line) 1687 # . . push args @@ -1468,14 +1468,14 @@ if ('onhashchange' in window) { 1695 $next-word-or-expression:check-for-expression: 1696 # if (line->data[line->read] != '*') goto next check 1697 3d/compare-eax-and 0x2a/imm32/asterisk -1698 75/jump-if-not-equal $next-word-or-expression:regular-word/disp8 +1698 75/jump-if-!= $next-word-or-expression:regular-word/disp8 1699 # if (line->data[line->read + 1] == ' ') goto error1 1700 8a/copy-byte 1/mod/*+disp8 4/rm32/sib 6/base/esi 1/index/ecx . 0/r32/AL 0xd/disp8 . # copy byte at *(esi+ecx+12+1) to AL 1701 3d/compare-eax-and 0x20/imm32/space -1702 74/jump-if-equal $next-word-or-expression:error1/disp8 +1702 74/jump-if-= $next-word-or-expression:error1/disp8 1703 # if (line->data[line->read + 1] != '(') goto regular word 1704 3d/compare-eax-and 0x28/imm32/open-paren -1705 75/jump-if-not-equal $next-word-or-expression:regular-word/disp8 +1705 75/jump-if-!= $next-word-or-expression:regular-word/disp8 1706 $next-word-or-expression:paren: 1707 # skip-until-close-paren(line) 1708 # . . push args @@ -1490,7 +1490,7 @@ if ('onhashchange' in window) { 1717 8a/copy-byte 1/mod/*+disp8 4/rm32/sib 6/base/esi 1/index/ecx . 0/r32/AL 0xc/disp8 . # copy byte at *(esi+ecx+12) to AL 1718 # . if (eax != ')') goto error2 1719 3d/compare-eax-and 0x29/imm32/close-paren -1720 75/jump-if-not-equal $next-word-or-expression:error2/disp8 +1720 75/jump-if-!= $next-word-or-expression:error2/disp8 1721 # skip ')' 1722 ff 0/subop/increment 1/mod/*+disp8 6/rm32/esi . . . . 4/disp8 . # increment *(esi+4) 1723 # fall through @@ -2042,7 +2042,7 @@ if ('onhashchange' in window) { 2269 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 2270 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 2271 3d/compare-eax-and 0x28/imm32/open-paren -2272 74/jump-if-equal $parse-effective-address:compound-expression/disp8 +2272 74/jump-if-= $parse-effective-address:compound-expression/disp8 2273 $parse-effective-address:simple-register: 2274 # local-slice = next-token-from-slice(local-slice->start, local-slice->end, "/") 2275 # . . push args @@ -2108,13 +2108,13 @@ if ('onhashchange' in window) { 2335 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 2336 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 2337 3d/compare-eax-and 0x29/imm32/close-paren -2338 0f 84/jump-if-equal $parse-effective-address:end/disp32 +2338 0f 84/jump-if-= $parse-effective-address:end/disp32 2339 # if (*local-slice->start == '-') goto displacement 2340 3d/compare-eax-and 0x2d/imm32/minus -2341 0f 84/jump-if-equal $parse-effective-address:displacement/disp32 +2341 0f 84/jump-if-= $parse-effective-address:displacement/disp32 2342 # if (*local-slice->start != '+') goto error1 2343 3d/compare-eax-and 0x2b/imm32/plus -2344 0f 85/jump-if-not-equal $parse-effective-address:error1/disp32 +2344 0f 85/jump-if-!= $parse-effective-address:error1/disp32 2345 $parse-effective-address:check-for-index: 2346 # ++local-slice->start to skip '+' 2347 ff 0/subop/increment 0/mod/indirect 6/rm32/esi . . . . . . # increment *esi @@ -2158,7 +2158,7 @@ if ('onhashchange' in window) { 2385 59/pop-to-ecx 2386 # . if (eax == 0) goto displacement 2387 3d/compare-eax-and 0/imm32 -2388 0f 84/jump-if-equal $parse-effective-address:displacement/disp32 +2388 0f 84/jump-if-= $parse-effective-address:displacement/disp32 2389 $parse-effective-address:index: 2390 # read register into index 2391 # . eax = next-register(local-slice) @@ -2185,11 +2185,11 @@ if ('onhashchange' in window) { 2412 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 2413 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 2414 3d/compare-eax-and 0x29/imm32/close-paren -2415 0f 84/jump-if-equal $parse-effective-address:end/disp32 +2415 0f 84/jump-if-= $parse-effective-address:end/disp32 2416 $parse-effective-address:check-for-scale: 2417 # if (*local-slice->start != '<') goto next check 2418 3d/compare-eax-and 0x3c/imm32/less-than -2419 75/jump-if-not-equal $parse-effective-address:check-for-displacement/disp8 +2419 75/jump-if-!= $parse-effective-address:check-for-displacement/disp8 2420 # ++local-slice->start to skip '<' 2421 ff 0/subop/increment 0/mod/indirect 6/rm32/esi . . . . . . # increment *esi 2422 # if (*local-slice->start != '<') goto error2 @@ -2197,7 +2197,7 @@ if ('onhashchange' in window) { 2424 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 2425 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 2426 3d/compare-eax-and 0x3c/imm32/less-than -2427 0f 85/jump-if-not-equal $parse-effective-address:error2/disp32 +2427 0f 85/jump-if-!= $parse-effective-address:error2/disp32 2428 # ++local-slice->start to skip '<' 2429 ff 0/subop/increment 0/mod/indirect 6/rm32/esi . . . . . . # increment *esi 2430 # skip whitespace @@ -2237,13 +2237,13 @@ if ('onhashchange' in window) { 2464 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 2465 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 2466 3d/compare-eax-and 0x29/imm32/close-paren -2467 74/jump-if-equal $parse-effective-address:end/disp8 +2467 74/jump-if-= $parse-effective-address:end/disp8 2468 $parse-effective-address:check-for-displacement: 2469 # if (*local-slice->start not in '+' '-') goto error3 2470 3d/compare-eax-and 0x2b/imm32/plus -2471 74/jump-if-equal $parse-effective-address:displacement/disp8 +2471 74/jump-if-= $parse-effective-address:displacement/disp8 2472 3d/compare-eax-and 0x2d/imm32/minus -2473 74/jump-if-equal $parse-effective-address:displacement/disp8 +2473 74/jump-if-= $parse-effective-address:displacement/disp8 2474 e9/jump $parse-effective-address:error3/disp32 2475 $parse-effective-address:displacement: 2476 # read integer into disp @@ -2271,7 +2271,7 @@ if ('onhashchange' in window) { 2498 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 2499 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 2500 3d/compare-eax-and 0x29/imm32/close-paren -2501 0f 85/jump-if-not-equal $parse-effective-address:error4/disp32 +2501 0f 85/jump-if-!= $parse-effective-address:error4/disp32 2502 $parse-effective-address:end: 2503 # return base in eax 2504 89/copy 3/mod/direct 0/rm32/eax . . . 7/r32/edi . . # copy edi to eax @@ -2929,15 +2929,15 @@ if ('onhashchange' in window) { 3156 $emit-indirect-mode:check-for-ebp: 3157 # if (base == 5) goto emit-sib 3158 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 5/imm32 # compare *(ebp+12) -3159 74/jump-if-equal $emit-indirect-mode:emit-sib/disp8 +3159 74/jump-if-= $emit-indirect-mode:emit-sib/disp8 3160 $emit-indirect-mode:check-for-esp: 3161 # if (base == 4) goto emit-sib 3162 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 4/imm32 # compare *(ebp+12) -3163 74/jump-if-equal $emit-indirect-mode:emit-sib/disp8 +3163 74/jump-if-= $emit-indirect-mode:emit-sib/disp8 3164 $emit-indirect-mode:check-for-sib: 3165 # if (index == 4/none) goto next check 3166 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 4/imm32 # compare *(ebp+16) -3167 0f 84/jump-if-equal $emit-indirect-mode:check-for-disp/disp32 +3167 0f 84/jump-if-= $emit-indirect-mode:check-for-disp/disp32 3168 $emit-indirect-mode:emit-sib: 3169 # emit(out, "2/mod/indirect 4/rm32/sib " base "/base " index "/index " scale "/scale " disp "/disp32") 3170 # . write-buffered(out, "2/mod/*+disp32 4/rm32/sib ") @@ -3016,7 +3016,7 @@ if ('onhashchange' in window) { 3243 $emit-indirect-mode:check-for-disp: 3244 # if (disp == 0) goto next check 3245 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0x18/disp8 0/imm32 # compare *(ebp+24) -3246 74/jump-if-equal $emit-indirect-mode:emit-indirect/disp8 +3246 74/jump-if-= $emit-indirect-mode:emit-indirect/disp8 3247 $emit-indirect-mode:emit-disp: 3248 # emit(out, "2/mod/*+disp32 " base "/rm32 " disp "/disp32") 3249 # . write-buffered(out, "2/mod/*+disp32 ") @@ -3475,7 +3475,7 @@ if ('onhashchange' in window) { 3877 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 3878 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3879 3d/compare-eax-and 0x28/imm32/open-paren -3880 74/jump-if-equal $disp32-mode?:false/disp8 +3880 74/jump-if-= $disp32-mode?:false/disp8 3881 $disp32-mode?:check-for-register: 3882 # local-slice = next-token-from-slice(local-slice->start, local-slice->end, "/") 3883 # . . push args @@ -3498,7 +3498,7 @@ if ('onhashchange' in window) { 3900 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 3901 # if (eax != 0) return false 3902 3d/compare-eax-and 0/imm32 -3903 75/jump-if-not-equal $disp32-mode?:false/disp8 +3903 75/jump-if-!= $disp32-mode?:false/disp8 3904 # return true 3905 b8/copy-to-eax 1/imm32/true 3906 eb/jump $disp32-mode?:end/disp8 @@ -3591,14 +3591,14 @@ if ('onhashchange' in window) { 3993 $next-hex-int:positive: 3994 # if (*curr == '+') ++curr 3995 3d/compare-eax-and 0x2b/imm32/+ -3996 75/jump-if-not-equal $next-hex-int:negative/disp8 +3996 75/jump-if-!= $next-hex-int:negative/disp8 3997 # . ++curr 3998 41/increment-ecx 3999 eb/jump $next-hex-int:skip-whitespace/disp8 4000 $next-hex-int:negative: 4001 # else if (*curr == '-') ++curr, negate = true 4002 3d/compare-eax-and 0x2d/imm32/- -4003 75/jump-if-not-equal $next-hex-int:skip-whitespace/disp8 +4003 75/jump-if-!= $next-hex-int:skip-whitespace/disp8 4004 $next-hex-int:need-to-negate: 4005 # . ++curr 4006 41/increment-ecx @@ -3625,24 +3625,24 @@ if ('onhashchange' in window) { 4027 # . if (*curr != '0') jump to loop 4028 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 4029 3d/compare-eax-and 0x30/imm32/0 -4030 75/jump-if-not-equal $next-hex-int:loop/disp8 +4030 75/jump-if-!= $next-hex-int:loop/disp8 4031 # . ++curr 4032 41/increment-ecx 4033 $next-hex-int:initial-0x: 4034 # . if (curr >= in->end) return result 4035 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -4036 73/jump-if-greater-or-equal-unsigned $next-hex-int:end/disp8 +4036 73/jump-if-addr>= $next-hex-int:end/disp8 4037 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 4038 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 4039 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 4040 3d/compare-eax-and 0x78/imm32/x -4041 75/jump-if-not-equal $next-hex-int:loop/disp8 +4041 75/jump-if-!= $next-hex-int:loop/disp8 4042 # . ++curr 4043 41/increment-ecx 4044 $next-hex-int:loop: 4045 # if (curr >= in->end) break 4046 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -4047 73/jump-if-greater-or-equal-unsigned $next-hex-int:break/disp8 +4047 73/jump-if-addr>= $next-hex-int:break/disp8 4048 # if (!is-hex-digit?(*curr)) break 4049 # . eax = *curr 4050 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -3655,7 +3655,7 @@ if ('onhashchange' in window) { 4057 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 4058 # . if (eax == false) break 4059 3d/compare-eax-and 0/imm32/false -4060 74/jump-if-equal $next-hex-int:break/disp8 +4060 74/jump-if-= $next-hex-int:break/disp8 4061 # eax = from-hex-char(*curr) 4062 # . . copy arg to eax 4063 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -3671,7 +3671,7 @@ if ('onhashchange' in window) { 4073 $next-hex-int:break: 4074 # if (negate?) result = -result 4075 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32/false # compare ebx -4076 74/jump-if-equal $next-hex-int:end/disp8 +4076 74/jump-if-= $next-hex-int:end/disp8 4077 $next-hex-int:negate: 4078 f7 3/subop/negate 3/mod/direct 7/rm32/edi . . . . . . # negate edi 4079 $next-hex-int:end: @@ -4008,24 +4008,24 @@ if ('onhashchange' in window) { 4410 # . if (*curr != '0') jump to loop 4411 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 4412 3d/compare-eax-and 0x30/imm32/0 -4413 75/jump-if-not-equal $next-positive-hex-int:loop/disp8 +4413 75/jump-if-!= $next-positive-hex-int:loop/disp8 4414 # . ++curr 4415 41/increment-ecx 4416 $next-positive-hex-int:initial-0x: 4417 # . if (curr >= in->end) return result 4418 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -4419 73/jump-if-greater-or-equal-unsigned $next-positive-hex-int:end/disp8 +4419 73/jump-if-addr>= $next-positive-hex-int:end/disp8 4420 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 4421 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 4422 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 4423 3d/compare-eax-and 0x78/imm32/x -4424 75/jump-if-not-equal $next-positive-hex-int:loop/disp8 +4424 75/jump-if-!= $next-positive-hex-int:loop/disp8 4425 # . ++curr 4426 41/increment-ecx 4427 $next-positive-hex-int:loop: 4428 # if (curr >= in->end) break 4429 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -4430 73/jump-if-greater-or-equal-unsigned $next-positive-hex-int:end/disp8 +4430 73/jump-if-addr>= $next-positive-hex-int:end/disp8 4431 # if (!is-hex-digit?(*curr)) break 4432 # . eax = *curr 4433 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -4038,7 +4038,7 @@ if ('onhashchange' in window) { 4440 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 4441 # . if (eax == false) break 4442 3d/compare-eax-and 0/imm32/false -4443 74/jump-if-equal $next-positive-hex-int:end/disp8 +4443 74/jump-if-= $next-positive-hex-int:end/disp8 4444 # eax = from-hex-char(*curr) 4445 # . . copy arg to eax 4446 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL diff --git a/html/apps/survey.subx.html b/html/apps/survey.subx.html index 6bad51ee..0c669fd5 100644 --- a/html/apps/survey.subx.html +++ b/html/apps/survey.subx.html @@ -127,7 +127,7 @@ if ('onhashchange' in window) { 64 # - if argc > 1 and argv[1] == "test", then return run_tests() 65 # if (argc <= 1) goto interactive 66 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 67 7e/jump-if-lesser-or-equal $subx-survey-main:interactive/disp8 + 67 7e/jump-if-<= $subx-survey-main:interactive/disp8 68 # if (!kernel-string-equal?(argv[1], "test")) goto interactive 69 # . eax = kernel-string-equal?(argv[1], "test") 70 # . . push args @@ -139,7 +139,7 @@ if ('onhashchange' in window) { 76 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 77 # . if (eax == false) goto interactive 78 3d/compare-eax-and 0/imm32/false - 79 74/jump-if-equal $subx-survey-main:interactive/disp8 + 79 74/jump-if-= $subx-survey-main:interactive/disp8 80 # run-tests() 81 e8/call run-tests/disp32 82 # syscall(exit, *Num-test-failures) @@ -540,7 +540,7 @@ if ('onhashchange' in window) { 709 # if (line->write == 0) break 710 8b/copy 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . . # copy *ecx to eax 711 3d/compare-eax-and 0/imm32 - 712 0f 84/jump-if-equal $compute-offsets:break-line-loop/disp32 + 712 0f 84/jump-if-= $compute-offsets:break-line-loop/disp32 713 +-- 33 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- 746 $compute-offsets:word-loop: 747 # edx = word-slice @@ -561,7 +561,7 @@ if ('onhashchange' in window) { 835 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 836 # . if (eax != false) break 837 3d/compare-eax-and 0/imm32/false - 838 0f 85/jump-if-not-equal $compute-offsets:line-loop/disp32 + 838 0f 85/jump-if-!= $compute-offsets:line-loop/disp32 839 $compute-offsets:case-comment: 840 # if slice-starts-with?(word-slice, "#") continue 841 68/push "#"/imm32 @@ -571,7 +571,7 @@ if ('onhashchange' in window) { 845 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 846 # . if (eax != false) break 847 3d/compare-eax-and 0/imm32/false - 848 0f 85/jump-if-not-equal $compute-offsets:line-loop/disp32 + 848 0f 85/jump-if-!= $compute-offsets:line-loop/disp32 849 $compute-offsets:case-segment-header: 850 # if (!slice-equal?(word-slice/edx, "==")) goto next case 851 # . eax = slice-equal?(word-slice/edx, "==") @@ -582,10 +582,10 @@ if ('onhashchange' in window) { 856 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 857 # . if (eax == false) goto next case 858 3d/compare-eax-and 0/imm32/false - 859 0f 84/jump-if-equal $compute-offsets:case-label/disp32 + 859 0f 84/jump-if-= $compute-offsets:case-label/disp32 860 # if (curr-segment-name == 0) goto construct-next-segment 861 81 7/subop/compare 3/mod/direct 6/rm32/esi . . . . . 0/imm32 # compare esi - 862 74/jump-if-equal $compute-offsets:construct-next-segment/disp8 + 862 74/jump-if-= $compute-offsets:construct-next-segment/disp8 863 # seg/eax = get-or-insert(segments, curr-segment-name, row-size=16) 864 # . . push args 865 68/push 0x10/imm32/row-size @@ -642,7 +642,7 @@ if ('onhashchange' in window) { 960 # if empty?(curr-segment-name) abort 961 # . if (eax == 0) abort 962 3d/compare-eax-and 0/imm32 - 963 0f 84/jump-if-equal $compute-offsets:abort/disp32 + 963 0f 84/jump-if-= $compute-offsets:abort/disp32 964 # next-word(line, segment-tmp) 965 68/push compute-offsets:segment-tmp/imm32 966 51/push-ecx @@ -657,7 +657,7 @@ if ('onhashchange' in window) { 975 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 976 # . if (eax != false) abort 977 3d/compare-eax-and 0/imm32/false - 978 0f 85/jump-if-not-equal $compute-offsets:abort/disp32 + 978 0f 85/jump-if-!= $compute-offsets:abort/disp32 979 # seg/ebx = get-or-insert(segments, curr-segment-name, row-size=16) 980 # . . push args 981 68/push 0x10/imm32/row-size @@ -706,7 +706,7 @@ if ('onhashchange' in window) { 1024 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 1025 # . if (eax == false) goto next case 1026 3d/compare-eax-and 0/imm32/false -1027 74/jump-if-equal $compute-offsets:case-default/disp8 +1027 74/jump-if-= $compute-offsets:case-default/disp8 1028 # strip trailing ':' from word-slice 1029 ff 1/subop/decrement 1/mod/*+disp8 2/rm32/edx . . . . 4/disp8 . # decrement *(edx+4) 1030 # x/eax = leaky-get-or-insert-slice(labels, word-slice, row-size=16) @@ -1045,7 +1045,7 @@ if ('onhashchange' in window) { 1428 $compute-addresses:segment-loop: 1429 # if (srow >= max) break 1430 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx -1431 73/jump-if-greater-or-equal-unsigned $compute-addresses:segment-break/disp8 +1431 73/jump-if-addr>= $compute-addresses:segment-break/disp8 1432 # srow->file-offset += starting-offset 1433 01/add 1/mod/*+disp8 0/rm32/eax . . . 7/r32/edi 8/disp8 . # add edi to *(eax+8) 1434 # clear last 12 bits of srow->address for p_align=0x1000 @@ -1087,7 +1087,7 @@ if ('onhashchange' in window) { 1495 $compute-addresses:label-loop: 1496 # if (lrow >= max) break 1497 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx -1498 0f 83/jump-if-greater-or-equal-unsigned $compute-addresses:end/disp32 +1498 0f 83/jump-if-addr>= $compute-addresses:end/disp32 1499 +-- 26 lines: #? # dump lrow->key ------------------------------------------------------------------------------------------------------------------------ 1525 # seg-name/edx = lrow->segment-name 1526 8b/copy 1/mod/*+disp8 0/rm32/eax . . . 2/r32/edx 4/disp8 . # copy *eax to edx @@ -1524,7 +1524,7 @@ if ('onhashchange' in window) { 2055 $emit-segments:check-for-end-of-input: 2056 # if (line->write == 0) break 2057 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx -2058 0f 84/jump-if-equal $emit-segments:end/disp32 +2058 0f 84/jump-if-= $emit-segments:end/disp32 2059 # offset-of-next-instruction += num-bytes(line) 2060 # . eax = num-bytes(line) 2061 # . . push args @@ -1556,7 +1556,7 @@ if ('onhashchange' in window) { 2119 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2120 # . if (eax != 0) break 2121 3d/compare-eax-and 0/imm32 -2122 0f 85/jump-if-not-equal $emit-segments:next-line/disp32 +2122 0f 85/jump-if-!= $emit-segments:next-line/disp32 2123 $emit-segments:check-for-comment: 2124 # if (slice-starts-with?(word-slice, "#")) break 2125 # . start/esi = word-slice->start @@ -1566,7 +1566,7 @@ if ('onhashchange' in window) { 2129 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL 2130 # . if (eax == '#') break 2131 3d/compare-eax-and 0x23/imm32/hash -2132 0f 84/jump-if-equal $emit-segments:next-line/disp32 +2132 0f 84/jump-if-= $emit-segments:next-line/disp32 2133 $emit-segments:check-for-label: 2134 # if is-label?(word-slice) break 2135 # . eax = is-label?(word-slice) @@ -1578,7 +1578,7 @@ if ('onhashchange' in window) { 2141 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2142 # . if (eax != false) break 2143 3d/compare-eax-and 0/imm32/false -2144 0f 85/jump-if-not-equal $emit-segments:line-loop/disp32 +2144 0f 85/jump-if-!= $emit-segments:line-loop/disp32 2145 $emit-segments:check-for-segment-header: 2146 # if (slice-equal?(word-slice, "==")) break 2147 # . eax = slice-equal?(word-slice, "==") @@ -1591,7 +1591,7 @@ if ('onhashchange' in window) { 2154 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2155 # . if (eax != false) break 2156 3d/compare-eax-and 0/imm32/false -2157 0f 85/jump-if-not-equal $emit-segments:line-loop/disp32 +2157 0f 85/jump-if-!= $emit-segments:line-loop/disp32 2158 $emit-segments:2-character: 2159 # if (length(word-slice) != 2) goto next check 2160 # . eax = length(word-slice) @@ -1599,7 +1599,7 @@ if ('onhashchange' in window) { 2162 2b/subtract 0/mod/indirect 2/rm32/edx . . . 0/r32/eax . . # subtract *edx from eax 2163 # . if (eax != 2) goto next check 2164 3d/compare-eax-and 2/imm32 -2165 75/jump-if-not-equal $emit-segments:check-metadata/disp8 +2165 75/jump-if-!= $emit-segments:check-metadata/disp8 2166 # write-slice-buffered(out, word-slice) 2167 # . . push args 2168 52/push-edx @@ -1657,7 +1657,7 @@ if ('onhashchange' in window) { 2277 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2278 # . if (eax != false) goto code label checks 2279 3d/compare-eax-and 0/imm32/false -2280 0f 85/jump-if-not-equal $emit-segments:check-code-label-for-imm8/disp32 +2280 0f 85/jump-if-!= $emit-segments:check-code-label-for-imm8/disp32 2281 $emit-segments:check-global-variable-for-disp8: 2282 # if has-metadata?(word-slice, "disp8") abort 2283 # . eax = has-metadata?(word-slice, "disp8") @@ -1670,7 +1670,7 @@ if ('onhashchange' in window) { 2290 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2291 # . if (eax != false) abort 2292 3d/compare-eax-and 0/imm32/false -2293 0f 85/jump-if-not-equal $emit-segments:global-variable-abort/disp32 +2293 0f 85/jump-if-!= $emit-segments:global-variable-abort/disp32 2294 $emit-segments:check-global-variable-for-imm8: 2295 # if has-metadata?(word-slice, "imm8") abort 2296 # . eax = has-metadata?(word-slice, "imm8") @@ -1683,7 +1683,7 @@ if ('onhashchange' in window) { 2303 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2304 # . if (eax != false) abort 2305 3d/compare-eax-and 0/imm32/false -2306 0f 85/jump-if-not-equal $emit-segments:global-variable-abort/disp32 +2306 0f 85/jump-if-!= $emit-segments:global-variable-abort/disp32 2307 $emit-segments:emit-global-variable: 2308 # emit-hex(out, info->address, 4) 2309 # . . push args @@ -1708,7 +1708,7 @@ if ('onhashchange' in window) { 2328 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2329 # . if (eax != false) abort 2330 3d/compare-eax-and 0/imm32/false -2331 0f 85/jump-if-not-equal $emit-segments:imm8-abort/disp32 +2331 0f 85/jump-if-!= $emit-segments:imm8-abort/disp32 2332 $emit-segments:check-code-label-for-imm32: 2333 # if (!has-metadata?(word-slice, "imm32")) goto next check 2334 # . eax = has-metadata?(edx, "imm32") @@ -1721,7 +1721,7 @@ if ('onhashchange' in window) { 2341 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2342 # . if (eax == false) goto next check 2343 3d/compare-eax-and 0/imm32 -2344 74/jump-if-equal $emit-segments:check-code-label-for-disp8/disp8 +2344 74/jump-if-= $emit-segments:check-code-label-for-disp8/disp8 2345 +-- 33 lines: #? # dump info->address -------------------------------------------------------------------------------------------------------------------- 2378 $emit-segments:emit-code-label-imm32: 2379 # emit-hex(out, info->address, 4) @@ -1747,7 +1747,7 @@ if ('onhashchange' in window) { 2399 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2400 # . if (eax == false) goto next check 2401 3d/compare-eax-and 0/imm32/false -2402 74/jump-if-equal $emit-segments:check-code-label-for-disp32/disp8 +2402 74/jump-if-= $emit-segments:check-code-label-for-disp32/disp8 2403 $emit-segments:emit-code-label-disp8: 2404 # emit-hex(out, info->offset - offset-of-next-instruction, 1) 2405 # . . push args @@ -1774,7 +1774,7 @@ if ('onhashchange' in window) { 2426 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2427 # . if (eax == false) abort 2428 3d/compare-eax-and 0/imm32/false -2429 0f 84/jump-if-equal $emit-segments:abort/disp32 +2429 0f 84/jump-if-= $emit-segments:abort/disp32 2430 $emit-segments:emit-code-label-disp32: 2431 # emit-hex(out, info->offset - offset-of-next-instruction, 4) 2432 # . . push args @@ -2462,7 +2462,7 @@ if ('onhashchange' in window) { 3218 $emit-headers:loop: 3219 # if (curr-segment >= max) break 3220 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx -3221 0f 83/jump-if-greater-or-equal-unsigned $emit-headers:end/disp32 +3221 0f 83/jump-if-addr>= $emit-headers:end/disp32 3222 +-- 63 lines: #? # dump curr-segment->name --------------------------------------------------------------------------------------------------------------- 3285 +-- 9 lines: #? # write(2/stderr, "emit-segment-header\n") ---------------------------------------------------------------------------------------------- 3294 # emit-elf-program-header-entry(out, curr-segment) @@ -2607,7 +2607,7 @@ if ('onhashchange' in window) { 3433 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3434 # . if (eax == false) goto next check 3435 3d/compare-eax-and 0/imm32/false -3436 74/jump-if-equal $emit-elf-program-header-entry:data/disp8 +3436 74/jump-if-= $emit-elf-program-header-entry:data/disp8 3437 # *$Elf_p_flags = r-x 3438 c7 0/subop/copy 0/mod/indirect 5/rm32/.disp32 . . . $Elf_p_flags/disp32 5/imm32 # copy to *$Elf_p_flags 3439 eb/jump $emit-elf-program-header-entry:really-emit/disp8 @@ -2665,7 +2665,7 @@ if ('onhashchange' in window) { 3491 8d/copy-address 1/mod/*+disp8 4/rm32/sib 6/base/esi 2/index/edx . 2/r32/edx 0xc/disp8 . # copy esi+edx+12 to edx 3492 # if (curr >= max) abort 3493 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx -3494 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 +3494 73/jump-if-addr>= $stream-add4:abort/disp8 3495 # *curr = key 3496 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0xc/disp8 . # copy *(ebp+12) to ecx 3497 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -2673,7 +2673,7 @@ if ('onhashchange' in window) { 3499 05/add-to-eax 4/imm32 3500 # if (curr >= max) abort 3501 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx -3502 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 +3502 73/jump-if-addr>= $stream-add4:abort/disp8 3503 # *curr = val1 3504 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x10/disp8 . # copy *(ebp+16) to ecx 3505 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -2681,7 +2681,7 @@ if ('onhashchange' in window) { 3507 05/add-to-eax 4/imm32 3508 # if (curr >= max) abort 3509 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx -3510 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 +3510 73/jump-if-addr>= $stream-add4:abort/disp8 3511 # *curr = val2 3512 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x14/disp8 . # copy *(ebp+20) to ecx 3513 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -2689,7 +2689,7 @@ if ('onhashchange' in window) { 3515 05/add-to-eax 4/imm32 3516 # if (curr >= max) abort 3517 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx -3518 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 +3518 73/jump-if-addr>= $stream-add4:abort/disp8 3519 # *curr = val3 3520 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x18/disp8 . # copy *(ebp+24) to ecx 3521 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -3236,7 +3236,7 @@ if ('onhashchange' in window) { 4251 3d/compare-eax-and 0/imm32/false 4252 # . restore result now that ZF is set 4253 58/pop-to-eax -4254 75/jump-if-not-equal $num-bytes:end/disp8 +4254 75/jump-if-!= $num-bytes:end/disp8 4255 $num-bytes:check-for-comment: 4256 # if (slice-starts-with?(word-slice, "#")) break 4257 # . start/edx = word-slice->start @@ -3246,7 +3246,7 @@ if ('onhashchange' in window) { 4261 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 3/r32/BL . . # copy byte at *edx to BL 4262 # . if (ebx == '#') break 4263 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x23/imm32/hash # compare ebx -4264 74/jump-if-equal $num-bytes:end/disp8 +4264 74/jump-if-= $num-bytes:end/disp8 4265 $num-bytes:check-for-label: 4266 # if (slice-ends-with?(word-slice, ":")) break 4267 # . end/edx = word-slice->end @@ -3256,7 +3256,7 @@ if ('onhashchange' in window) { 4271 8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 3/r32/BL -1/disp8 . # copy byte at *ecx to BL 4272 # . if (ebx == ':') break 4273 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x3a/imm32/colon # compare ebx -4274 74/jump-if-equal $num-bytes:end/disp8 +4274 74/jump-if-= $num-bytes:end/disp8 4275 $num-bytes:check-for-segment-header: 4276 # if (slice-equal?(word-slice, "==")) break 4277 # . push result @@ -3273,7 +3273,7 @@ if ('onhashchange' in window) { 4288 3d/compare-eax-and 0/imm32/false 4289 # . restore result now that ZF is set 4290 58/pop-to-eax -4291 75/jump-if-not-equal $num-bytes:end/disp8 +4291 75/jump-if-!= $num-bytes:end/disp8 4292 $num-bytes:loop-body: 4293 # result += compute-width-of-slice(word-slice) 4294 # . copy result to edx diff --git a/html/apps/tests.subx.html b/html/apps/tests.subx.html index ce28a332..cc20676e 100644 --- a/html/apps/tests.subx.html +++ b/html/apps/tests.subx.html @@ -93,7 +93,7 @@ if ('onhashchange' in window) { 33 # - if argc > 1 and argv[1] == "test", then return run_tests() 34 # if (argc <= 1) goto run-main 35 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 36 7e/jump-if-lesser-or-equal $subx-tests-main:interactive/disp8 + 36 7e/jump-if-<= $subx-tests-main:interactive/disp8 37 # if (!kernel-string-equal?(argv[1], "test")) goto run-main 38 # . eax = kernel-string-equal?(argv[1], "test") 39 # . . push args @@ -105,7 +105,7 @@ if ('onhashchange' in window) { 45 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 46 # . if (eax == false) goto run-main 47 3d/compare-eax-and 0/imm32/false - 48 74/jump-if-equal $subx-tests-main:interactive/disp8 + 48 74/jump-if-= $subx-tests-main:interactive/disp8 49 # run-tests() 50 e8/call run-tests/disp32 51 # syscall(exit, *Num-test-failures) @@ -220,7 +220,7 @@ if ('onhashchange' in window) { 160 $subx-gen-run-tests:check0: 161 # if (line->write == 0) break 162 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx -163 0f 84/jump-if-equal $subx-gen-run-tests:break/disp32 +163 0f 84/jump-if-= $subx-gen-run-tests:break/disp32 164 # next-word(line, word-slice) 165 # . . push args 166 52/push-edx @@ -240,7 +240,7 @@ if ('onhashchange' in window) { 180 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 181 # . if (eax == false) continue 182 3d/compare-eax-and 0/imm32/false -183 74/jump-if-equal $subx-gen-run-tests:continue/disp8 +183 74/jump-if-= $subx-gen-run-tests:continue/disp8 184 $subx-gen-run-tests:check-label-prefix: 185 # strip trailing ':' from word-slice 186 ff 1/subop/decrement 1/mod/*+disp8 2/rm32/edx . . . . 4/disp8 . # decrement *(edx+4) @@ -254,7 +254,7 @@ if ('onhashchange' in window) { 194 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 195 # . if (eax == false) break 196 3d/compare-eax-and 0/imm32/false -197 74/jump-if-equal $subx-gen-run-tests:continue/disp8 +197 74/jump-if-= $subx-gen-run-tests:continue/disp8 198 $subx-gen-run-tests:call-test-function: 199 # tests-found? = true 200 bb/copy-to-ebx 1/imm32/true @@ -303,7 +303,7 @@ if ('onhashchange' in window) { 243 $subx-gen-run-tests:break: 244 # if (!tests-found?) goto end 245 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32/false # compare ebx -246 74/jump-if-equal $subx-gen-run-tests:end/disp8 +246 74/jump-if-= $subx-gen-run-tests:end/disp8 247 # write(new-code-segment, " c3/return\n") 248 # . . push args 249 68/push " c3/return\n"/imm32 -- cgit 1.4.1-2-gfad0