From 6070c23e5e1c60d3bb169e43bddfa59b1d322427 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Thu, 16 Jan 2020 18:31:12 -0800 Subject: [PATCH] 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. --- 050_write.subx | 2 +- 052kernel-string-equal.subx | 8 +- 054string-equal.subx | 6 +- 055stream.subx | 2 +- 056trace.subx | 22 +-- 057write.subx | 2 +- 058stream-equal.subx | 16 +- 059stop.subx | 2 +- 060read.subx | 6 +- 061read-byte.subx | 4 +- 062write-stream.subx | 4 +- 064write-byte.subx | 4 +- 065write-buffered.subx | 4 +- 066print-int.subx | 6 +- 067parse-hex.subx | 42 ++--- 069allocate.subx | 4 +- 070new-stream.subx | 2 +- 071read-line.subx | 14 +- 072slice.subx | 28 ++-- 073next-token.subx | 66 ++++---- 075print-int-decimal.subx | 14 +- 076next-word.subx | 4 +- 077subx-words.subx | 16 +- 078emit-hex.subx | 2 +- 079emit.subx | 2 +- 080zero-out.subx | 2 +- 081table.subx | 36 ++--- 082slurp.subx | 6 +- 083subx-widths.subx | 8 +- 084emit-hex-array.subx | 2 +- 085next-word-or-string.subx | 6 +- 091write-int.subx | 2 +- 092stack.subx | 8 +- 100array-equal.subx | 14 +- apps/assort.subx | 16 +- apps/braces.subx | 18 +-- apps/calls.subx | 50 +++--- apps/crenshaw2-1.subx | 12 +- apps/crenshaw2-1b.subx | 14 +- apps/dquotes.subx | 50 +++--- apps/ex10.subx | 6 +- apps/ex11.subx | 8 +- apps/ex3.subx | 2 +- apps/ex8.subx | 2 +- apps/factorial.subx | 4 +- apps/factorial2.subx | 4 +- apps/factorial3.subx | 4 +- apps/factorial4.subx | 10 +- apps/handle.subx | 6 +- apps/hex.subx | 44 +++--- apps/mu.subx | 220 +++++++++++++------------- apps/mulisp.subx | 8 +- apps/pack.subx | 98 ++++++------ apps/sigils.subx | 96 +++++------ apps/survey.subx | 74 ++++----- apps/tests.subx | 12 +- html/050_write.subx.html | 2 +- html/052kernel-string-equal.subx.html | 8 +- html/054string-equal.subx.html | 6 +- html/055stream.subx.html | 2 +- html/056trace.subx.html | 22 +-- html/057write.subx.html | 2 +- html/058stream-equal.subx.html | 16 +- html/059stop.subx.html | 2 +- html/060read.subx.html | 6 +- html/061read-byte.subx.html | 4 +- html/062write-stream.subx.html | 4 +- html/064write-byte.subx.html | 4 +- html/065write-buffered.subx.html | 4 +- html/066print-int.subx.html | 6 +- html/067parse-hex.subx.html | 42 ++--- html/069allocate.subx.html | 4 +- html/070new-stream.subx.html | 2 +- html/071read-line.subx.html | 14 +- html/072slice.subx.html | 28 ++-- html/073next-token.subx.html | 66 ++++---- html/075print-int-decimal.subx.html | 14 +- html/076next-word.subx.html | 4 +- html/077subx-words.subx.html | 16 +- html/078emit-hex.subx.html | 2 +- html/079emit.subx.html | 2 +- html/080zero-out.subx.html | 2 +- html/081table.subx.html | 36 ++--- html/082slurp.subx.html | 6 +- html/083subx-widths.subx.html | 8 +- html/084emit-hex-array.subx.html | 2 +- html/085next-word-or-string.subx.html | 6 +- html/091write-int.subx.html | 2 +- html/092stack.subx.html | 8 +- html/100array-equal.subx.html | 14 +- 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 +- mu-init-test.subx | 4 +- tools/update_html | 16 -- 114 files changed, 1124 insertions(+), 1140 deletions(-) diff --git a/050_write.subx b/050_write.subx index 05b20a4c..a7467b0d 100644 --- a/050_write.subx +++ b/050_write.subx @@ -34,7 +34,7 @@ _write: # fd : int, s : (addr array byte) cd/syscall 0x80/imm8 # if (eax < 0) abort 3d/compare-eax-with 0/imm32 - 0f 8c/jump-if-lesser $_write:abort/disp32 + 0f 8c/jump-if-< $_write:abort/disp32 $_write:end: # . restore registers 5b/pop-to-ebx diff --git a/052kernel-string-equal.subx b/052kernel-string-equal.subx index 94953e59..248b08e4 100644 --- a/052kernel-string-equal.subx +++ b/052kernel-string-equal.subx @@ -78,17 +78,17 @@ kernel-string-equal?: # s : (addr kernel-string), benchmark : (addr array byte) $kernel-string-equal?:loop: # if (i >= n) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 7d/jump-if-greater-or-equal $kernel-string-equal?:break/disp8 + 7d/jump-if->= $kernel-string-equal?:break/disp8 # c1 = *s1 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL # c2 = *s2 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL # if (c1 == 0) return false 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $kernel-string-equal?:false/disp8 + 74/jump-if-= $kernel-string-equal?:false/disp8 # if (c1 != c2) return false 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 75/jump-if-not-equal $kernel-string-equal?:false/disp8 + 75/jump-if-!= $kernel-string-equal?:false/disp8 # ++i 41/increment-ecx # ++s1 @@ -100,7 +100,7 @@ $kernel-string-equal?:break: # return *s1 == 0 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal $kernel-string-equal?:false/disp8 + 75/jump-if-!= $kernel-string-equal?:false/disp8 $kernel-string-equal?:true: b8/copy-to-eax 1/imm32 eb/jump $kernel-string-equal?:end/disp8 diff --git a/054string-equal.subx b/054string-equal.subx index a34130ec..67f54a66 100644 --- a/054string-equal.subx +++ b/054string-equal.subx @@ -50,7 +50,7 @@ string-equal?: # s : (addr array byte), benchmark : (addr array byte) -> eax : $string-equal?:lengths: # if (ecx != benchmark->length) return false 39/compare 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # compare *edi and ecx - 75/jump-if-not-equal $string-equal?:false/disp8 + 75/jump-if-!= $string-equal?:false/disp8 # var currs/esi : (addr byte) = s->data 81 0/subop/add 3/mod/direct 6/rm32/esi . . . . . 4/imm32 # add to esi # var maxs/ecx : (addr byte) = &s->data[s->length] @@ -64,14 +64,14 @@ $string-equal?:lengths: $string-equal?:loop: # if (currs >= maxs) return true 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx - 73/jump-if-greater-or-equal-unsigned $string-equal?:true/disp8 + 73/jump-if-addr>= $string-equal?:true/disp8 # c1 = *currs 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL # c2 = *currb 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 2/r32/DL . . # copy byte at *edi to DL # if (c1 != c2) return false 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax and edx - 75/jump-if-not-equal $string-equal?:false/disp8 + 75/jump-if-!= $string-equal?:false/disp8 # ++currs 46/increment-esi # ++currb diff --git a/055stream.subx b/055stream.subx index dbeb8495..28267e05 100644 --- a/055stream.subx +++ b/055stream.subx @@ -36,7 +36,7 @@ clear-stream: # f : (addr stream byte) $clear-stream:loop: # if (curr >= max) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 73/jump-if-greater-or-equal-unsigned $clear-stream:end/disp8 + 73/jump-if-addr>= $clear-stream:end/disp8 # *curr = 0 c6 0/subop/copy-byte 0/mod/direct 0/rm32/eax . . . . . 0/imm8 # copy byte to *eax # ++curr diff --git a/056trace.subx b/056trace.subx index e99f559f..73da4a9a 100644 --- a/056trace.subx +++ b/056trace.subx @@ -117,7 +117,7 @@ trace: # line : (addr array byte) 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # if (eax == 0) return 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $trace:end/disp8 + 74/jump-if-= $trace:end/disp8 # t->write += eax 01/add 0/mod/indirect 7/rm32/edi . . . 0/r32/eax . . # add eax to *edi # refresh ecx = t->write @@ -335,7 +335,7 @@ trace-scan: # line : (addr array byte) -> result/eax : boolean $trace-scan:loop: # if (Trace-stream->read >= Trace-stream->write) return false 39/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 7d/jump-if-greater-or-equal $trace-scan:false/disp8 + 7d/jump-if->= $trace-scan:false/disp8 # eax = next-line-matches?(Trace-stream, line) # . . push args ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -346,7 +346,7 @@ $trace-scan:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # if (eax == false) continue 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $trace-scan:continue/disp8 + 74/jump-if-= $trace-scan:continue/disp8 $trace-scan:true: # skip-next-line(Trace-stream) # . . push args @@ -604,12 +604,12 @@ next-line-matches?: # t : (addr stream byte), line : (addr array byte) -> resul $next-line-matches?:loop: # if (currl >= maxl) break 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi and ecx - 73/jump-if-greater-or-equal-unsigned $next-line-matches?:break/disp8 + 73/jump-if-addr>= $next-line-matches?:break/disp8 # if (currt >= maxt) return false # . eax = false b8/copy-to-eax 0/imm32/false 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . . # compare edi and edx - 73/jump-if-greater-or-equal-unsigned $next-line-matches?:end/disp8 + 73/jump-if-addr>= $next-line-matches?:end/disp8 # if (*currt != *currl) return false 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 31/xor 3/mod/direct 3/rm32/eax . . . 3/r32/eax . . # clear ebx @@ -621,7 +621,7 @@ $next-line-matches?:loop: 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx # . eax = false b8/copy-to-eax 0/imm32/false - 75/jump-if-not-equal $next-line-matches?:end/disp8 + 75/jump-if-!= $next-line-matches?:end/disp8 # ++currt 47/increment-edi # ++currl @@ -635,7 +635,7 @@ $next-line-matches?:break: 3d/compare-eax-and 0xa/imm32/newline # . eax = false b8/copy-to-eax 1/imm32/true - 74/jump-if-equal $next-line-matches?:end/disp8 + 74/jump-if-= $next-line-matches?:end/disp8 b8/copy-to-eax 0/imm32/true $next-line-matches?:end: # . restore registers @@ -771,14 +771,14 @@ skip-next-line: # t : (addr stream byte) $skip-next-line:loop: # if (curr >= max) break 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx and ebx - 73/jump-if-greater-or-equal-unsigned $skip-next-line:end/disp8 + 73/jump-if-addr>= $skip-next-line:end/disp8 # ++i 42/increment-edx # if (*curr == '\n') break 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . . # copy *ecx to eax 3d/compare-eax-and 0a/imm32/newline - 74/jump-if-equal $skip-next-line:end/disp8 + 74/jump-if-= $skip-next-line:end/disp8 # ++curr 41/increment-ecx # loop @@ -917,10 +917,10 @@ _append-4: # out : (addr byte), outend : (addr byte), in : (addr byte), inend : $_append-4:loop: # if (in >= inend) break 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx - 73/jump-if-greater-or-equal-unsigned $_append-4:end/disp8 + 73/jump-if-addr>= $_append-4:end/disp8 # if (out >= outend) abort # just to catch test failures fast 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . . # compare edi with edx - 73/jump-if-greater-or-equal-unsigned $_append-4:abort/disp8 + 73/jump-if-addr>= $_append-4:abort/disp8 # *out = *in 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL 88/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . . # copy byte at BL to *edi diff --git a/057write.subx b/057write.subx index 5ca5700b..93f0853f 100644 --- a/057write.subx +++ b/057write.subx @@ -27,7 +27,7 @@ write: # f : fd or (addr stream byte), s : (addr array byte) 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # if (f < 0x08000000) _write(f, s) and return # f can't be a user-mode address, so treat it as a kernel file descriptor 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x08000000/imm32 # compare *(ebp+8) - 73/jump-if-greater-unsigned-or-equal $write:fake/disp8 + 73/jump-if-addr>= $write:fake/disp8 # . . push args ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) diff --git a/058stream-equal.subx b/058stream-equal.subx index bcf6b6f2..e2009ef4 100644 --- a/058stream-equal.subx +++ b/058stream-equal.subx @@ -28,7 +28,7 @@ stream-data-equal?: # f : (addr stream byte), s : (addr array byte) -> eax : bo $stream-data-equal?:compare-lengths: # if (f->write != s->length) return false 39/compare 0/mod/indirect 7/rm32/edi . . . 0/r32/eax . . # compare *edi and eax - 75/jump-if-not-equal $stream-data-equal?:false/disp8 + 75/jump-if-!= $stream-data-equal?:false/disp8 # var currs/edi : (addr byte) = s->data 81 0/subop/add 3/mod/direct 7/rm32/edi . . . . . 4/imm32 # add to edi # var eax : byte = 0 @@ -38,14 +38,14 @@ $stream-data-equal?:compare-lengths: $stream-data-equal?:loop: # if (currf >= maxf) return true 39/compare 3/mod/direct 6/rm32/esi . . . 2/r32/edx . . # compare esi with edx - 73/jump-if-greater-or-equal-unsigned $stream-data-equal?:true/disp8 + 73/jump-if-addr>= $stream-data-equal?:true/disp8 # AL = *currs 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL # CL = *curr 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 1/r32/CL . . # copy byte at *edi to CL # if (eax != ecx) return false 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax and ecx - 75/jump-if-not-equal $stream-data-equal?:false/disp8 + 75/jump-if-!= $stream-data-equal?:false/disp8 # ++f 46/increment-esi # ++curr @@ -287,20 +287,20 @@ next-stream-line-equal?: # f : (addr stream byte), s : (addr array byte) -> eax $next-stream-line-equal?:loop: # if (currf >= f->write) break 3b/compare 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # compare ecx with *esi - 7d/jump-if-greater-or-equal $next-stream-line-equal?:break/disp8 + 7d/jump-if->= $next-stream-line-equal?:break/disp8 # c1 = f->data[f->read] 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 # if (c1 == '\n') break 3d/compare-eax-and 0xa/imm32/newline - 74/jump-if-equal $next-stream-line-equal?:break/disp8 + 74/jump-if-= $next-stream-line-equal?:break/disp8 # if (currs >= s->length) return false 3b/compare 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # compare edx with *edi - 7d/jump-if-greater-or-equal $next-stream-line-equal?:false/disp8 + 7d/jump-if->= $next-stream-line-equal?:false/disp8 # c2 = s->data[currs] 8a/copy-byte 1/mod/*+disp8 4/rm32/sib 7/base/edi 2/index/edx . 3/r32/BL 4/disp8 . # copy byte at *(edi+edx+4) to BL # if (c1 != c2) return false 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 75/jump-if-not-equal $next-stream-line-equal?:false/disp8 + 75/jump-if-!= $next-stream-line-equal?:false/disp8 # ++currf 41/increment-ecx # ++currs @@ -311,7 +311,7 @@ $next-stream-line-equal?:break: 41/increment-ecx # if (currs >= s->length) return true 3b/compare 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # compare edx with *edi - 7c/jump-if-lesser $next-stream-line-equal?:false/disp8 + 7c/jump-if-< $next-stream-line-equal?:false/disp8 $next-stream-line-equal?:true: b8/copy-to-eax 1/imm32 # persist f->read on success diff --git a/059stop.subx b/059stop.subx index 2db14caf..e883cbc7 100644 --- a/059stop.subx +++ b/059stop.subx @@ -95,7 +95,7 @@ stop: # ed : (addr exit-descriptor), value : int 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none . 0/r32/eax 4/disp8 . # copy *(esp+4) to eax # if (ed->target == 0) really exit 81 7/subop/compare 0/mod/indirect 0/rm32/eax . . . . . 0/imm32 # compare *eax - 75/jump-if-not-equal $stop:fake/disp8 + 75/jump-if-!= $stop:fake/disp8 # . syscall(exit, value) 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none . 3/r32/ebx 8/disp8 . # copy *(esp+8) to ebx b8/copy-to-eax 1/imm32/exit diff --git a/060read.subx b/060read.subx index fc93f93d..5f75ffe7 100644 --- a/060read.subx +++ b/060read.subx @@ -51,7 +51,7 @@ read: # f : fd or (addr stream byte), s : (addr stream byte) -> num-bytes-read/ 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # if (f < 0x08000000) return _read(f, s) # f can't be a user-mode address, so treat it as a kernel file descriptor 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x08000000/imm32 # compare *(ebp+8) - 73/jump-if-greater-unsigned-or-equal $read:fake/disp8 + 73/jump-if-addr>= $read:fake/disp8 # . . push args ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -165,10 +165,10 @@ _buffer-4: # out : address, outend : address, in : address, inend : address -> $_buffer-4:loop: # if (in >= inend) break 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx - 73/jump-if-greater-or-equal-unsigned $_buffer-4:end/disp8 + 73/jump-if-addr>= $_buffer-4:end/disp8 # if (out >= outend) break # for now silently ignore filled up buffer 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . . # compare edi with edx - 73/jump-if-greater-or-equal-unsigned $_buffer-4:end/disp8 + 73/jump-if-addr>= $_buffer-4:end/disp8 # *out = *in 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL 88/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . . # copy byte at BL to *edi diff --git a/061read-byte.subx b/061read-byte.subx index 47fa209f..a2872d17 100644 --- a/061read-byte.subx +++ b/061read-byte.subx @@ -48,7 +48,7 @@ read-byte-buffered: # f : (addr buffered-file) -> byte-or-Eof/eax 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # copy *(esi+8) to ecx # if (f->read >= f->write) populate stream from file 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 7c/jump-if-lesser $read-byte-buffered:from-stream/disp8 + 7c/jump-if-< $read-byte-buffered:from-stream/disp8 # . clear-stream(stream = f+4) # . . push args 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy esi+4 to eax @@ -69,7 +69,7 @@ read-byte-buffered: # f : (addr buffered-file) -> byte-or-Eof/eax 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # if (eax == 0) return 0xffffffff 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal $read-byte-buffered:from-stream/disp8 + 75/jump-if-!= $read-byte-buffered:from-stream/disp8 b8/copy-to-eax 0xffffffff/imm32/Eof eb/jump $read-byte-buffered:end/disp8 $read-byte-buffered:from-stream: diff --git a/062write-stream.subx b/062write-stream.subx index af6309dd..f454dcd9 100644 --- a/062write-stream.subx +++ b/062write-stream.subx @@ -21,7 +21,7 @@ write-stream: # f : fd or (addr stream byte), s : (addr stream byte) 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # if (f < 0x08000000) _write-stream(f, s), return # f can't be a user-mode address, so treat it as a kernel file descriptor 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x08000000/imm32 # compare *(ebp+8) - 73/jump-if-greater-unsigned-or-equal $write-stream:fake/disp8 + 73/jump-if-addr>= $write-stream:fake/disp8 # . . push args ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -104,7 +104,7 @@ _write-stream: # fd : int, s : (addr stream byte) cd/syscall 0x80/imm8 # if (eax < 0) abort 3d/compare-eax-with 0/imm32 - 0f 8c/jump-if-lesser $_write-stream:abort/disp32 + 0f 8c/jump-if-< $_write-stream:abort/disp32 # s->read += eax 01/add 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # add eax to *(esi+4) # . restore registers diff --git a/064write-byte.subx b/064write-byte.subx index a5f886b2..16e39619 100644 --- a/064write-byte.subx +++ b/064write-byte.subx @@ -43,7 +43,7 @@ write-byte-buffered: # f : (addr buffered-file), n : int 8b/copy 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 4/disp8 . # copy *(edi+4) to ecx # if (f->write >= f->length) flush and clear f's stream 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 0xc/disp8 . # compare ecx with *(edi+12) - 7c/jump-if-lesser $write-byte-buffered:to-stream/disp8 + 7c/jump-if-< $write-byte-buffered:to-stream/disp8 # . flush(f) # . . push args 57/push-edi @@ -218,7 +218,7 @@ append-byte: # f : (addr stream byte), n : int 8b/copy 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # copy *edi to ecx # if (f->write >= f->length) abort 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(edi+8) - 7d/jump-if-greater-or-equal $append-byte:abort/disp8 + 7d/jump-if->= $append-byte:abort/disp8 $append-byte:to-stream: # write to stream # f->data[f->write] = LSB(n) diff --git a/065write-buffered.subx b/065write-buffered.subx index 6069caaf..001f73e3 100644 --- a/065write-buffered.subx +++ b/065write-buffered.subx @@ -52,10 +52,10 @@ write-buffered: # f : (addr buffered-file), msg : (addr array byte) $write-buffered:loop: # if (in >= inend) break 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx - 73/jump-if-greater-or-equal-unsigned $write-buffered:loop-end/disp8 + 73/jump-if-addr>= $write-buffered:loop-end/disp8 # if (f->write >= f->length) flush and clear f's stream 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx with edx - 7c/jump-if-lesser $write-buffered:to-stream/disp8 + 7c/jump-if-< $write-buffered:to-stream/disp8 # . persist f->write 89/copy 1/mod/*+disp8 7/rm32/edi . . . 3/r32/ebx 4/disp8 . # copy ebx to *(edi+4) # . flush(f) diff --git a/066print-int.subx b/066print-int.subx index dacf9ef5..91518dbe 100644 --- a/066print-int.subx +++ b/066print-int.subx @@ -10,7 +10,7 @@ to-hex-char: # in/eax : int -> out/eax : int # no error checking; accepts argument in eax # if (eax <= 9) return eax + '0' 3d/compare-eax-with 0x9/imm32/9 - 7f/jump-if-greater $to-hex-char:else/disp8 + 7f/jump-if-> $to-hex-char:else/disp8 05/add-to-eax 0x30/imm32/0 c3/return $to-hex-char:else: @@ -206,7 +206,7 @@ $print-int32:print-hex-prefix: $print-int32:loop: # if (ecx < 0) break 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx - 7c/jump-if-lesser $print-int32:end/disp8 + 7c/jump-if-< $print-int32:end/disp8 # eax = n >> ecx 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax d3/>>ecx 5/subop/pad-zeroes 3/mod/direct 0/rm32/eax . . . . . . # shift eax right by ecx bits, padding zeroes @@ -294,7 +294,7 @@ $print-int32-buffered:print-hex-prefix: $print-int32-buffered:loop: # if (ecx < 0) break 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx - 7c/jump-if-lesser $print-int32-buffered:end/disp8 + 7c/jump-if-< $print-int32-buffered:end/disp8 # eax = n >> ecx 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax d3/>>ecx 5/subop/pad-zeroes 3/mod/direct 0/rm32/eax . . . . . . # shift eax right by ecx bits, padding zeroes diff --git a/067parse-hex.subx b/067parse-hex.subx index 6573b358..fde26e39 100644 --- a/067parse-hex.subx +++ b/067parse-hex.subx @@ -23,13 +23,13 @@ is-hex-int?: # in : (addr slice) -> eax : boolean # if s is empty return false b8/copy-to-eax 0/imm32/false 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $is-hex-int?:end/disp8 + 73/jump-if-addr>= $is-hex-int?:end/disp8 # skip past leading '-' # . if (*curr == '-') ++curr 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x2d/imm32/- # compare ebx - 75/jump-if-not-equal $is-hex-int?:initial-0/disp8 + 75/jump-if-!= $is-hex-int?:initial-0/disp8 # . ++curr 41/increment-ecx # skip past leading '0x' @@ -38,24 +38,24 @@ $is-hex-int?:initial-0: 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x30/imm32/0 # compare ebx - 75/jump-if-not-equal $is-hex-int?:loop/disp8 + 75/jump-if-!= $is-hex-int?:loop/disp8 # . ++curr 41/increment-ecx $is-hex-int?:initial-0x: # . if (curr >= in->end) return true 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $is-hex-int?:true/disp8 + 73/jump-if-addr>= $is-hex-int?:true/disp8 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x78/imm32/x # compare ebx - 75/jump-if-not-equal $is-hex-int?:loop/disp8 + 75/jump-if-!= $is-hex-int?:loop/disp8 # . ++curr 41/increment-ecx $is-hex-int?:loop: # if (curr >= in->end) return true 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $is-hex-int?:true/disp8 + 73/jump-if-addr>= $is-hex-int?:true/disp8 # var eax : boolean = is-hex-digit?(*curr) # . . push args 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -66,7 +66,7 @@ $is-hex-int?:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # if (eax == false) return false 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $is-hex-int?:end/disp8 + 74/jump-if-= $is-hex-int?:end/disp8 # ++curr 41/increment-ecx # loop @@ -375,7 +375,7 @@ $parse-hex-int:negative: 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x2d/imm32/- - 75/jump-if-not-equal $parse-hex-int:initial-0/disp8 + 75/jump-if-!= $parse-hex-int:initial-0/disp8 # . ++curr 41/increment-ecx # . negate = true @@ -385,24 +385,24 @@ $parse-hex-int:initial-0: # . if (*curr != '0') jump to loop 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x30/imm32/0 - 75/jump-if-not-equal $parse-hex-int:loop/disp8 + 75/jump-if-!= $parse-hex-int:loop/disp8 # . ++curr 41/increment-ecx $parse-hex-int:initial-0x: # . if (curr >= in->end) return result 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $parse-hex-int:end/disp8 + 73/jump-if-addr>= $parse-hex-int:end/disp8 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x78/imm32/x - 75/jump-if-not-equal $parse-hex-int:loop/disp8 + 75/jump-if-!= $parse-hex-int:loop/disp8 # . ++curr 41/increment-ecx $parse-hex-int:loop: # if (curr >= in->end) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $parse-hex-int:negate/disp8 + 73/jump-if-addr>= $parse-hex-int:negate/disp8 # var eax : int = from-hex-char(*curr) # . . copy arg to eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -418,7 +418,7 @@ $parse-hex-int:loop: $parse-hex-int:negate: # if (negate?) result = -result 81 7/subop/compare 3/mod/direct 6/rm32/esi . . . . . 0/imm32/false # compare esi - 74/jump-if-equal $parse-hex-int:end/disp8 + 74/jump-if-= $parse-hex-int:end/disp8 f7 3/subop/negate 3/mod/direct 3/rm32/ebx . . . . . . # negate ebx $parse-hex-int:end: # return result @@ -647,18 +647,18 @@ is-hex-digit?: # c : byte -> eax : boolean 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 1/r32/ecx 8/disp8 . # copy *(ebp+8) to ecx # return false if c < '0' 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x30/imm32 # compare ecx - 7c/jump-if-lesser $is-hex-digit?:false/disp8 + 7c/jump-if-< $is-hex-digit?:false/disp8 # return true if c <= '9' 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x39/imm32 # compare ecx - 7e/jump-if-lesser-or-equal $is-hex-digit?:true/disp8 + 7e/jump-if-<= $is-hex-digit?:true/disp8 # drop case 25/and-eax-with 0x5f/imm32 # return false if c > 'f' 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x66/imm32 # compare ecx - 7f/jump-if-greater $is-hex-digit?:false/disp8 + 7f/jump-if-> $is-hex-digit?:false/disp8 # return true if c >= 'a' 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x61/imm32 # compare ecx - 7d/jump-if-greater-or-equal $is-hex-digit?:true/disp8 + 7d/jump-if->= $is-hex-digit?:true/disp8 # otherwise return false $is-hex-digit?:false: b8/copy-to-eax 0/imm32/false @@ -804,15 +804,15 @@ from-hex-char: # in/eax : byte -> out/eax : nibble $from-hex-char:check0: # if (eax < '0') goto abort 3d/compare-eax-with 0x30/imm32/0 - 7c/jump-if-lesser $from-hex-char:abort/disp8 + 7c/jump-if-< $from-hex-char:abort/disp8 $from-hex-char:check1: # if (eax > 'f') goto abort 3d/compare-eax-with 0x66/imm32/f - 7f/jump-if-greater $from-hex-char:abort/disp8 + 7f/jump-if-> $from-hex-char:abort/disp8 $from-hex-char:check2: # if (eax > '9') goto next check 3d/compare-eax-with 0x39/imm32/9 - 7f/jump-if-greater $from-hex-char:check3/disp8 + 7f/jump-if-> $from-hex-char:check3/disp8 $from-hex-char:digit: # return eax - '0' 2d/subtract-from-eax 0x30/imm32/0 @@ -820,7 +820,7 @@ $from-hex-char:digit: $from-hex-char:check3: # if (eax < 'a') goto abort 3d/compare-eax-with 0x61/imm32/a - 7c/jump-if-lesser $from-hex-char:abort/disp8 + 7c/jump-if-< $from-hex-char:abort/disp8 $from-hex-char:letter: # return eax - ('a'-10) 2d/subtract-from-eax 0x57/imm32/a-10 diff --git a/069allocate.subx b/069allocate.subx index 625f6c3a..8491fe25 100644 --- a/069allocate.subx +++ b/069allocate.subx @@ -72,7 +72,7 @@ allocate: # ad : (addr allocation-descriptor), n : int -> address-or-null/eax : 89/copy 3/mod/direct 2/rm32/edx . . . 0/r32/eax . . # copy eax to edx 03/add 1/mod/*+disp8 5/rm32/ebp . . . 2/r32/edx 0xc/disp8 . # add *(ebp+12) to edx 3b/compare 1/mod/*+disp8 1/rm32/ecx . . . 2/r32/edx 4/disp8 . # compare edx with *(ecx+4) - 73/jump-if-greater-or-equal-signed $allocate:abort/disp8 + 73/jump-if->=-signed $allocate:abort/disp8 $allocate:commit: # update ad->curr 89/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy edx to *ecx @@ -196,7 +196,7 @@ allocate-region: # ad : (addr allocation-descriptor), n : int -> new-ad : (hand 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # if (eax == 0) abort 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $allocate-region:abort/disp8 + 74/jump-if-= $allocate-region:abort/disp8 # earmark 8 bytes at the start for a new allocation descriptor # . *eax = eax + 8 89/copy 3/mod/direct 1/rm32/ecx . . . 0/r32/eax . . # copy eax to ecx diff --git a/070new-stream.subx b/070new-stream.subx index a011a4a5..55822c5b 100644 --- a/070new-stream.subx +++ b/070new-stream.subx @@ -19,7 +19,7 @@ new-stream: # ad : (addr allocation-descriptor), length : int, elemsize : int - f7 4/subop/multiply 1/mod/*+disp8 5/rm32/ebp . . 0xc/disp8 . # multiply *(ebp+12) into eax # . if overflow abort 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32 # compare edx - 75/jump-if-not-equal $new-stream:abort/disp8 + 75/jump-if-!= $new-stream:abort/disp8 # . edx = elemsize*length 89/copy 3/mod/direct 2/rm32/edx . . . 0/r32/eax . . # copy eax to edx # . eax += 12 diff --git a/071read-line.subx b/071read-line.subx index ee52e44f..1dcdf8b9 100644 --- a/071read-line.subx +++ b/071read-line.subx @@ -37,10 +37,10 @@ read-line-buffered: # f : (addr buffered-file), s : (addr stream byte) $read-line-buffered:loop: # if (s->write >= s->length) abort 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 2/r32/edx 8/disp8 . # compare edx with *(edi+8) - 7d/jump-if-greater-or-equal $read-line-buffered:abort/disp8 + 7d/jump-if->= $read-line-buffered:abort/disp8 # if (f->read >= f->write) populate stream from file 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 7c/jump-if-lesser $read-line-buffered:from-stream/disp8 + 7c/jump-if-< $read-line-buffered:from-stream/disp8 # . clear-stream(stream = f+4) # . . push args 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy esi+4 to eax @@ -63,7 +63,7 @@ $read-line-buffered:loop: # since f->read was initially 0, eax is the same as f->write # . if (eax == 0) return true 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $read-line-buffered:end/disp8 + 74/jump-if-= $read-line-buffered:end/disp8 $read-line-buffered:from-stream: # AL = f->data[f->read] 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax @@ -76,7 +76,7 @@ $read-line-buffered:from-stream: 42/increment-edx # if (AL == '\n') return 3d/compare-eax-and 0xa/imm32 - 75/jump-if-not-equal $read-line-buffered:loop/disp8 + 75/jump-if-!= $read-line-buffered:loop/disp8 $read-line-buffered:end: # save f->read 89/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # copy ecx to *(esi+8) @@ -246,10 +246,10 @@ read-line: # f : (addr stream byte), s : (addr stream byte) $read-line:loop: # if (s->write >= s->length) abort 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 2/r32/edx 8/disp8 . # compare edx with *(edi+8) - 0f 8d/jump-if-greater-or-equal $read-line:abort/disp32 + 0f 8d/jump-if->= $read-line:abort/disp32 # if (f->read >= f->write) break 3b/compare 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # compare ecx with *esi - 7d/jump-if-greater-or-equal $read-line:end/disp8 + 7d/jump-if->= $read-line:end/disp8 # AL = f->data[f->read] 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 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 @@ -261,7 +261,7 @@ $read-line:loop: 42/increment-edx # if (AL == '\n') return 3d/compare-eax-and 0xa/imm32 - 0f 85/jump-if-not-equal $read-line:loop/disp32 + 0f 85/jump-if-!= $read-line:loop/disp32 $read-line:end: # save f->read 89/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # copy ecx to *(esi+4) diff --git a/072slice.subx b/072slice.subx index 2edeed75..65db1c16 100644 --- a/072slice.subx +++ b/072slice.subx @@ -20,7 +20,7 @@ slice-empty?: # s : (addr slice) -> eax : boolean # . compare eax and s->end 39/compare 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # compare eax and *(ecx+4) b8/copy-to-eax 1/imm32/true - 74/jump-if-equal $slice-empty?:end/disp8 + 74/jump-if-= $slice-empty?:end/disp8 b8/copy-to-eax 0/imm32/false $slice-empty?:end: # . restore registers @@ -129,16 +129,16 @@ slice-equal?: # s : (addr slice), p : (addr array byte) -> eax : boolean 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 3/r32/ebx 0xc/disp8 . # copy *(ebp+12) to ebx # if (p != 0) goto next check 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32 # compare ebx - 75/jump-if-not-equal $slice-equal?:nonnull-string/disp8 + 75/jump-if-!= $slice-equal?:nonnull-string/disp8 $slice-equal?:null-string: # return s->start == s->end 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $slice-equal?:true/disp8 + 74/jump-if-= $slice-equal?:true/disp8 eb/jump $slice-equal?:false/disp8 $slice-equal?:nonnull-string: # if (slen != p->length) return false 39/compare 0/mod/indirect 3/rm32/ebx . . . 0/r32/eax . . # compare *ebx and eax - 75/jump-if-not-equal $slice-equal?:false/disp8 + 75/jump-if-!= $slice-equal?:false/disp8 # var currp/ebx : (addr byte) = p->data 81 0/subop/add 3/mod/direct 3/rm32/ebx . . . . . 4/imm32 # add to ebx # var c1/eax : byte = 0 @@ -148,14 +148,14 @@ $slice-equal?:nonnull-string: $slice-equal?:loop: # if (currs >= maxs) return true 39/compare 3/mod/direct 2/rm32/edx . . . 6/r32/esi . . # compare edx with esi - 73/jump-if-greater-or-equal-unsigned $slice-equal?:true/disp8 + 73/jump-if-addr>= $slice-equal?:true/disp8 # c1 = *currp 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL # c2 = *currs 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL # if (c1 != c2) return false 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax and ecx - 75/jump-if-not-equal $slice-equal?:false/disp8 + 75/jump-if-!= $slice-equal?:false/disp8 # ++currp 43/increment-ebx # ++currs @@ -497,7 +497,7 @@ slice-starts-with?: # s : (addr slice), head : (addr array byte) -> eax : boole 8b/copy 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # copy *edi to edx # if (lenh > lens) return false 39/compare 3/mod/direct 2/rm32/edx . . . 1/r32/ecx . . # compare edx with ecx - 7f/jump-if-greater $slice-starts-with?:false/disp8 + 7f/jump-if-> $slice-starts-with?:false/disp8 # var currs/esi : (addr byte) = s->start 8b/subtract 0/mod/indirect 6/rm32/esi . . . 6/r32/esi . . # copy *esi to esi # var currh/edi : (addr byte) = head->data @@ -511,14 +511,14 @@ slice-starts-with?: # s : (addr slice), head : (addr array byte) -> eax : boole $slice-starts-with?:loop: # if (i >= lenh) return true 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 7d/jump-if-greater-or-equal $slice-starts-with?:true/disp8 + 7d/jump-if->= $slice-starts-with?:true/disp8 # c1 = *currs 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL # c2 = *currh 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . . # copy byte at *edi to BL # if (c1 != c2) return false 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 75/jump-if-not-equal $slice-starts-with?:false/disp8 + 75/jump-if-!= $slice-starts-with?:false/disp8 # ++i 41/increment-ecx # ++currs @@ -787,10 +787,10 @@ write-slice: # out : (addr stream byte), s : (addr slice) $write-slice:loop: # if (curr >= max) break 39/compare 3/mod/direct 1/rm32/ecx . . . 6/r32/esi . . # compare ecx with esi - 73/jump-if-greater-or-equal-unsigned $write-slice:loop-end/disp8 + 73/jump-if-addr>= $write-slice:loop-end/disp8 # if (out->write >= out->length) abort 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx with edx - 7d/jump-if-greater-or-equal $write-slice:abort/disp8 + 7d/jump-if->= $write-slice:abort/disp8 # out->data[out->write] = *in # . AL = *in 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax @@ -903,10 +903,10 @@ write-slice-buffered: # out : (addr buffered-file), s : (addr slice) $write-slice-buffered:loop: # if (curr >= max) break 39/compare 3/mod/direct 1/rm32/ecx . . . 6/r32/esi . . # compare ecx with esi - 73/jump-if-greater-or-equal-unsigned $write-slice-buffered:loop-end/disp8 + 73/jump-if-addr>= $write-slice-buffered:loop-end/disp8 # if (out->write >= out->length) flush and clear out's stream 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx with edx - 7c/jump-if-lesser $write-slice-buffered:to-stream/disp8 + 7c/jump-if-< $write-slice-buffered:to-stream/disp8 # . persist out->write 89/copy 1/mod/*+disp8 7/rm32/edi . . . 3/r32/ebx 4/disp8 . # copy ebx to *(edi+4) # . flush(out) @@ -1041,7 +1041,7 @@ slice-to-string: # ad : (addr allocation-descriptor), in : (addr slice) -> out/ 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # if (eax == 0) abort 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $slice-to-string:abort/disp8 + 74/jump-if-= $slice-to-string:abort/disp8 # out->length = size-4 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax 81 5/subop/subtract 0/mod/indirect 0/rm32/eax . . . . . 4/imm32 # subtract 4 from *eax diff --git a/073next-token.subx b/073next-token.subx index bbcded35..b85dc686 100644 --- a/073next-token.subx +++ b/073next-token.subx @@ -359,13 +359,13 @@ skip-chars-matching: # in : (addr stream byte), delimiter : byte $skip-chars-matching:loop: # if (in->read >= in->write) break 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 7d/jump-if-greater-or-equal $skip-chars-matching:end/disp8 + 7d/jump-if->= $skip-chars-matching:end/disp8 # eax = in->data[in->read] 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 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 # if (eax != delimiter) break 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax and edx - 75/jump-if-not-equal $skip-chars-matching:end/disp8 + 75/jump-if-!= $skip-chars-matching:end/disp8 # ++in->read 41/increment-ecx eb/jump $skip-chars-matching:loop/disp8 @@ -479,22 +479,22 @@ skip-chars-matching-whitespace: # in : (addr stream byte) $skip-chars-matching-whitespace:loop: # if (in->read >= in->write) break 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 7d/jump-if-greater-or-equal $skip-chars-matching-whitespace:end/disp8 + 7d/jump-if->= $skip-chars-matching-whitespace:end/disp8 # eax = in->data[in->read] 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 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 # if (eax == ' ') goto body 3d/compare-eax-and 0x20/imm32/space - 74/jump-if-equal $skip-chars-matching-whitespace:body/disp8 + 74/jump-if-= $skip-chars-matching-whitespace:body/disp8 # if (eax == '\n') goto body 3d/compare-eax-and 0x0a/imm32/newline - 74/jump-if-equal $skip-chars-matching-whitespace:body/disp8 + 74/jump-if-= $skip-chars-matching-whitespace:body/disp8 # if (eax == '\t') goto body 3d/compare-eax-and 0x09/imm32/tab - 74/jump-if-equal $skip-chars-matching-whitespace:body/disp8 + 74/jump-if-= $skip-chars-matching-whitespace:body/disp8 # if (eax != '\r') break 3d/compare-eax-and 0x0d/imm32/cr - 75/jump-if-not-equal $skip-chars-matching-whitespace:end/disp8 + 75/jump-if-!= $skip-chars-matching-whitespace:end/disp8 $skip-chars-matching-whitespace:body: # ++in->read 41/increment-ecx @@ -572,13 +572,13 @@ skip-chars-not-matching: # in : (addr stream byte), delimiter : byte $skip-chars-not-matching:loop: # if (in->read >= in->write) break 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 7d/jump-if-greater-or-equal $skip-chars-not-matching:end/disp8 + 7d/jump-if->= $skip-chars-not-matching:end/disp8 # eax = in->data[in->read] 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 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 # if (eax == delimiter) break 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax and edx - 74/jump-if-equal $skip-chars-not-matching:end/disp8 + 74/jump-if-= $skip-chars-not-matching:end/disp8 # ++in->read 41/increment-ecx eb/jump $skip-chars-not-matching:loop/disp8 @@ -731,22 +731,22 @@ skip-chars-not-matching-whitespace: # in : (addr stream byte) $skip-chars-not-matching-whitespace:loop: # if (in->read >= in->write) break 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 7d/jump-if-greater-or-equal $skip-chars-not-matching-whitespace:end/disp8 + 7d/jump-if->= $skip-chars-not-matching-whitespace:end/disp8 # eax = in->data[in->read] 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 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 # if (eax == ' ') break 3d/compare-eax-and 0x20/imm32/space - 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 # if (eax == '\n') break 3d/compare-eax-and 0x0a/imm32/newline - 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 # if (eax == '\t') break 3d/compare-eax-and 0x09/imm32/tab - 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 # if (eax == '\r') break 3d/compare-eax-and 0x0d/imm32/cr - 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 # ++in->read 41/increment-ecx eb/jump $skip-chars-not-matching-whitespace:loop/disp8 @@ -820,12 +820,12 @@ skip-chars-matching-in-slice: # curr : (addr byte), end : (addr byte), delimite $skip-chars-matching-in-slice:loop: # if (curr >= end) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 73/jump-if-greater-or-equal-unsigned $skip-chars-matching-in-slice:end/disp8 + 73/jump-if-addr>= $skip-chars-matching-in-slice:end/disp8 # c = *curr 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL # if (c != delimiter) break 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx and edx - 75/jump-if-not-equal $skip-chars-matching-in-slice:end/disp8 + 75/jump-if-!= $skip-chars-matching-in-slice:end/disp8 # ++curr 40/increment-eax eb/jump $skip-chars-matching-in-slice:loop/disp8 @@ -913,21 +913,21 @@ skip-chars-matching-whitespace-in-slice: # curr : (addr byte), end : (addr byte $skip-chars-matching-whitespace-in-slice:loop: # if (curr >= end) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 0f 83/jump-if-greater-or-equal-unsigned $skip-chars-matching-in-slice:end/disp32 + 0f 83/jump-if-addr>= $skip-chars-matching-in-slice:end/disp32 # c = *curr 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL # if (c == ' ') goto body 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x20/imm32/space # compare ebx - 74/jump-if-equal $skip-chars-matching-whitespace-in-slice:body/disp8 + 74/jump-if-= $skip-chars-matching-whitespace-in-slice:body/disp8 # if (c == '\n') goto body 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0a/imm32/newline # compare ebx - 74/jump-if-equal $skip-chars-matching-whitespace-in-slice:body/disp8 + 74/jump-if-= $skip-chars-matching-whitespace-in-slice:body/disp8 # if (c == '\t') goto body 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x09/imm32/tab # compare ebx - 74/jump-if-equal $skip-chars-matching-whitespace-in-slice:body/disp8 + 74/jump-if-= $skip-chars-matching-whitespace-in-slice:body/disp8 # if (c != '\r') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0d/imm32/cr # compare ebx - 75/jump-if-not-equal $skip-chars-matching-whitespace-in-slice:end/disp8 + 75/jump-if-!= $skip-chars-matching-whitespace-in-slice:end/disp8 $skip-chars-matching-whitespace-in-slice:body: # ++curr 40/increment-eax @@ -989,12 +989,12 @@ skip-chars-not-matching-in-slice: # curr : (addr byte), end : (addr byte), deli $skip-chars-not-matching-in-slice:loop: # if (curr >= end) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 73/jump-if-greater-or-equal-unsigned $skip-chars-not-matching-in-slice:end/disp8 + 73/jump-if-addr>= $skip-chars-not-matching-in-slice:end/disp8 # c = *curr 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL # if (c == delimiter) break 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx and edx - 74/jump-if-equal $skip-chars-not-matching-in-slice:end/disp8 + 74/jump-if-= $skip-chars-not-matching-in-slice:end/disp8 # ++curr 40/increment-eax eb/jump $skip-chars-not-matching-in-slice:loop/disp8 @@ -1111,21 +1111,21 @@ skip-chars-not-matching-whitespace-in-slice: # curr : (addr byte), end : (addr $skip-chars-not-matching-whitespace-in-slice:loop: # if (curr >= end) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 0f 83/jump-if-greater-or-equal-unsigned $skip-chars-not-matching-in-slice:end/disp32 + 0f 83/jump-if-addr>= $skip-chars-not-matching-in-slice:end/disp32 # c = *curr 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL # if (c == ' ') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x20/imm32/space # compare ebx - 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 # if (c == '\n') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0a/imm32/newline # compare ebx - 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 # if (c == '\t') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x09/imm32/tab # compare ebx - 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 # if (c == '\r') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0d/imm32/cr # compare ebx - 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 + 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 # ++curr 40/increment-eax eb/jump $skip-chars-not-matching-whitespace-in-slice:loop/disp8 @@ -1429,17 +1429,17 @@ skip-string-in-slice: # curr : (addr byte), end : (addr byte) -> new_curr/eax $skip-string-in-slice:loop: # if (curr >= end) return curr 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-unsigned-or-equal $skip-string-in-slice:return-curr/disp8 + 73/jump-if-addr>= $skip-string-in-slice:return-curr/disp8 # c = *curr 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL $skip-string-in-slice:dquote: # if (c == '"') break 3d/compare-eax-and 0x22/imm32/double-quote - 74/jump-if-equal $skip-string-in-slice:break/disp8 + 74/jump-if-= $skip-string-in-slice:break/disp8 $skip-string-in-slice:check-for-escape: # if (c == '\') escape next char 3d/compare-eax-and 0x5c/imm32/backslash - 75/jump-if-not-equal $skip-string-in-slice:continue/disp8 + 75/jump-if-!= $skip-string-in-slice:continue/disp8 $skip-string-in-slice:escape: 41/increment-ecx $skip-string-in-slice:continue: @@ -1801,13 +1801,13 @@ skip-until-close-paren-in-slice: # curr : (addr byte), end : (addr byte) -> new $skip-until-close-paren-in-slice:loop: # if (curr >= end) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-unsigned-or-equal $skip-until-close-paren-in-slice:break/disp8 + 73/jump-if-addr>= $skip-until-close-paren-in-slice:break/disp8 # c = *curr 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL $skip-until-close-paren-in-slice:check-close: # if (c == ')') break 3d/compare-eax-and 0x29/imm32/close-paren - 74/jump-if-equal $skip-until-close-paren-in-slice:break/disp8 + 74/jump-if-= $skip-until-close-paren-in-slice:break/disp8 # ++curr 41/increment-ecx eb/jump $skip-until-close-paren-in-slice:loop/disp8 diff --git a/075print-int-decimal.subx b/075print-int-decimal.subx index 95e9e23b..1265d2f4 100644 --- a/075print-int-decimal.subx +++ b/075print-int-decimal.subx @@ -51,7 +51,7 @@ print-int32-decimal: # out : (addr stream byte), n : int32 # var eax : int = abs(n) 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax 3d/compare-eax-with 0/imm32 - 7d/jump-if-greater-or-equal $print-int32-decimal:read-loop/disp8 + 7d/jump-if->= $print-int32-decimal:read-loop/disp8 $print-int32-decimal:negative: f7 3/subop/negate 3/mod/direct 0/rm32/eax . . . . . . # negate eax $print-int32-decimal:read-loop: @@ -64,11 +64,11 @@ $print-int32-decimal:read-loop: 52/push-edx # if (eax == 0) break 3d/compare-eax-and 0/imm32 - 7f/jump-if-greater $print-int32-decimal:read-loop/disp8 + 7f/jump-if-> $print-int32-decimal:read-loop/disp8 $print-int32-decimal:read-break: # if (n < 0) push('-') 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 0/imm32 # compare *(ebp+12) - 7d/jump-if-greater-or-equal $print-int32-decimal:write/disp8 + 7d/jump-if->= $print-int32-decimal:write/disp8 $print-int32-decimal:push-negative: 68/push 0x2d/imm32/- $print-int32-decimal:write: @@ -86,10 +86,10 @@ $print-int32-decimal:write-loop: 58/pop-to-eax # if (eax == sentinel) break 3d/compare-eax-and 0/imm32/sentinel - 74/jump-if-equal $print-int32-decimal:write-break/disp8 + 74/jump-if-= $print-int32-decimal:write-break/disp8 # if (curr >= max) abort 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 73/jump-if-greater-or-equal-unsigned $print-int32-decimal:abort/disp8 + 73/jump-if-addr>= $print-int32-decimal:abort/disp8 $print-int32-decimal:write-char: # *curr = AL 88/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy AL to byte at *ecx @@ -314,10 +314,10 @@ is-decimal-digit?: # c : byte -> eax : boolean 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 1/r32/ecx 8/disp8 . # copy *(ebp+8) to ecx # return false if c < '0' 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x30/imm32 # compare ecx - 7c/jump-if-lesser $is-decimal-digit?:false/disp8 + 7c/jump-if-< $is-decimal-digit?:false/disp8 # return true if c <= '9' 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x39/imm32 # compare ecx - 7e/jump-if-lesser-or-equal $is-decimal-digit?:true/disp8 + 7e/jump-if-<= $is-decimal-digit?:true/disp8 # otherwise return false $is-decimal-digit?:false: b8/copy-to-eax 0/imm32/false diff --git a/076next-word.subx b/076next-word.subx index b8fdc00d..e87cf9e8 100644 --- a/076next-word.subx +++ b/076next-word.subx @@ -34,7 +34,7 @@ $next-word:check0: 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax # . if (eax < line->write) goto next check 3b/compare 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # compare eax with *esi - 7c/jump-if-lesser $next-word:check-for-comment/disp8 + 7c/jump-if-< $next-word:check-for-comment/disp8 # . return out c7 0/subop/copy 0/mod/direct 7/rm32/edi . . . . . 0/imm32 # copy to *edi c7 0/subop/copy 1/mod/*+disp8 7/rm32/edi . . . . 4/disp8 0/imm32 # copy to *(edi+4) @@ -50,7 +50,7 @@ $next-word:check-for-comment: 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 # . compare 3d/compare-eax-and 0x23/imm32/pound - 75/jump-if-not-equal $next-word:regular-word/disp8 + 75/jump-if-!= $next-word:regular-word/disp8 $next-word:comment: # . out->end = &line->data[line->write] 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax diff --git a/077subx-words.subx b/077subx-words.subx index 40699af4..3e568e04 100644 --- a/077subx-words.subx +++ b/077subx-words.subx @@ -62,7 +62,7 @@ $has-metadata?:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) return false 3d/compare-eax-and 0/imm32/false - 75/jump-if-not-equal $has-metadata?:false/disp8 + 75/jump-if-!= $has-metadata?:false/disp8 # if (slice-equal?(twig, s)) return true # . eax = slice-equal?(twig, s) # . . push args @@ -75,7 +75,7 @@ $has-metadata?:loop: # . if (eax != false) return true 3d/compare-eax-and 0/imm32/false # eax already contains true - 75/jump-if-not-equal $has-metadata?:end/disp8 + 75/jump-if-!= $has-metadata?:end/disp8 eb/jump $has-metadata?:loop/disp8 $has-metadata?:false: b8/copy-to-eax 0/imm32/false @@ -289,29 +289,29 @@ is-valid-name?: # in : (addr slice) -> eax : boolean $is-valid-name?:check0: # if (start >= in->end) return false 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 73/jump-if-greater-or-equal-unsigned $is-valid-name?:false/disp8 + 73/jump-if-addr>= $is-valid-name?:false/disp8 $is-valid-name?:check1: # var len/eax : int = in->end - start 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax 29/subtract 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # subtract ecx from eax # if (eax == 2) return false 3d/compare-eax-and 2/imm32 - 74/jump-if-equal $is-valid-name?:false/disp8 + 74/jump-if-= $is-valid-name?:false/disp8 $is-valid-name?:check2: # var c/eax : (addr byte) = *start 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL # if (c == "-") return false 3d/compare-eax-and 2d/imm32/- - 74/jump-if-equal $is-valid-name?:false/disp8 + 74/jump-if-= $is-valid-name?:false/disp8 $is-valid-name?:check3a: # if (c < "0") return true 3d/compare-eax-with 30/imm32/0 - 7c/jump-if-lesser $is-valid-name?:true/disp8 + 7c/jump-if-< $is-valid-name?:true/disp8 $is-valid-name?:check3b: # if (c > "9") return true 3d/compare-eax-with 39/imm32/9 - 7f/jump-if-greater $is-valid-name?:true/disp8 + 7f/jump-if-> $is-valid-name?:true/disp8 $is-valid-name?:false: # return false b8/copy-to-eax 0/imm32/false @@ -549,7 +549,7 @@ is-label?: # word : (addr slice) -> eax : boolean # . return (eax == ':') 3d/compare-eax-and 0x3a/imm32/colon b8/copy-to-eax 1/imm32/true - 74/jump-if-equal $is-label?:end/disp8 + 74/jump-if-= $is-label?:end/disp8 b8/copy-to-eax 0/imm32/false $is-label?:end: # . restore registers diff --git a/078emit-hex.subx b/078emit-hex.subx index bc052642..b3fc39a1 100644 --- a/078emit-hex.subx +++ b/078emit-hex.subx @@ -25,7 +25,7 @@ emit-hex: # out : (addr buffered-file), n : int, width : int $emit-hex:loop: # if (curr >= width) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 7d/jump-if-greater-or-equal $emit-hex:end/disp8 + 7d/jump-if->= $emit-hex:end/disp8 # print-byte-buffered(out, ebx) # only BL used # . . push args 53/push-ebx diff --git a/079emit.subx b/079emit.subx index f4c51e23..87c6e6a6 100644 --- a/079emit.subx +++ b/079emit.subx @@ -41,7 +41,7 @@ emit: # out : (addr buffered-file), word : (addr slice), width : int 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit:hex-int/disp8 + 74/jump-if-= $emit:hex-int/disp8 $emit:name: # . write-slice-buffered(out, word) # . . push args diff --git a/080zero-out.subx b/080zero-out.subx index b1f9c9dc..f52a387c 100644 --- a/080zero-out.subx +++ b/080zero-out.subx @@ -32,7 +32,7 @@ zero-out: # start : (addr byte), len : int $zero-out:loop: # if (i >= len) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 7d/jump-if-greater-or-equal $zero-out:end/disp8 + 7d/jump-if->= $zero-out:end/disp8 # *curr = 0 c6 0/subop/copy 0/mod/direct 6/rm32/esi . . . . . 0/imm8 # copy byte to *esi # ++curr diff --git a/081table.subx b/081table.subx index 76dcee2e..3dfd3856 100644 --- a/081table.subx +++ b/081table.subx @@ -51,7 +51,7 @@ get: # table : (addr stream {string_key, T}), key : string_key, row-size : int, $get:search-loop: # if (curr >= max) abort 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $get:abort/disp8 + 73/jump-if-addr>= $get:abort/disp8 # if (string-equal?(key, *curr)) return curr+4 # . eax = string-equal?(key, *curr) # . . push args @@ -63,7 +63,7 @@ $get:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $get:mismatch/disp8 + 74/jump-if-= $get:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $get:end/disp8 $get:mismatch: @@ -225,7 +225,7 @@ get-slice: # table : (addr stream {string_key, T}), key : (addr slice), row-siz $get-slice:search-loop: # if (curr >= max) abort 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $get-slice:abort/disp8 + 73/jump-if-addr>= $get-slice:abort/disp8 # if (slice-equal?(key, *curr)) return curr+4 # . eax = slice-equal?(key, *curr) # . . push args @@ -237,7 +237,7 @@ $get-slice:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $get-slice:mismatch/disp8 + 74/jump-if-= $get-slice:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $get-slice:end/disp8 $get-slice:mismatch: @@ -433,7 +433,7 @@ get-or-insert: # table : (addr stream {string_key, T}), key : string_key, row-s $get-or-insert:search-loop: # if (curr >= max) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $get-or-insert:not-found/disp8 + 73/jump-if-addr>= $get-or-insert:not-found/disp8 # if (string-equal?(key, *curr)) return curr+4 # . eax = string-equal?(key, *curr) # . . push args @@ -445,7 +445,7 @@ $get-or-insert:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $get-or-insert:mismatch/disp8 + 74/jump-if-= $get-or-insert:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $get-or-insert:end/disp8 $get-or-insert:mismatch: @@ -459,7 +459,7 @@ $get-or-insert:not-found: # if (table->write >= table->length) abort 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(esi+8) - 73/jump-if-greater-or-equal-unsigned $get-or-insert:abort/disp8 + 73/jump-if-addr>= $get-or-insert:abort/disp8 # zero-out(max, row-size) # . . push args ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 . # push *(ebp+16) @@ -684,7 +684,7 @@ leaky-get-or-insert-slice: # table : (addr stream {string_key, T}), key : (addr $leaky-get-or-insert-slice:search-loop: # if (curr >= max) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $leaky-get-or-insert-slice:not-found/disp8 + 73/jump-if-addr>= $leaky-get-or-insert-slice:not-found/disp8 # if (slice-equal?(key, *curr)) return curr+4 # . eax = slice-equal?(key, *curr) # . . push args @@ -696,7 +696,7 @@ $leaky-get-or-insert-slice:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $leaky-get-or-insert-slice:mismatch/disp8 + 74/jump-if-= $leaky-get-or-insert-slice:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $leaky-get-or-insert-slice:end/disp8 $leaky-get-or-insert-slice:mismatch: @@ -710,7 +710,7 @@ $leaky-get-or-insert-slice:not-found: # if (table->write >= table->length) abort 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(esi+8) - 7d/jump-if-greater-or-equal $leaky-get-or-insert-slice:abort/disp8 + 7d/jump-if->= $leaky-get-or-insert-slice:abort/disp8 # zero-out(max, row-size) # . . push args ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 . # push *(ebp+16) @@ -954,7 +954,7 @@ get-or-stop: # table : (addr stream {string_key, T}), key : string_key, row-siz $get-or-stop:search-loop: # if (curr >= max) stop(ed) 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $get-or-stop:stop/disp8 + 73/jump-if-addr>= $get-or-stop:stop/disp8 # if (string-equal?(key, *curr)) return curr+4 # . eax = string-equal?(key, *curr) # . . push args @@ -966,7 +966,7 @@ $get-or-stop:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $get-or-stop:mismatch/disp8 + 74/jump-if-= $get-or-stop:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $get-or-stop:end/disp8 $get-or-stop:mismatch: @@ -1170,7 +1170,7 @@ get-slice-or-stop: # table : (addr stream {string_key, _}), key : (addr slice), $get-slice-or-stop:search-loop: # if (curr >= max) stop(ed) 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $get-slice-or-stop:stop/disp8 + 73/jump-if-addr>= $get-slice-or-stop:stop/disp8 # if (slice-equal?(key, *curr)) return curr+4 # . eax = slice-equal?(key, *curr) # . . push args @@ -1182,7 +1182,7 @@ $get-slice-or-stop:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $get-slice-or-stop:mismatch/disp8 + 74/jump-if-= $get-slice-or-stop:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $get-slice-or-stop:end/disp8 $get-slice-or-stop:mismatch: @@ -1406,7 +1406,7 @@ maybe-get: # table : (addr stream {string_key, T}), key : string_key, row-size $maybe-get:search-loop: # if (curr >= max) return null 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $maybe-get:null/disp8 + 73/jump-if-addr>= $maybe-get:null/disp8 # if (string-equal?(key, *curr)) return curr+4 # . eax = string-equal?(key, *curr) # . . push args @@ -1418,7 +1418,7 @@ $maybe-get:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $maybe-get:mismatch/disp8 + 74/jump-if-= $maybe-get:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $maybe-get:end/disp8 $maybe-get:mismatch: @@ -1553,7 +1553,7 @@ maybe-get-slice: # table : (addr stream {string_key, T}), key : (addr slice), r $maybe-get-slice:search-loop: # if (curr >= max) return null 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $maybe-get-slice:null/disp8 + 73/jump-if-addr>= $maybe-get-slice:null/disp8 # if (slice-equal?(key, *curr)) return curr+4 # . eax = slice-equal?(key, *curr) # . . push args @@ -1565,7 +1565,7 @@ $maybe-get-slice:search-loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return eax = curr+4 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $maybe-get-slice:mismatch/disp8 + 74/jump-if-= $maybe-get-slice:mismatch/disp8 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax eb/jump $maybe-get-slice:end/disp8 $maybe-get-slice:mismatch: diff --git a/082slurp.subx b/082slurp.subx index 11769bc9..7f35986f 100644 --- a/082slurp.subx +++ b/082slurp.subx @@ -35,10 +35,10 @@ slurp: # f : (addr buffered-file), s : (addr stream byte) $slurp:loop: # if (s->write >= s->length) abort 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 2/r32/edx 8/disp8 . # compare edx with *(edi+8) - 7d/jump-if-greater-or-equal $slurp:abort/disp8 + 7d/jump-if->= $slurp:abort/disp8 # if (f->read >= f->write) populate stream from file 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 7c/jump-if-lesser $slurp:from-stream/disp8 + 7c/jump-if-< $slurp:from-stream/disp8 # . clear-stream(stream = f+4) # . . push args 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy esi+4 to eax @@ -61,7 +61,7 @@ $slurp:loop: # since f->read was initially 0, eax is the same as f->write # . if (eax == 0) return true 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $slurp:end/disp8 + 74/jump-if-= $slurp:end/disp8 $slurp:from-stream: # var c/eax : byte = f->data[f->read] 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax diff --git a/083subx-widths.subx b/083subx-widths.subx index ffefe194..d384ea91 100644 --- a/083subx-widths.subx +++ b/083subx-widths.subx @@ -62,7 +62,7 @@ compute-width-of-slice: # s : (addr slice) -> eax : int # . if (eax != false) return 4 3d/compare-eax-and 0/imm32/false b8/copy-to-eax 4/imm32 # ZF is set, so we can overwrite eax now - 75/jump-if-not-equal $compute-width-of-slice:end/disp8 + 75/jump-if-!= $compute-width-of-slice:end/disp8 # if (has-metadata?(word, "disp32")) return 4 # . eax = has-metadata?(word, "disp32") # . . push args @@ -75,7 +75,7 @@ compute-width-of-slice: # s : (addr slice) -> eax : int # . if (eax != false) return 4 3d/compare-eax-and 0/imm32/false b8/copy-to-eax 4/imm32 # ZF is set, so we can overwrite eax now - 75/jump-if-not-equal $compute-width-of-slice:end/disp8 + 75/jump-if-!= $compute-width-of-slice:end/disp8 # if (has-metadata?(word, "imm16")) return 2 # . eax = has-metadata?(word, "imm16") # . . push args @@ -88,7 +88,7 @@ compute-width-of-slice: # s : (addr slice) -> eax : int # . if (eax != false) return 2 3d/compare-eax-and 0/imm32/false b8/copy-to-eax 2/imm32 # ZF is set, so we can overwrite eax now - 75/jump-if-not-equal $compute-width-of-slice:end/disp8 + 75/jump-if-!= $compute-width-of-slice:end/disp8 # if (has-metadata?(word, "disp16")) return 2 # . eax = has-metadata?(word, "disp16") # . . push args @@ -101,7 +101,7 @@ compute-width-of-slice: # s : (addr slice) -> eax : int # . if (eax != false) return 2 3d/compare-eax-and 0/imm32/false b8/copy-to-eax 2/imm32 # ZF is set, so we can overwrite eax now - 75/jump-if-not-equal $compute-width-of-slice:end/disp8 + 75/jump-if-!= $compute-width-of-slice:end/disp8 # otherwise return 1 b8/copy-to-eax 1/imm32 $compute-width-of-slice:end: diff --git a/084emit-hex-array.subx b/084emit-hex-array.subx index 8560795a..c56a6de0 100644 --- a/084emit-hex-array.subx +++ b/084emit-hex-array.subx @@ -27,7 +27,7 @@ emit-hex-array: # out : (addr buffered-file), arr : (addr array byte) $emit-hex-array:loop: # if (curr >= width) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $emit-hex-array:end/disp8 + 73/jump-if-addr>= $emit-hex-array:end/disp8 # emit-hex(out, c = *curr, width=1) # . . push args 68/push 1/imm32/width diff --git a/085next-word-or-string.subx b/085next-word-or-string.subx index cb9a424c..5f6e2cee 100644 --- a/085next-word-or-string.subx +++ b/085next-word-or-string.subx @@ -32,7 +32,7 @@ $next-word-or-string:check0: 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax # . if (eax < line->write) goto next check 3b/compare 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # compare eax with *esi - 7c/jump-if-lesser $next-word-or-string:check-for-comment/disp8 + 7c/jump-if-< $next-word-or-string:check-for-comment/disp8 # . return out c7 0/subop/copy 0/mod/direct 7/rm32/edi . . . . . 0/imm32 # copy to *edi c7 0/subop/copy 1/mod/*+disp8 7/rm32/edi . . . . 4/disp8 0/imm32 # copy to *(edi+4) @@ -48,7 +48,7 @@ $next-word-or-string:check-for-comment: 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 # . compare 3d/compare-eax-and 0x23/imm32/pound - 75/jump-if-not-equal $next-word-or-string:check-for-string-literal/disp8 + 75/jump-if-!= $next-word-or-string:check-for-string-literal/disp8 $next-word-or-string:comment: # out->end = &line->data[line->write] 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax @@ -66,7 +66,7 @@ $next-word-or-string:check-for-string-literal: 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 # . compare 3d/compare-eax-and 0x22/imm32/dquote - 75/jump-if-not-equal $next-word-or-string:regular-word/disp8 + 75/jump-if-!= $next-word-or-string:regular-word/disp8 $next-word-or-string:string-literal: # skip-string(line) # . . push args diff --git a/091write-int.subx b/091write-int.subx index 736fc684..624ca41e 100644 --- a/091write-int.subx +++ b/091write-int.subx @@ -19,7 +19,7 @@ write-int: # out : (addr stream byte), n : int 8b/copy 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # copy *edi to ecx # if (out->write >= out->length) abort 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(edi+8) - 7d/jump-if-greater-or-equal $write-int:abort/disp8 + 7d/jump-if->= $write-int:abort/disp8 $write-int:to-stream: # out->data[out->write] = n 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax diff --git a/092stack.subx b/092stack.subx index fdc4fa95..95e819f1 100644 --- a/092stack.subx +++ b/092stack.subx @@ -26,7 +26,7 @@ clear-stack: # s : (addr stack) $clear-stack:loop: # if (curr >= max) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 73/jump-if-greater-or-equal-unsigned $clear-stack:end/disp8 + 73/jump-if-addr>= $clear-stack:end/disp8 # *curr = 0 c6 0/subop/copy 0/mod/direct 0/rm32/eax . . . . . 0/imm8 # copy byte to *eax # ++curr @@ -121,7 +121,7 @@ push: # s : (addr stack), n : int 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx # if (s->top >= s->length) abort 39/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare *(esi+4) and ecx - 7e/jump-if-lesser-or-equal $push:abort/disp8 + 7e/jump-if-<= $push:abort/disp8 # s->data[s->top] = n 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax 89/copy 1/mod/*+disp8 4/rm32/sib 6/base/esi 1/index/ecx . 0/r32/eax 8/disp8 . # copy eax to *(esi+ecx+8) @@ -238,7 +238,7 @@ pop: # s : (addr stack) -> n/eax : int 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 8/disp8 . # copy *(ebp+8) to esi # if (s->top <= 0) abort 81 7/subop/compare 0/mod/indirect 6/rm32/esi . . . . . 0/imm32 # compare *esi - 7e/jump-if-lesser-or-equal $pop:abort/disp8 + 7e/jump-if-<= $pop:abort/disp8 # s->top -= 4 81 5/subop/subtract 0/mod/direct 6/rm32/esi . . . . . 4/imm32 # subtract from *esi # eax = s->data[s->top] @@ -342,7 +342,7 @@ top: # s : (addr stack) -> n/eax : int 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 8/disp8 . # copy *(ebp+8) to esi # if (s->top <= 0) abort 81 7/subop/compare 0/mod/indirect 6/rm32/esi . . . . . 0/imm32 # compare *esi - 7e/jump-if-lesser-or-equal $top:abort/disp8 + 7e/jump-if-<= $top:abort/disp8 # n = s->data[s->top - 4] 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx 81 5/subop/subtract 3/mod/direct 1/rm32/ecx . . . . . 4/imm32 # subtract from ecx diff --git a/100array-equal.subx b/100array-equal.subx index e86f7c6b..374a6cdc 100644 --- a/100array-equal.subx +++ b/100array-equal.subx @@ -42,7 +42,7 @@ array-equal?: # a : (addr array int), b : (addr array int) -> eax : boolean $array-equal?:lengths: # if (lena != b->length) return false 39/compare *edi 2/r32/edx - 75/jump-if-not-equal $array-equal?:false/disp8 + 75/jump-if-!= $array-equal?:false/disp8 # var curra/esi : (addr byte) = a->data 81 0/subop/add %esi 4/imm32 # var currb/edi : (addr byte) = b->data @@ -54,14 +54,14 @@ $array-equal?:lengths: $array-equal?:loop: # if (i >= lena) return true 39/compare %ecx 2/r32/edx - 7d/jump-if-greater-or-equal $array-equal?:true/disp8 + 7d/jump-if->= $array-equal?:true/disp8 # var vala/eax : int = *curra 8b/-> *esi 0/r32/eax # var valb/ebx : int = *currb 8b/-> *edi 3/r32/ebx # if (vala != valb) return false 39/compare %eax 3/r32/ebx - 75/jump-if-not-equal $array-equal?:false/disp8 + 75/jump-if-!= $array-equal?:false/disp8 # i += 4 81 0/subop/add %ecx 4/imm32 # currs += 4 @@ -275,7 +275,7 @@ parse-array-of-ints: # ad : (addr allocation-descriptor), s : (addr string) -> $parse-array-of-ints:loop1: # if (curr >= end) break 39/compare %ecx 2/r32/edx - 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:break1/disp8 + 73/jump-if-addr>= $parse-array-of-ints:break1/disp8 # curr = skip-chars-matching-in-slice(curr, end, ' ') # . eax = skip-chars-matching-in-slice(curr, end, ' ') # . . push args @@ -290,7 +290,7 @@ $parse-array-of-ints:loop1: 89/<- %ecx 0/r32/eax # if (curr >= end) break 39/compare %ecx 2/r32/edx - 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:break1/disp8 + 73/jump-if-addr>= $parse-array-of-ints:break1/disp8 # curr = skip-chars-not-matching-in-slice(curr, end, ' ') # . eax = skip-chars-not-matching-in-slice(curr, end, ' ') # . . push args @@ -333,7 +333,7 @@ $parse-array-of-ints:pass2: $parse-array-of-ints:loop2: # if (slice->start >= end) break 39/compare *ecx 2/r32/edx - 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:end/disp8 + 73/jump-if-addr>= $parse-array-of-ints:end/disp8 # slice->start = skip-chars-matching-in-slice(slice->start, end, ' ') # . eax = skip-chars-matching-in-slice(slice->start, end, ' ') # . . push args @@ -348,7 +348,7 @@ $parse-array-of-ints:loop2: 89/<- *ecx 0/r32/eax # if (slice->start >= end) break 39/compare *ecx 2/r32/edx - 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:end/disp8 + 73/jump-if-addr>= $parse-array-of-ints:end/disp8 # slice->end = skip-chars-not-matching-in-slice(slice->start, end, ' ') # . eax = skip-chars-not-matching-in-slice(curr, end, ' ') # . . push args diff --git a/apps/assort.subx b/apps/assort.subx index be365403..e6914978 100644 --- a/apps/assort.subx +++ b/apps/assort.subx @@ -40,7 +40,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto interactive 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $subx-assort-main:interactive/disp8 + 7e/jump-if-<= $subx-assort-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto interactive # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -52,7 +52,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto interactive 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-assort-main:interactive/disp8 + 74/jump-if-= $subx-assort-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -525,7 +525,7 @@ $read-segments:loop: $read-segments:check0: # if (line->write == 0) break 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 0f 84/jump-if-equal $read-segments:break/disp32 + 0f 84/jump-if-= $read-segments:break/disp32 #? # dump line {{{ #? # . write(2/stderr, "LL: ") #? # . . push args @@ -587,7 +587,7 @@ $read-segments:check1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) continue 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $read-segments:loop/disp32 + 0f 85/jump-if-!= $read-segments:loop/disp32 $read-segments:check-for-comment: #? # print("check for comment\n") {{{ #? # . . push args @@ -606,7 +606,7 @@ $read-segments:check-for-comment: 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL # . if (c == '#') continue 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $read-segments:loop/disp32 + 0f 84/jump-if-= $read-segments:loop/disp32 $read-segments:check-for-segment-header: #? # print("check for segment header\n") {{{ #? # . . push args @@ -668,7 +668,7 @@ $read-segments:check-for-segment-header: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto check3 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $read-segments:regular-line/disp32 + 0f 84/jump-if-= $read-segments:regular-line/disp32 # segment-name = next-word-or-string(line) # . . push args 52/push-edx @@ -730,7 +730,7 @@ $read-segments:check-for-segment-header: 8b/copy 0/mod/indirect 0/rm32/eax . . . 3/r32/ebx . . # copy *eax to ebx # if (curr-segment != 0) continue 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32 # compare ebx - 0f 85/jump-if-not-equal $read-segments:loop/disp32 + 0f 85/jump-if-!= $read-segments:loop/disp32 # curr-segment = new-stream(Heap, Segment-size, 1) # . save segment-slot 50/push-eax @@ -871,7 +871,7 @@ write-segments: # out : (addr buffered-file), table : (addr stream {string_key, $write-segments:loop: # if (curr >= max) break 39/compare 3/mod/direct 6/rm32/esi . . . 2/r32/edx . . # compare esi with edx - 73/jump-if-greater-or-equal-unsigned $write-segments:break/disp8 + 73/jump-if-addr>= $write-segments:break/disp8 # var stream/eax : (addr stream byte) = table[i].stream 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax # write-stream-data(out, stream) diff --git a/apps/braces.subx b/apps/braces.subx index e3659048..edb72393 100644 --- a/apps/braces.subx +++ b/apps/braces.subx @@ -57,11 +57,11 @@ Entry: # run tests if necessary, a REPL if not (new-segment *Heap-size Heap) # if (argc <= 1) goto interactive 81 7/subop/compare *ebp 1/imm32 - 7e/jump-if-lesser-or-equal $subx-braces-main:interactive/disp8 + 7e/jump-if-<= $subx-braces-main:interactive/disp8 # if (argv[1] != "test")) goto interactive (kernel-string-equal? *(ebp+8) "test") # => eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $subx-braces-main:interactive/disp8 + 74/jump-if-= $subx-braces-main:interactive/disp8 # (run-tests) # syscall(exit, *Num-test-failures) @@ -146,7 +146,7 @@ $subx-braces:line-loop: $subx-braces:check0: # if (line->write == 0) break 81 7/subop/compare *ecx 0/imm32 - 0f 84/jump-if-equal $subx-braces:break/disp32 + 0f 84/jump-if-= $subx-braces:break/disp32 (skip-chars-matching-whitespace %ecx) $subx-braces:check-for-curly-open: # if (line->data[line->read] != '{') goto next check @@ -156,7 +156,7 @@ $subx-braces:check-for-curly-open: 81 4/subop/and %eax 0xff/imm32 # . if (eax != '{') continue 3d/compare-eax-and 0x7b/imm32/open-curly - 0f 85/jump-if-not-equal $subx-braces:check-for-curly-closed/disp32 + 0f 85/jump-if-!= $subx-braces:check-for-curly-closed/disp32 $subx-braces:emit-curly-open: # print(out, "_loop" next-label-id ":") (write-buffered *(ebp+0xc) "_loop") @@ -171,7 +171,7 @@ $subx-braces:emit-curly-open: $subx-braces:check-for-curly-closed: # if (line->data[line->read] != '}') goto next check 3d/compare-eax-and 0x7d/imm32/close-curly - 0f 85/jump-if-equal $subx-braces:word-loop/disp32 + 0f 85/jump-if-= $subx-braces:word-loop/disp32 $subx-braces:emit-curly-closed: # eax = pop(label-stack) (pop %edx) @@ -187,7 +187,7 @@ $subx-braces:check1: # if (slice-empty?(word-slice)) break (slice-empty? %edi) 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $subx-braces:next-line/disp32 + 0f 85/jump-if-!= $subx-braces:next-line/disp32 $subx-braces:check-for-comment: # if (slice-starts-with?(word-slice, "#")) continue # . eax = *word-slice->start @@ -196,14 +196,14 @@ $subx-braces:check-for-comment: 81 4/subop/and %eax 0xff/imm32 # . if (eax == '#') continue 3d/compare-eax-and 0x23/imm32/hash - 74/jump-if-equal $subx-braces:word-loop/disp8 + 74/jump-if-= $subx-braces:word-loop/disp8 $subx-braces:check-for-break: # if (!slice-starts-with?(word-slice, "break/")) goto next check # . eax = slice-starts-with?(word-slice, "break/") (slice-starts-with? %edi "break/") # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-braces:check-for-loop/disp8 + 74/jump-if-= $subx-braces:check-for-loop/disp8 $subx-braces:emit-break: (top %edx) # print(out, "_break" eax) @@ -219,7 +219,7 @@ $subx-braces:check-for-loop: (slice-starts-with? %edi "loop/") # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-braces:emit-word-slice/disp8 + 74/jump-if-= $subx-braces:emit-word-slice/disp8 $subx-braces:emit-loop: (top %edx) # print(out, "_loop" eax) diff --git a/apps/calls.subx b/apps/calls.subx index aedd766a..a1ab5ca1 100644 --- a/apps/calls.subx +++ b/apps/calls.subx @@ -41,7 +41,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto run-main 81 7/subop/compare *ebp 1/imm32 - 7e/jump-if-lesser-or-equal $subx-calls-main:interactive/disp8 + 7e/jump-if-<= $subx-calls-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto run-main # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -53,7 +53,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add %esp 8/imm32 # . if (eax == false) goto run-main 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-calls-main:interactive/disp8 + 74/jump-if-= $subx-calls-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -136,7 +136,7 @@ $subx-calls:loop: $subx-calls:check0: # if (line->write == 0) break 81 7/subop/compare *esi 0/imm32 - 0f 84/jump-if-equal $subx-calls:break/disp32 + 0f 84/jump-if-= $subx-calls:break/disp32 # skip-chars-matching-whitespace(line) # . . push args 56/push-esi @@ -152,7 +152,7 @@ $subx-calls:check0: 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL # . if (eax == '(') goto convert-call 3d/compare-eax-and 0x28/imm32/open-paren - 74/jump-if-equal $subx-calls:convert-call/disp8 + 74/jump-if-= $subx-calls:convert-call/disp8 $subx-calls:pass-through: # write-stream-data(out, line) # . . push args @@ -270,7 +270,7 @@ $parse-line:check1: 81 0/subop/add %esp 4/imm32 # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $parse-line:end/disp32 + 0f 85/jump-if-!= $parse-line:end/disp32 #? # dump word-slice {{{ #? # . write(2/stderr, "w: ") #? # . . push args @@ -380,7 +380,7 @@ emit-call: # out : (addr buffered-file), words : (addr stream slice) # . ecx = words->write - 8 8b/-> *esi 1/r32/ecx 81 5/subop/subtract %ecx 8/imm32 - 0f 8c/jump-if-lesser $emit-call:error1/disp32 + 0f 8c/jump-if-< $emit-call:error1/disp32 # var curr/ecx : (addr slice) = &words->data[words->write-8] 8d/copy-address *(esi+ecx+0xc) 1/r32/ecx # var min/edx : (addr byte) = words->data @@ -389,7 +389,7 @@ emit-call: # out : (addr buffered-file), words : (addr stream slice) $emit-call:push-loop: # if (curr <= min) break 39/compare %ecx 2/r32/edx - 0f 8e/jump-if-lesser-or-equal $emit-call:call-instruction/disp32 + 0f 8e/jump-if-<= $emit-call:call-instruction/disp32 # if (*curr->start in '%' '*') goto push-rm32 # . var start/eax : (addr byte) = curr->start 8b/-> *ecx 0/r32/eax @@ -398,10 +398,10 @@ $emit-call:push-loop: 81 4/subop/and %eax 0xff/imm32 # . if (c == '%') goto push-rm32 3d/compare-eax-and 0x25/imm32/percent - 74/jump-if-equal $emit-call:push-rm32/disp8 + 74/jump-if-= $emit-call:push-rm32/disp8 # . if (c == '*') goto push-rm32 3d/compare-eax-and 0x2a/imm32/asterisk - 74/jump-if-equal $emit-call:push-rm32/disp8 + 74/jump-if-= $emit-call:push-rm32/disp8 $emit-call:push-imm32: # write-buffered(out, "68/push ") 68/push "68/push "/imm32 @@ -824,7 +824,7 @@ $next-word-string-or-expression-without-metadata:check0: 8b/-> *(esi+4) 1/r32/ecx # . if (ecx >= line->write) return out = {0, 0} 3b/compare 1/r32/ecx *esi - 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 + 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 $next-word-string-or-expression-without-metadata:check-for-comment: # out->start = &line->data[line->read] 8d/copy-address *(esi+ecx+0xc) 0/r32/eax @@ -835,7 +835,7 @@ $next-word-string-or-expression-without-metadata:check-for-comment: 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL # . if (eax != '#') goto next check 3d/compare-eax-and 0x23/imm32/pound - 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-string-literal/disp8 + 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-string-literal/disp8 $next-word-string-or-expression-without-metadata:comment: # out->end = &line->data[line->write] 8b/-> *esi 0/r32/eax @@ -849,7 +849,7 @@ $next-word-string-or-expression-without-metadata:comment: $next-word-string-or-expression-without-metadata:check-for-string-literal: # if (line->data[line->read] != '"') goto next check 3d/compare-eax-and 0x22/imm32/dquote - 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-expression/disp8 + 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-expression/disp8 $next-word-string-or-expression-without-metadata:string-literal: # skip-string(line) # . . push args @@ -867,14 +867,14 @@ $next-word-string-or-expression-without-metadata:string-literal: $next-word-string-or-expression-without-metadata:check-for-expression: # if (line->data[line->read] != '*') goto next check 3d/compare-eax-and 0x2a/imm32/asterisk - 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:check-for-end-of-call/disp8 + 75/jump-if-!= $next-word-string-or-expression-without-metadata:check-for-end-of-call/disp8 # if (line->data[line->read + 1] == ' ') goto error1 8a/copy-byte *(esi+ecx+0xd) 0/r32/AL 3d/compare-eax-and 0x20/imm32/space - 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error1/disp32 + 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error1/disp32 # if (line->data[line->read + 1] != '(') goto regular-word 3d/compare-eax-and 0x28/imm32/open-paren - 0f 85/jump-if-not-equal $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp32 + 0f 85/jump-if-!= $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp32 $next-word-string-or-expression-without-metadata:paren: # skip-until-close-paren(line) # . . push args @@ -889,7 +889,7 @@ $next-word-string-or-expression-without-metadata:paren: 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL # . if (eax != ')') goto error2 3d/compare-eax-and 0x29/imm32/close-paren - 0f 85/jump-if-not-equal $next-word-string-or-expression-without-metadata:error2/disp32 + 0f 85/jump-if-!= $next-word-string-or-expression-without-metadata:error2/disp32 # ++line->read to skip ')' ff 0/subop/increment *(esi+4) # out->end = &line->data[line->read] @@ -901,7 +901,7 @@ $next-word-string-or-expression-without-metadata:paren: $next-word-string-or-expression-without-metadata:check-for-end-of-call: # if (line->data[line->read] != ')') goto next check 3d/compare-eax-and 0x29/imm32/close-paren - 75/jump-if-not-equal $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp8 + 75/jump-if-!= $next-word-string-or-expression-without-metadata:regular-word-without-metadata/disp8 # ++line->read to skip ')' ff 0/subop/increment *(esi+4) # - error checking: make sure there's nothing else of importance on the line @@ -910,13 +910,13 @@ $next-word-string-or-expression-without-metadata:check-for-end-of-call: 8b/-> *(esi+4) 1/r32/ecx # . if (ecx >= line->write) return {0, 0} 3b/compare 1/r32/ecx *esi - 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 + 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 # if (line->data[line->read] == '/') goto error3 # . eax = line->data[line->read] 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL # . if (eax == '/') goto error3 3d/compare-eax-and 0x2f/imm32/slash - 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error3/disp32 + 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error3/disp32 # skip-chars-matching-whitespace(line) # . . push args 56/push-esi @@ -929,14 +929,14 @@ $next-word-string-or-expression-without-metadata:check-for-end-of-call: 8b/-> *(esi+4) 1/r32/ecx # . if (ecx >= line->write) return {0, 0} 3b/compare 1/r32/ecx *esi - 0f 8d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:return-eol/disp32 + 0f 8d/jump-if->= $next-word-string-or-expression-without-metadata:return-eol/disp32 # if (line->data[line->read] == '#') return out = {0, 0} # . eax = line->data[line->read] 8b/-> *(esi+4) 1/r32/ecx 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL # . if (eax == '#') return out = {0, 0} 3d/compare-eax-and 0x23/imm32/pound - 74/jump-if-equal $next-word-string-or-expression-without-metadata:return-eol/disp8 + 74/jump-if-= $next-word-string-or-expression-without-metadata:return-eol/disp8 # otherwise goto error4 e9/jump $next-word-string-or-expression-without-metadata:error4/disp32 $next-word-string-or-expression-without-metadata:regular-word-without-metadata: @@ -945,20 +945,20 @@ $next-word-string-or-expression-without-metadata:regular-word-without-metadata: 8b/-> *(esi+4) 1/r32/ecx # . if (ecx >= line->write) break 3b/compare *esi 1/r32/ecx - 7d/jump-if-greater-or-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp8 + 7d/jump-if->= $next-word-string-or-expression-without-metadata:regular-word-break/disp8 # if (line->data[line->read] == ' ') break # . eax = line->data[line->read] 8b/-> *(esi+4) 1/r32/ecx 8a/copy-byte *(esi+ecx+0xc) 0/r32/AL # . if (eax == ' ') break 3d/compare-eax-and 0x20/imm32/space - 74/jump-if-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp8 + 74/jump-if-= $next-word-string-or-expression-without-metadata:regular-word-break/disp8 # if (line->data[line->read] == ')') break 3d/compare-eax-and 0x29/imm32/close-paren - 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:regular-word-break/disp32 + 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:regular-word-break/disp32 # if (line->data[line->read] == '/') goto error5 3d/compare-eax-and 0x2f/imm32/slash - 0f 84/jump-if-equal $next-word-string-or-expression-without-metadata:error5/disp32 + 0f 84/jump-if-= $next-word-string-or-expression-without-metadata:error5/disp32 # ++line->read ff 0/subop/increment *(esi+4) # loop diff --git a/apps/crenshaw2-1.subx b/apps/crenshaw2-1.subx index b5783ef3..e8ff7101 100644 --- a/apps/crenshaw2-1.subx +++ b/apps/crenshaw2-1.subx @@ -47,7 +47,7 @@ Entry: # run tests if necessary, call 'compile' if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto run-main 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $run-main/disp8 + 7e/jump-if-<= $run-main/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto run-main # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -59,7 +59,7 @@ Entry: # run tests if necessary, call 'compile' if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto run-main 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $run-main/disp8 + 74/jump-if-= $run-main/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -224,7 +224,7 @@ get-num: # in : (addr buffered-file), out : (addr stream byte), err : fd or (ad 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) 3d/compare-eax-and 0/imm32/false - 75/jump-if-not-equal $get-num:main/disp8 + 75/jump-if-!= $get-num:main/disp8 # . expected(ed, err, "integer") # . . push args 68/push "integer"/imm32 @@ -255,7 +255,7 @@ $get-num:main: $get-num:loop: # if (out->write >= out->length) error 39/compare 3/mod/direct 2/rm32/edx . . . 1/r32/ecx . . # compare edx with ecx - 7d/jump-if-lesser $get-num:stage2/disp8 + 7d/jump-if-< $get-num:stage2/disp8 # . error(ed, err, msg) # TODO: show full number # . . push args 68/push "get-num: too many digits in number"/imm32 @@ -543,10 +543,10 @@ is-digit?: # c : int -> eax : boolean b8/copy-to-eax 0/imm32 # if (c < '0') return false 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x30/imm32 # compare *(ebp+8) - 7c/jump-if-lesser $is-digit?:end/disp8 + 7c/jump-if-< $is-digit?:end/disp8 # if (c > '9') return false 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x39/imm32 # compare *(ebp+8) - 7f/jump-if-greater $is-digit?:end/disp8 + 7f/jump-if-> $is-digit?:end/disp8 # otherwise return true b8/copy-to-eax 1/imm32 $is-digit?:end: diff --git a/apps/crenshaw2-1b.subx b/apps/crenshaw2-1b.subx index d5f90952..f382955c 100644 --- a/apps/crenshaw2-1b.subx +++ b/apps/crenshaw2-1b.subx @@ -47,7 +47,7 @@ Entry: # run tests if necessary, call 'compile' if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto run-main 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $run-main/disp8 + 7e/jump-if-<= $run-main/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto run-main # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -59,7 +59,7 @@ Entry: # run tests if necessary, call 'compile' if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto run-main 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $run-main/disp8 + 74/jump-if-= $run-main/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -229,7 +229,7 @@ get-num: # in : (addr buffered-file), out : (addr stream byte), err : fd or (ad 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) 3d/compare-eax-and 0/imm32/false - 75/jump-if-not-equal $get-num:main/disp8 + 75/jump-if-!= $get-num:main/disp8 # . expected(ed, err, "integer") # . . push args 68/push "integer"/imm32 @@ -260,7 +260,7 @@ $get-num:main: $get-num:loop: # if (out->write >= out->length) error 39/compare 3/mod/direct 2/rm32/edx . . . 1/r32/ecx . . # compare edx with ecx - 7d/jump-if-lesser $get-num:loop-stage2/disp8 + 7d/jump-if-< $get-num:loop-stage2/disp8 # . error(ed, err, msg) # TODO: show full number # . . push args 68/push "get-num: too many digits in number"/imm32 @@ -294,7 +294,7 @@ $get-num:loop-stage2: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) loop 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $get-num:loop/disp32 + 0f 85/jump-if-!= $get-num:loop/disp32 $get-num:loop-end: # persist necessary variables from registers 89/copy 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # copy ecx to *edi @@ -737,10 +737,10 @@ is-digit?: # c : int -> eax : boolean b8/copy-to-eax 0/imm32 # if (c < '0') return false 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x30/imm32 # compare *(ebp+8) - 7c/jump-if-lesser $is-digit?:end/disp8 + 7c/jump-if-< $is-digit?:end/disp8 # if (c > '9') return false 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x39/imm32 # compare *(ebp+8) - 7f/jump-if-greater $is-digit?:end/disp8 + 7f/jump-if-> $is-digit?:end/disp8 # otherwise return true b8/copy-to-eax 1/imm32 $is-digit?:end: diff --git a/apps/dquotes.subx b/apps/dquotes.subx index 5396d26e..38eb08fd 100644 --- a/apps/dquotes.subx +++ b/apps/dquotes.subx @@ -36,7 +36,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run-tests() # if (argc <= 1) goto interactive 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $subx-dquotes-main:interactive/disp8 + 7e/jump-if-<= $subx-dquotes-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto interactive # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -48,7 +48,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto interactive 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-dquotes-main:interactive/disp8 + 74/jump-if-= $subx-dquotes-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -174,7 +174,7 @@ $subx-dquotes:line-loop: $subx-dquotes:check0: # if (line->write == 0) break 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 0f 84/jump-if-equal $subx-dquotes:break/disp32 + 0f 84/jump-if-= $subx-dquotes:break/disp32 $subx-dquotes:word-loop: # next-word-or-string(line, word-slice) # . . push args @@ -195,7 +195,7 @@ $subx-dquotes:check1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $subx-dquotes:next-line/disp32 + 0f 85/jump-if-!= $subx-dquotes:next-line/disp32 $subx-dquotes:check-for-comment: # if (slice-starts-with?(word-slice, "#")) continue # . var start/esi : (addr byte) = word-slice->start @@ -205,11 +205,11 @@ $subx-dquotes:check-for-comment: 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL # . if (c == '#') continue 3d/compare-eax-and 0x23/imm32/hash - 74/jump-if-equal $subx-dquotes:word-loop/disp8 + 74/jump-if-= $subx-dquotes:word-loop/disp8 $subx-dquotes:check-for-string-literal: # if (slice-starts-with?(word-slice, '"')) continue 3d/compare-eax-and 0x22/imm32/dquote - 75/jump-if-not-equal $subx-dquotes:regular-word/disp8 + 75/jump-if-!= $subx-dquotes:regular-word/disp8 $subx-dquotes:string-literal: # process-string-literal(word-slice, out, new-data-segment) # . . push args @@ -925,25 +925,25 @@ $emit-string-literal-data:loop-init: $emit-string-literal-data:loop: # if (curr >= max) break 39/compare 3/mod/direct 2/rm32/edx . . . 6/r32/esi . . # compare edx with esi - 0f 83/jump-if-greater-or-equal-unsigned $emit-string-literal-data:end/disp32 + 0f 83/jump-if-addr>= $emit-string-literal-data:end/disp32 # CL = *curr 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL # if (c == '"') break 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x22/imm32/dquote # compare ecx - 0f 84/jump-if-equal $emit-string-literal-data:end/disp32 + 0f 84/jump-if-= $emit-string-literal-data:end/disp32 # if (c != '\') goto emit 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x5c/imm32/backslash # compare ecx - 75/jump-if-not-equal $emit-string-literal-data:emit/disp8 + 75/jump-if-!= $emit-string-literal-data:emit/disp8 # ++curr 42/increment-edx # if (curr >= max) break 39/compare 3/mod/direct 2/rm32/edx . . . 6/r32/esi . . # compare edx with esi - 0f 83/jump-if-greater-or-equal-unsigned $emit-string-literal-data:end/disp32 + 0f 83/jump-if-addr>= $emit-string-literal-data:end/disp32 # c = *curr 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL # if (c == 'n') c = newline 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x6e/imm32/n # compare ecx - 75/jump-if-not-equal $emit-string-literal-data:emit/disp8 + 75/jump-if-!= $emit-string-literal-data:emit/disp8 b9/copy-to-ecx 0x0a/imm32/newline $emit-string-literal-data:emit: # append-byte-hex(out, CL) @@ -964,7 +964,7 @@ $emit-string-literal-data:emit: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) goto char-done 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-string-literal-data:char-done/disp8 + 74/jump-if-= $emit-string-literal-data:char-done/disp8 # . write(out, "/") # . . push args 68/push Slash/imm32 @@ -996,7 +996,7 @@ $emit-string-literal-data:char-done: 43/increment-ebx # if (idx < 0x40) continue 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x40/imm32 # compare ebx - 7c/jump-if-lesser $emit-string-literal-data:next-char/disp8 + 7c/jump-if-< $emit-string-literal-data:next-char/disp8 # idx = 0 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx # write(out, "\n") @@ -1029,22 +1029,22 @@ is-alphanumeric?: # c : int -> eax : boolean 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 8/disp8 . # copy *(ebp+8) to eax # if (c < '0') return false 3d/compare-eax-with 0x30/imm32/0 - 7c/jump-if-lesser $is-alphanumeric?:false/disp8 + 7c/jump-if-< $is-alphanumeric?:false/disp8 # if (c <= '9') return true 3d/compare-eax-with 0x39/imm32/9 - 7e/jump-if-lesser-or-equal $is-alphanumeric?:true/disp8 + 7e/jump-if-<= $is-alphanumeric?:true/disp8 # if (c < 'A') return false 3d/compare-eax-with 0x41/imm32/A - 7c/jump-if-lesser $is-alphanumeric?:false/disp8 + 7c/jump-if-< $is-alphanumeric?:false/disp8 # if (c <= 'Z') return true 3d/compare-eax-with 0x5a/imm32/Z - 7e/jump-if-lesser-or-equal $is-alphanumeric?:true/disp8 + 7e/jump-if-<= $is-alphanumeric?:true/disp8 # if (c < 'a') return false 3d/compare-eax-with 0x61/imm32/a - 7c/jump-if-lesser $is-alphanumeric?:false/disp8 + 7c/jump-if-< $is-alphanumeric?:false/disp8 # if (c <= 'z') return true 3d/compare-eax-with 0x7a/imm32/z - 7e/jump-if-lesser-or-equal $is-alphanumeric?:true/disp8 + 7e/jump-if-<= $is-alphanumeric?:true/disp8 # return false $is-alphanumeric?:false: b8/copy-to-eax 0/imm32/false @@ -1420,7 +1420,7 @@ $emit-metadata:check-for-string-literal: # - if (*curr == '"') curr = skip-string-in-slice(curr, end) 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x22/imm32/dquote - 75/jump-if-not-equal $emit-metadata:skip-datum-loop/disp8 + 75/jump-if-!= $emit-metadata:skip-datum-loop/disp8 $emit-metadata:skip-string-literal: # . eax = skip-string-in-slice(curr, end) # . . push args @@ -1437,11 +1437,11 @@ $emit-metadata:skip-datum-loop: # - otherwise scan for '/' # if (curr == end) return 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx and edx - 74/jump-if-equal $emit-metadata:end/disp8 + 74/jump-if-= $emit-metadata:end/disp8 # if (*curr == '/') break 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x2f/imm32/slash - 74/jump-if-equal $emit-metadata:emit/disp8 + 74/jump-if-= $emit-metadata:emit/disp8 # ++curr 41/increment-ecx eb/jump $emit-metadata:skip-datum-loop/disp8 @@ -1799,17 +1799,17 @@ string-length-at-start-of-slice: # curr : (addr byte), end : (addr byte) -> len $string-length-at-start-of-slice:loop: # if (curr >= end) return length 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-unsigned-or-equal $string-length-at-start-of-slice:end/disp8 + 73/jump-if-addr>= $string-length-at-start-of-slice:end/disp8 # c = *curr 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL $string-length-at-start-of-slice:dquote: # if (c == '"') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x22/imm32/dquote # compare ebx - 74/jump-if-equal $string-length-at-start-of-slice:end/disp8 + 74/jump-if-= $string-length-at-start-of-slice:end/disp8 $string-length-at-start-of-slice:check-for-escape: # if (c == '\') escape next char 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x5c/imm32/backslash # compare ebx - 75/jump-if-not-equal $string-length-at-start-of-slice:continue/disp8 + 75/jump-if-!= $string-length-at-start-of-slice:continue/disp8 $string-length-at-start-of-slice:escape: # increment curr but not result 41/increment-ecx diff --git a/apps/ex10.subx b/apps/ex10.subx index c091fe52..a67ec6f7 100644 --- a/apps/ex10.subx +++ b/apps/ex10.subx @@ -45,10 +45,10 @@ $argv-equal:loop: 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 3/r32/BL . . # copy byte at *edx to BL # if (c1 == 0) break 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $argv-equal:break/disp8 + 74/jump-if-= $argv-equal:break/disp8 # if (c1 != c2) return false 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 75/jump-if-not-equal $argv-equal:false/disp8 + 75/jump-if-!= $argv-equal:false/disp8 # ++s1, ++s2 41/increment-ecx 42/increment-edx @@ -57,7 +57,7 @@ $argv-equal:loop: $argv-equal:break: # if (c2 == 0) return true 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32 # compare ebx - 75/jump-if-not-equal $argv-equal:false/disp8 + 75/jump-if-!= $argv-equal:false/disp8 $argv-equal:success: b8/copy-to-eax 1/imm32 c3/return diff --git a/apps/ex11.subx b/apps/ex11.subx index 2469542d..fb63b25c 100644 --- a/apps/ex11.subx +++ b/apps/ex11.subx @@ -73,17 +73,17 @@ kernel-string-equal?: # s : null-terminated ascii string, benchmark : length-pr $kernel-string-equal?:loop: # if (i >= n) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 7d/jump-if-greater-or-equal $kernel-string-equal?:break/disp8 + 7d/jump-if->= $kernel-string-equal?:break/disp8 # c1 = *s1 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL # c2 = *s2 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL # if (c1 == 0) return false 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $kernel-string-equal?:false/disp8 + 74/jump-if-= $kernel-string-equal?:false/disp8 # if (c1 != c2) return false 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 75/jump-if-not-equal $kernel-string-equal?:false/disp8 + 75/jump-if-!= $kernel-string-equal?:false/disp8 # ++i 41/increment-ecx # ++s1 @@ -95,7 +95,7 @@ $kernel-string-equal?:break: # return *s1 == 0 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal $kernel-string-equal?:false/disp8 + 75/jump-if-!= $kernel-string-equal?:false/disp8 $kernel-string-equal?:true: b8/copy-to-eax 1/imm32 eb/jump $kernel-string-equal?:end/disp8 diff --git a/apps/ex3.subx b/apps/ex3.subx index f6f8c17d..66f2b3a3 100644 --- a/apps/ex3.subx +++ b/apps/ex3.subx @@ -21,7 +21,7 @@ Entry: $loop: # if (counter > 10) break 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0xa/imm32 # compare ecx - 7f/jump-if-greater $exit/disp8 + 7f/jump-if-> $exit/disp8 # result += counter 01/add 3/mod/direct 3/rm32/ebx . . . 1/r32/ecx . . # add ecx to ebx # ++counter diff --git a/apps/ex8.subx b/apps/ex8.subx index 2ea653f1..e000bfca 100644 --- a/apps/ex8.subx +++ b/apps/ex8.subx @@ -44,7 +44,7 @@ $ascii-length:loop: 8a/copy-byte 0/mod/* 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL # if (c == '\0') break 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx - 74/jump-if-equal $ascii-length:end/disp8 + 74/jump-if-= $ascii-length:end/disp8 # ++s 42/increment-edx # ++result diff --git a/apps/factorial.subx b/apps/factorial.subx index 019329e3..aebd2a12 100644 --- a/apps/factorial.subx +++ b/apps/factorial.subx @@ -35,7 +35,7 @@ Entry: # run tests if necessary, compute `factorial(5)` if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto run-main 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $run-main/disp8 + 7e/jump-if-<= $run-main/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto run-main # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -47,7 +47,7 @@ Entry: # run tests if necessary, compute `factorial(5)` if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto run-main 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $run-main/disp8 + 74/jump-if-= $run-main/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) diff --git a/apps/factorial2.subx b/apps/factorial2.subx index f6578f1b..7e0a737d 100644 --- a/apps/factorial2.subx +++ b/apps/factorial2.subx @@ -35,7 +35,7 @@ Entry: # run tests if necessary, compute `factorial(5)` if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto run-main 81 7/subop/compare *ebp 1/imm32 - 7e/jump-if-lesser-or-equal $run-main/disp8 + 7e/jump-if-<= $run-main/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto run-main # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -47,7 +47,7 @@ Entry: # run tests if necessary, compute `factorial(5)` if not 81 0/subop/add %esp 8/imm32 # . if (eax == false) goto run-main 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $run-main/disp8 + 74/jump-if-= $run-main/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) diff --git a/apps/factorial3.subx b/apps/factorial3.subx index 17a8cbbb..e6bcf959 100644 --- a/apps/factorial3.subx +++ b/apps/factorial3.subx @@ -29,12 +29,12 @@ Entry: # run tests if necessary, compute `factorial(5)` if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto run-main 81 7/subop/compare *ebp 1/imm32 - 7e/jump-if-lesser-or-equal $run-main/disp8 + 7e/jump-if-<= $run-main/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto run-main (kernel-string-equal? *(ebp+8) "test") # => eax # . if (eax == false) goto run-main 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $run-main/disp8 + 74/jump-if-= $run-main/disp8 # (run-tests) # syscall(exit, *Num-test-failures) diff --git a/apps/factorial4.subx b/apps/factorial4.subx index 99d7bff4..5f8c6aef 100644 --- a/apps/factorial4.subx +++ b/apps/factorial4.subx @@ -31,11 +31,11 @@ Entry: # run tests if necessary, compute `factorial(5)` if not { # if (argc <= 1) break 81 7/subop/compare *ebp 1/imm32 - 7e/jump-if-lesser-or-equal break/disp8 + 7e/jump-if-<= break/disp8 # if (!kernel-string-equal?(argv[1], "test")) break (kernel-string-equal? *(ebp+8) "test") # => eax 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # (run-tests) # eax = *Num-test-failures @@ -45,7 +45,7 @@ Entry: # run tests if necessary, compute `factorial(5)` if not { # if (argc > 1) break 81 7/subop/compare *ebp 1/imm32 - 7f/jump-if-greater break/disp8 + 7f/jump-if-> break/disp8 # eax = factorial(5) (factorial 5) # syscall(exit, eax) @@ -64,12 +64,12 @@ factorial: # n : int -> int/eax # if (n <= 1) return 1 81 7/subop/compare *(ebp+8) 1/imm32 { - 7f/jump-if-greater break/disp8 + 7f/jump-if-> break/disp8 b8/copy-to-eax 1/imm32 } # if (n > 1) return n * factorial(n-1) { - 7e/jump-if-lesser-or-equal break/disp8 + 7e/jump-if-<= break/disp8 # var ebx : int = n-1 8b/-> *(ebp+8) 3/r32/ebx 4b/decrement-ebx diff --git a/apps/handle.subx b/apps/handle.subx index 38af2db2..37fb9030 100644 --- a/apps/handle.subx +++ b/apps/handle.subx @@ -69,7 +69,7 @@ new: # ad : (addr allocation-descriptor), n : int, out : (handle _) 89/copy 1/mod/*+disp8 2/rm32/edx . . . 0/r32/eax 4/disp8 . # copy eax to *(edx+4) # if (eax == 0) out->alloc_id = 0, return 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal $new:continue/disp8 + 75/jump-if-!= $new:continue/disp8 c7 0/subop/copy 0/mod/indirect 2/rm32/edx . . . . . 0/imm32 # copy to *edx eb/jump $new:end/disp8 $new:continue: @@ -239,7 +239,7 @@ lookup: # h : (handle T) -> eax : (addr T) 8b/copy 0/mod/indirect 0/rm32/eax . . . . . . # copy *eax to eax # if (eax != handle->alloc_id) abort 39/compare 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none . 0/r32/eax 4/disp8 . # compare *(esp+4) and eax - 75/jump-if-not-equal $lookup:abort/disp8 + 75/jump-if-!= $lookup:abort/disp8 # eax = pop handle->address 58/pop-to-eax # discard handle->alloc_id @@ -254,7 +254,7 @@ lookup: # h : (handle T) -> eax : (addr T) #? 8b/copy 1/mod/*+disp8 0/rm32/eax . . . 0/r32/eax 4/disp8 . # copy *(eax+4) to eax #? # if (ecx != *eax) abort #? 39/compare 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # compare *eax and ecx -#? 75/jump-if-not-equal $lookup:abort/disp8 +#? 75/jump-if-!= $lookup:abort/disp8 #? # add 4 to eax #? 05/add-to-eax 4/imm32 # - } diff --git a/apps/hex.subx b/apps/hex.subx index 4dd725e8..21fd1939 100644 --- a/apps/hex.subx +++ b/apps/hex.subx @@ -34,7 +34,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto interactive 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $subx-hex-main:interactive/disp8 + 7e/jump-if-<= $subx-hex-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto interactive # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -46,7 +46,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto interactive 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-hex-main:interactive/disp8 + 74/jump-if-= $subx-hex-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -102,7 +102,7 @@ $subx-hex:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # if (eax == Eof) break 3d/compare-eax-and 0xffffffff/imm32/Eof - 74/jump-if-equal $subx-hex:loop-end/disp8 + 74/jump-if-= $subx-hex:loop-end/disp8 # write-byte-buffered(out, AL) # . . push args 50/push-eax @@ -162,7 +162,7 @@ convert-next-octet: # in : (addr buffered-file), err : (addr buffered-file), ed 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # if (eax == Eof) return 3d/compare-eax-and 0xffffffff/imm32/Eof - 74/jump-if-equal $convert-next-octet:end/disp8 + 74/jump-if-= $convert-next-octet:end/disp8 # eax = from-hex-char(eax) e8/call from-hex-char/disp32 # ecx = eax @@ -178,7 +178,7 @@ convert-next-octet: # in : (addr buffered-file), err : (addr buffered-file), ed 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # if (eax == Eof) error(ed, err, "partial byte found.") 3d/compare-eax-and 0xffffffff/imm32/Eof - 75/jump-if-not-equal $convert-next-octet:convert/disp8 + 75/jump-if-!= $convert-next-octet:convert/disp8 # . error-byte(ed, err, msg, '.') # reusing error-byte to avoid creating _yet_ another helper # . . push args 68/push 0x2e/imm32/period/dummy @@ -284,7 +284,7 @@ test-convert-next-octet: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-convert-next-octet:end/disp8 + 75/jump-if-!= $test-convert-next-octet:end/disp8 # check-ints-equal(eax, 0xab, msg) # . . push args 68/push "F - test-convert-next-octet"/imm32 @@ -374,7 +374,7 @@ test-convert-next-octet-handles-Eof: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-convert-next-octet-handles-Eof:end/disp8 + 75/jump-if-!= $test-convert-next-octet-handles-Eof:end/disp8 # check-ints-equal(eax, Eof, msg) # . . push args 68/push "F - test-convert-next-octet-handles-Eof"/imm32 @@ -505,7 +505,7 @@ $scan-next-byte:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # if (eax == Eof) return eax 3d/compare-with-eax 0xffffffff/imm32/Eof - 74/jump-if-equal $scan-next-byte:end/disp8 + 74/jump-if-= $scan-next-byte:end/disp8 # if (is-hex-digit?(eax)) return eax # . save eax for now 50/push-eax @@ -521,21 +521,21 @@ $scan-next-byte:loop: # . restore eax (does not affect flags) 58/pop-to-eax # . check whether to return - 75/jump-if-not-equal $scan-next-byte:end/disp8 + 75/jump-if-!= $scan-next-byte:end/disp8 $scan-next-byte:check1: # if (eax == ' ') continue 3d/compare-eax-and 0x20/imm32/space - 74/jump-if-equal $scan-next-byte:loop/disp8 + 74/jump-if-= $scan-next-byte:loop/disp8 # if (eax == '\t') continue 3d/compare-eax-and 9/imm32/tab - 74/jump-if-equal $scan-next-byte:loop/disp8 + 74/jump-if-= $scan-next-byte:loop/disp8 # if (eax == '\n') continue 3d/compare-eax-and 0xa/imm32/newline - 74/jump-if-equal $scan-next-byte:loop/disp8 + 74/jump-if-= $scan-next-byte:loop/disp8 $scan-next-byte:check2: # if (eax == '#') skip-until-newline(in) 3d/compare-with-eax 0x23/imm32 - 75/jump-if-not-equal $scan-next-byte:check3/disp8 + 75/jump-if-!= $scan-next-byte:check3/disp8 # . skip-until-newline(in) # . . push args ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -641,7 +641,7 @@ test-scan-next-byte: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-scan-next-byte:end/disp8 + 75/jump-if-!= $test-scan-next-byte:end/disp8 # check-ints-equal(eax, 0x61/a, msg) # . . push args 68/push "F - test-scan-next-byte"/imm32 @@ -739,7 +739,7 @@ test-scan-next-byte-skips-whitespace: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-scan-next-byte-skips-whitespace:end/disp8 + 75/jump-if-!= $test-scan-next-byte-skips-whitespace:end/disp8 # check-ints-equal(eax, 0x61/a, msg) # . . push args 68/push "F - test-scan-next-byte-skips-whitespace"/imm32 @@ -845,7 +845,7 @@ test-scan-next-byte-skips-comment: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-scan-next-byte-skips-comment:end/disp8 + 75/jump-if-!= $test-scan-next-byte-skips-comment:end/disp8 # check-ints-equal(eax, 0x61/a, msg) # . . push args 68/push "F - test-scan-next-byte-skips-comment"/imm32 @@ -951,7 +951,7 @@ test-scan-next-byte-skips-comment-and-whitespace: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-scan-next-byte-skips-comment-and-whitespace:end/disp8 + 75/jump-if-!= $test-scan-next-byte-skips-comment-and-whitespace:end/disp8 # check-ints-equal(eax, 0x61/a, msg) # . . push args 68/push "F - test-scan-next-byte-skips-comment-and-whitespace"/imm32 @@ -1059,7 +1059,7 @@ test-scan-next-byte-skips-whitespace-and-comment: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-scan-next-byte-skips-whitespace-and-comment:end/disp8 + 75/jump-if-!= $test-scan-next-byte-skips-whitespace-and-comment:end/disp8 # check-ints-equal(eax, 0x61/a, msg) # . . push args 68/push "F - test-scan-next-byte-skips-whitespace-and-comment"/imm32 @@ -1157,7 +1157,7 @@ test-scan-next-byte-reads-final-byte: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-scan-next-byte-reads-final-byte:end/disp8 + 75/jump-if-!= $test-scan-next-byte-reads-final-byte:end/disp8 # check-ints-equal(eax, 0x61/a, msg) # . . push args 68/push "F - test-scan-next-byte-reads-final-byte"/imm32 @@ -1247,7 +1247,7 @@ test-scan-next-byte-handles-Eof: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # return if abort 81 7/subop/compare 1/mod/*+disp8 1/rm32/ecx . . . . 4/disp8 0/imm32 # compare *(ecx+4) - 75/jump-if-not-equal $test-scan-next-byte-handles-Eof:end/disp8 + 75/jump-if-!= $test-scan-next-byte-handles-Eof:end/disp8 # check-ints-equal(eax, Eof, msg) # . . push args 68/push "F - test-scan-next-byte-handles-Eof"/imm32 @@ -1373,10 +1373,10 @@ $skip-until-newline:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == Eof) break 3d/compare-eax-and 0xffffffff/imm32/Eof - 74/jump-if-equal $skip-until-newline:end/disp8 + 74/jump-if-= $skip-until-newline:end/disp8 # . if (eax != 0xa/newline) loop 3d/compare-eax-and 0xa/imm32/newline - 75/jump-if-not-equal $skip-until-newline:loop/disp8 + 75/jump-if-!= $skip-until-newline:loop/disp8 $skip-until-newline:end: # . restore registers 58/pop-to-eax diff --git a/apps/mu.subx b/apps/mu.subx index d0719713..962cc175 100644 --- a/apps/mu.subx +++ b/apps/mu.subx @@ -374,11 +374,11 @@ Entry: { # if (argc <= 1) break 81 7/subop/compare *ebp 1/imm32 - 7e/jump-if-lesser-or-equal break/disp8 + 7e/jump-if-<= break/disp8 # if (argv[1] != "test") break (kernel-string-equal? *(ebp+8) "test") # => eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # (run-tests) # syscall(exit, *Num-test-failures) @@ -1025,7 +1025,7 @@ $parse-mu:line-loop: (read-line-buffered *(ebp+8) %ecx) # if (line->write == 0) break 81 7/subop/compare *ecx 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 #? # dump line {{{ #? (write 2 "parse-mu: ^") #? (write-stream 2 %ecx) @@ -1036,7 +1036,7 @@ $parse-mu:line-loop: # if slice-empty?(word-slice) continue (slice-empty? %edx) 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal loop/disp32 + 0f 85/jump-if-!= loop/disp32 # if (*word-slice->start == "#") continue # . eax = *word-slice->start 8b/-> *edx 0/r32/eax @@ -1044,13 +1044,13 @@ $parse-mu:line-loop: 81 4/subop/and %eax 0xff/imm32 # . if (eax == '#') continue 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal loop/disp32 + 0f 84/jump-if-= loop/disp32 # if (slice-equal?(word-slice, "fn")) parse a function { $parse-mu:fn: (slice-equal? %edx "fn") 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 # var new-function/eax : (handle function) = populate-mu-function(in, new-function, vars) (allocate Heap *Function-size) # => eax (zero-out %eax *Function-size) @@ -1169,15 +1169,15 @@ populate-mu-function-header: # first-line : (addr stream byte), out : (handle f # if (word-slice == '{') abort (slice-equal? %ecx "{") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 # if (word-slice == '->') abort (slice-equal? %ecx "->") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 # if (word-slice == '}') abort (slice-equal? %ecx "}") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 # save function name (slice-to-string Heap %ecx) # => eax 89/<- *edi 0/r32/eax # Function-name @@ -1190,21 +1190,21 @@ $populate-mu-function-header:check-for-inout: # if (word-slice == '{') goto done (slice-equal? %ecx "{") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $populate-mu-function-header:done/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:done/disp32 # if (word-slice == '->') break (slice-equal? %ecx "->") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal break/disp32 + 0f 85/jump-if-!= break/disp32 # if (word-slice == '}') abort (slice-equal? %ecx "}") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 # var v/ebx : (handle var) = parse-var-with-type(word-slice, first-line) (parse-var-with-type %ecx *(ebp+8)) # => eax 89/<- %ebx 0/r32/eax # assert(v->register == null) 81 7/subop/compare *(ebx+0x10) 0/imm32 # Var-register - 0f 85/jump-if-not-equal $populate-mu-function-header:error2/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:error2/disp32 # v->stack-offset = next-offset 89/<- *(ebx+0xc) 2/r32/edx # Var-stack-offset # next-offset += size-of(v) @@ -1224,21 +1224,21 @@ $parse-var-with-type:check-for-out: # if (word-slice == '{') break (slice-equal? %ecx "{") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal break/disp32 + 0f 85/jump-if-!= break/disp32 # if (word-slice == '->') abort (slice-equal? %ecx "->") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 # if (word-slice == '}') abort (slice-equal? %ecx "}") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $populate-mu-function-header:error1/disp32 + 0f 85/jump-if-!= $populate-mu-function-header:error1/disp32 # (parse-var-with-type %ecx *(ebp+8)) # => eax 89/<- %ebx 0/r32/eax # assert(var->register != null) 81 7/subop/compare *(ebx+0x10) 0/imm32 # Var-register - 0f 84/jump-if-equal $populate-mu-function-header:error3/disp32 + 0f 84/jump-if-= $populate-mu-function-header:error3/disp32 (append-list Heap %ebx *(edi+0xc)) # Function-outputs => eax 89/<- *(edi+0xc) 0/r32/eax # Function-outputs e9/jump loop/disp32 @@ -1522,7 +1522,7 @@ $parse-var-with-type:save-name: 8a/copy-byte *eax 3/r32/BL 81 4/subop/and %ebx 0xff/imm32 81 7/subop/compare %ebx 0x3a/imm32/colon - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 89/<- *(ecx+4) 0/r32/eax } # . if s ends with ',', decrement s->end @@ -1532,7 +1532,7 @@ $parse-var-with-type:save-name: 8a/copy-byte *eax 3/r32/BL 81 4/subop/and %ebx 0xff/imm32 81 7/subop/compare %ebx 0x2c/imm32/comma - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 89/<- *(ecx+4) 0/r32/eax } $parse-var-with-type:write-name: @@ -1548,7 +1548,7 @@ $parse-var-with-type:save-register: 8a/copy-byte *eax 3/r32/BL 81 4/subop/and %ebx 0xff/imm32 81 7/subop/compare %ebx 0x3a/imm32/colon - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 89/<- *(ecx+4) 0/r32/eax } # . if s ends with ',', decrement s->end @@ -1558,7 +1558,7 @@ $parse-var-with-type:save-register: 8a/copy-byte *eax 3/r32/BL 81 4/subop/and %ebx 0xff/imm32 81 7/subop/compare %ebx 0x2c/imm32/comma - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 89/<- *(ecx+4) 0/r32/eax } # if (!slice-empty?(s)) v->register = slice-to-string(s) @@ -1568,7 +1568,7 @@ $parse-var-with-type:write-register: # That's probably a sign we have the wrong algorithm for this function. 8b/-> *ecx 0/r32/eax 39/compare 0/r32/eax *(ecx+4) - 76/jump-if-lesser-or-equal break/disp8 + 76/jump-if-<= break/disp8 (slice-to-string Heap %ecx) 89/<- *(edi+0x10) 0/r32/eax # Var-register } @@ -1577,33 +1577,33 @@ $parse-var-with-type:write-register: # if (word-slice == '{') abort (slice-equal? %ecx "{") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 + 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 # if (word-slice == '->') abort (slice-equal? %ecx "->") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 + 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 # if (word-slice == '}') abort (slice-equal? %ecx "}") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 + 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 # if (slice-empty?(type)) skip (slice-empty? %ecx) { 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 (next-mu-token *(ebp+0xc) %ecx) # if (word-slice == '{') abort (slice-equal? %ecx "{") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 + 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 # if (word-slice == '->') abort (slice-equal? %ecx "->") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 + 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 # if (word-slice == '}') abort (slice-equal? %ecx "}") # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $parse-var-with-type:abort/disp32 + 0f 85/jump-if-!= $parse-var-with-type:abort/disp32 } (type-for %ecx) # => eax 89/<- *(edi+4) 0/r32/eax # Var-type @@ -1655,7 +1655,7 @@ next-mu-token: # in: (addr stream byte), out: (addr slice) 8a/copy-byte *eax 3/r32/BL 81 4/subop/and %ebx 0xff/imm32 81 7/subop/compare %ebx 0x3a/imm32/colon - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 89/<- *(edi+4) 0/r32/eax } # if out ends with ',', decrement out->end @@ -1665,7 +1665,7 @@ next-mu-token: # in: (addr stream byte), out: (addr slice) 8a/copy-byte *eax 3/r32/BL 81 4/subop/and %ebx 0xff/imm32 81 7/subop/compare %ebx 0x2c/imm32/comma - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 89/<- *(edi+4) 0/r32/eax } $next-mu-token:end: @@ -1722,14 +1722,14 @@ pos-slice: # arr: (addr stream (handle array byte)), s: (addr slice) -> index/e # if (curr >= max) return -1 39/compare %edx 3/r32/ebx { - 72/jump-if-lesser-unsigned break/disp8 + 72/jump-if-addr< break/disp8 b8/copy-to-eax 1/imm32 eb/jump $pos-slice:end/disp8 } # if (slice-equal?(s, *curr)) break (slice-equal? *(ebp+0xc) *edx) # => eax 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 # ++index 41/increment-ecx # curr += 4 @@ -1901,7 +1901,7 @@ is-identifier?: # in : (addr slice) -> result/eax : boolean # if (slice-empty?(in)) return false (slice-empty? *(ebp+8)) # => eax 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal $is-identifier?:false/disp8 + 75/jump-if-!= $is-identifier?:false/disp8 # var c/eax : byte = *in->start 8b/-> *(ebp+8) 0/r32/eax 8b/-> *eax 0/r32/eax @@ -1909,18 +1909,18 @@ is-identifier?: # in : (addr slice) -> result/eax : boolean 81 4/subop/and %eax 0xff/imm32 # if (c == '$') return true 3d/compare-eax-and 0x24/imm32/$ - 74/jump-if-equal $is-identifier?:true/disp8 + 74/jump-if-= $is-identifier?:true/disp8 # if (c == '_') return true 3d/compare-eax-and 0x5f/imm32/_ - 74/jump-if-equal $is-identifier?:true/disp8 + 74/jump-if-= $is-identifier?:true/disp8 # drop case 25/and-eax-with 0x5f/imm32 # if (c < 'A') return false 3d/compare-eax-and 0x41/imm32/A - 7c/jump-if-lesser $is-identifier?:false/disp8 + 7c/jump-if-< $is-identifier?:false/disp8 # if (c > 'Z') return false 3d/compare-eax-and 0x5a/imm32/Z - 7f/jump-if-greater $is-identifier?:false/disp8 + 7f/jump-if-> $is-identifier?:false/disp8 # otherwise return true $is-identifier?:true: b8/copy-to-eax 1/imm32/true @@ -2282,7 +2282,7 @@ $parse-mu-block:line-loop: #? (flush Stderr) # if (line->write == 0) break 81 7/subop/compare *ecx 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 # word-slice = next-word(line) (next-word %ecx %edx) #? (write-buffered Stderr "word: ") @@ -2292,7 +2292,7 @@ $parse-mu-block:line-loop: # if slice-empty?(word-slice) continue (slice-empty? %edx) 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal loop/disp32 + 0f 85/jump-if-!= loop/disp32 # if (slice-starts-with?(word-slice, '#') continue # . eax = *word-slice->start 8b/-> *edx 0/r32/eax @@ -2300,13 +2300,13 @@ $parse-mu-block:line-loop: 81 4/subop/and %eax 0xff/imm32 # . if (eax == '#') continue 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal loop/disp32 + 0f 84/jump-if-= loop/disp32 # if slice-equal?(word-slice, "{") { $parse-mu-block:check-for-block: (slice-equal? %edx "{") 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 (check-no-tokens-left %ecx) # parse new block and append (parse-mu-block *(ebp+8) *(ebp+0xc) *(ebp+0x10)) # => eax @@ -2317,7 +2317,7 @@ $parse-mu-block:check-for-block: $parse-mu-block:check-for-end: (slice-equal? %edx "}") 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal break/disp32 + 0f 85/jump-if-!= break/disp32 # if slice-ends-with?(word-slice, ":") parse named block and append { $parse-mu-block:check-for-named-block: @@ -2327,7 +2327,7 @@ $parse-mu-block:check-for-named-block: 81 4/subop/and %eax 0xff/imm32 # . if (eax != ':') break 3d/compare-eax-and 0x23/imm32/hash - 0f 85/jump-if-not-equal break/disp32 + 0f 85/jump-if-!= break/disp32 # (parse-mu-named-block %edx %ecx *(ebp+8) *(ebp+0xc) *(ebp+0x10)) # => eax (append-to-block %edi %eax) @@ -2338,7 +2338,7 @@ $parse-mu-block:check-for-named-block: $parse-mu-block:check-for-var: (slice-equal? %edx "var") 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # (parse-mu-var-def %ecx *(ebp+0xc)) # => eax (append-to-block %edi %eax) @@ -2394,7 +2394,7 @@ check-no-tokens-left: # line : (addr stream byte) # if slice-empty?(s) return (slice-empty? %ecx) 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal $check-no-tokens-left:end/disp8 + 75/jump-if-!= $check-no-tokens-left:end/disp8 # if (slice-starts-with?(s, '#') return # . eax = *s->start 8b/-> *edx 0/r32/eax @@ -2402,7 +2402,7 @@ check-no-tokens-left: # line : (addr stream byte) 81 4/subop/and %eax 0xff/imm32 # . if (eax == '#') continue 3d/compare-eax-and 0x23/imm32/hash - 74/jump-if-equal $check-no-tokens-left:end/disp8 + 74/jump-if-= $check-no-tokens-left:end/disp8 # abort (write-buffered Stderr "'{' or '}' should be on its own line, but got '") (rewind-stream %ecx) @@ -2520,7 +2520,7 @@ parse-mu-stmt: # line : (addr stream byte), vars : (addr stack (handle var)), f { (stmt-has-outputs? *(ebp+8)) 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 { $parse-mu-stmt:read-outputs: # name = next-word(line) @@ -2528,15 +2528,15 @@ $parse-mu-stmt:read-outputs: # if slice-empty?(word-slice) break (slice-empty? %ecx) 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal break/disp32 + 0f 85/jump-if-!= break/disp32 # if (name == "<-") break (slice-equal? %ecx "<-") 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 # assert(is-identifier?(name)) (is-identifier? %ecx) 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal $parse-mu-stmt:abort/disp32 + 0f 84/jump-if-= $parse-mu-stmt:abort/disp32 # (lookup-or-define-var %ecx *(ebp+0xc) *(ebp+0x10)) # => eax (append-list Heap %eax *(edi+0xc)) # Stmt1-outputs => eax @@ -2555,11 +2555,11 @@ $parse-mu-stmt:read-inouts: # if slice-empty?(word-slice) break (slice-empty? %ecx) 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal break/disp32 + 0f 85/jump-if-!= break/disp32 # if (name == "<-") abort (slice-equal? %ecx "<-") 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $parse-mu-stmt:abort2/disp32 + 0f 85/jump-if-!= $parse-mu-stmt:abort2/disp32 # (lookup-var-or-literal %ecx *(ebp+0xc)) # => eax (append-list Heap %eax *(edi+8)) # Stmt1-inouts => eax @@ -2623,7 +2623,7 @@ stmt-has-outputs?: # line : (addr stream byte) -> result/eax : boolean (slice-empty? %ecx) 3d/compare-eax-and 0/imm32 b8/copy-to-eax 0/imm32/false/result # restore result (if we're here it's still false) - 0f 85/jump-if-not-equal break/disp32 + 0f 85/jump-if-!= break/disp32 # if slice-starts-with?(word-slice, '#') break # . eax = *word-slice->start 8b/-> *ecx 0/r32/eax @@ -2632,11 +2632,11 @@ stmt-has-outputs?: # line : (addr stream byte) -> result/eax : boolean # . if (eax == '#') break 3d/compare-eax-and 0x23/imm32/hash b8/copy-to-eax 0/imm32/false/result # restore result (if we're here it's still false) - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 # if slice-equal?(word-slice, '<-') return true (slice-equal? %ecx "<-") 3d/compare-eax-and 0/imm32 - 74/jump-if-equal loop/disp8 + 74/jump-if-= loop/disp8 b8/copy-to-eax 1/imm32/true } $stmt-has-outputs:end: @@ -2664,7 +2664,7 @@ lookup-var-or-literal: # name: (addr slice), vars : (addr stack (handle var)) - # if slice-empty?(name) abort (slice-empty? %esi) # => eax 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $lookup-var-or-literal:abort/disp32 + 0f 85/jump-if-!= $lookup-var-or-literal:abort/disp32 # var ecx : byte = *name->start 8b/-> *esi 1/r32/ecx 8a/copy-byte *ecx 1/r32/CL @@ -2673,12 +2673,12 @@ lookup-var-or-literal: # name: (addr slice), vars : (addr stack (handle var)) - (is-decimal-digit? %ecx) # => eax 81 7/subop/compare %eax 0/imm32 { - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 (new-literal-integer Heap %esi) # => eax } # otherwise return lookup-var(name, vars) { - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 (lookup-var %esi *(ebp+0xc)) # => eax } $lookup-var-or-literal:end: @@ -2710,7 +2710,7 @@ lookup-var: # name: (addr slice), vars : (addr stack (handle var)) -> result/ea (lookup-var-helper %eax *(ebp+0xc)) # => eax # if (result == 0) abort 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $lookup-var:abort/disp8 + 74/jump-if-= $lookup-var:abort/disp8 $lookup-var:end: # . epilogue 89/<- %esp 5/r32/ebp @@ -2752,7 +2752,7 @@ lookup-var-helper: # name: (addr array byte), vars : (addr stack (handle var)) 8b/-> *esi 3/r32/ebx # if (vars->top > vars->length) abort 3b/compare 0/r32/eax *(esi+4) - 0f 8f/jump-if-greater $lookup-var-helper:error1/disp32 + 0f 8f/jump-if-> $lookup-var-helper:error1/disp32 # var min/edx : (addr handle var) = vars->data 8d/copy-address *(esi+8) 2/r32/edx # var curr/ebx : (addr handle var) = &vars->data[vars->top - 4] @@ -2762,14 +2762,14 @@ lookup-var-helper: # name: (addr array byte), vars : (addr stack (handle var)) # if (curr < min) return 0 39/compare %ebx 2/r32/edx b8/copy-to-eax 0/imm32 - 0f 82/jump-if-lesser-unsigned break/disp32 + 0f 82/jump-if-addr< break/disp32 # var v/eax : (handle var) = *curr 8b/-> *ebx 0/r32/eax # if (v->name == name) return v (string-equal? *eax *(ebp+8)) # Var-name 3d/compare-eax-and 0/imm32 8b/-> *ebx 0/r32/eax - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 # curr -= 4 81 5/subop/subtract %ebx 4/imm32 e9/jump loop/disp32 @@ -2810,13 +2810,13 @@ lookup-or-define-var: # name: (addr slice), vars : (addr stack (handle var)), f { # if (result != 0) return 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 # if name is one of fn's outputs, return it { (find-in-function-outputs *(ebp+0x10) %ecx) # => eax 3d/compare-eax-and 0/imm32 # otherwise abort - 0f 84/jump-if-not-equal $lookup-var:abort/disp32 + 0f 84/jump-if-!= $lookup-var:abort/disp32 } } $lookup-or-define-var:end: @@ -2839,7 +2839,7 @@ find-in-function-outputs: # fn : (handle function), name : (handle array byte) # while curr != null { 81 7/subop/compare %ecx 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # var v : (handle var) = *curr 8b/-> *ecx 0/r32/eax # List-value # if (curr->name == name) return curr @@ -2847,7 +2847,7 @@ find-in-function-outputs: # fn : (handle function), name : (handle array byte) (string-equal? *eax *(ebp+0xc)) 3d/compare-eax-and 0/imm32 58/pop-to-eax - 75/jump-if-not-equal $find-in-function-outputs:end/disp8 + 75/jump-if-!= $find-in-function-outputs:end/disp8 # curr = curr->next 8b/-> *(ecx+4) 1/r32/ecx # List-next eb/jump loop/disp8 @@ -2960,7 +2960,7 @@ new-literal-integer: # ad: (addr allocation-descriptor), name: (addr slice) -> # if (!is-hex-int?(name)) abort (is-hex-int? *(ebp+0xc)) # => eax 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal $new-literal-integer:abort/disp32 + 0f 84/jump-if-= $new-literal-integer:abort/disp32 # var s/ecx : (addr array byte) (slice-to-string Heap *(ebp+0xc)) # => eax 89/<- %ecx 0/r32/eax @@ -3137,14 +3137,14 @@ append-list: # ad: (addr allocation-descriptor), value: _type, list: (handle li 89/<- *eax 1/r32/ecx # List-value # if (list == null) return result 81 7/subop/compare *(ebp+0x10) 0/imm32 - 74/jump-if-equal $new-list:end/disp8 + 74/jump-if-= $new-list:end/disp8 # otherwise append # var curr/ecx = list 8b/-> *(ebp+0x10) 1/r32/ecx # while (curr->next != null) curr = curr->next { 81 7/subop/compare *(ecx+4) 0/imm32 # List-next - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # curr = curr->next 8b/-> *(ecx+4) 1/r32/ecx eb/jump loop/disp8 @@ -3225,7 +3225,7 @@ emit-subx: # out : (addr buffered-file) { # if (curr == null) break 81 7/subop/compare %ecx 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 (emit-subx-function %edi %ecx) # curr = curr->next 8b/-> *(ecx+0x14) 1/r32/ecx # Function-next @@ -3280,12 +3280,12 @@ emit-subx-block: # out : (addr buffered-file), block : (handle block) { $emit-subx-block:check-empty: 81 7/subop/compare %esi 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 (write-buffered *(ebp+8) "{\n") { $emit-subx-block:stmt: 81 7/subop/compare %esi 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 (emit-subx-statement *(ebp+8) *esi Primitives *Program) (write-buffered *(ebp+8) Newline) 8b/-> *(esi+4) 6/r32/esi # List-next @@ -3311,7 +3311,7 @@ emit-subx-statement: # out : (addr buffered-file), stmt : (handle statement), p $emit-subx-statement:primitive: (find-matching-primitive *(ebp+0x10) *(ebp+0xc)) # primitives, stmt => curr/eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 (emit-subx-primitive *(ebp+8) *(ebp+0xc) %eax) # out, stmt, curr e9/jump $emit-subx-statement:end/disp32 } @@ -3320,7 +3320,7 @@ $emit-subx-statement:primitive: $emit-subx-statement:call: (find-matching-function *(ebp+0x14) *(ebp+0xc)) # functions, stmt => curr/eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 (emit-subx-call *(ebp+8) *(ebp+0xc) %eax) # out, stmt, curr e9/jump $emit-subx-statement:end/disp32 } @@ -4136,7 +4136,7 @@ emit-subx-rm32: # out : (addr buffered-file), l : arg-location, stmt : (handle 50/push-eax # if (l == 0) return 81 7/subop/compare *(ebp+0xc) 0/imm32 - 74/jump-if-equal $emit-subx-rm32:end/disp8 + 74/jump-if-= $emit-subx-rm32:end/disp8 # (get-stmt-operand-from-arg-location *(ebp+0x10) *(ebp+0xc)) # stmt, l => var/eax (emit-subx-var-as-rm32 *(ebp+8) %eax) # out, var @@ -4161,7 +4161,7 @@ get-stmt-operand-from-arg-location: # stmt : (handle statement), l : arg-locati # if (l == 1) return stmt->inouts->var { 3d/compare-eax-and 1/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 $get-stmt-operand-from-arg-location:1: 8b/-> *(ecx+8) 0/r32/eax # Stmt1-inouts 8b/-> *eax 0/r32/eax # Operand-var @@ -4170,7 +4170,7 @@ $get-stmt-operand-from-arg-location:1: # if (l == 2) return stmt->inouts->next->var { 3d/compare-eax-and 2/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 $get-stmt-operand-from-arg-location:2: 8b/-> *(ecx+8) 0/r32/eax # Stmt1-inouts 8b/-> *(eax+4) 0/r32/eax # Operand-next @@ -4180,7 +4180,7 @@ $get-stmt-operand-from-arg-location:2: # if (l == 3) return stmt->outputs { 3d/compare-eax-and 3/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 $get-stmt-operand-from-arg-location:3: 8b/-> *(ecx+0xc) 0/r32/eax # Stmt1-outputs 8b/-> *eax 0/r32/eax # Operand-var @@ -4217,7 +4217,7 @@ emit-subx-r32: # out : (addr buffered-file), l : arg-location, stmt : (handle s 51/push-ecx # if (location == 0) return 81 7/subop/compare *(ebp+0xc) 0/imm32 - 0f 84/jump-if-equal $emit-subx-r32:end/disp32 + 0f 84/jump-if-= $emit-subx-r32:end/disp32 # (get-stmt-operand-from-arg-location *(ebp+0x10) *(ebp+0xc)) # stmt, l => var/eax (maybe-get Registers *(eax+0x10) 8) # Var-register => eax : (addr register-index) @@ -4242,7 +4242,7 @@ emit-subx-imm32: # out : (addr buffered-file), l : arg-location, stmt : (handle 51/push-ecx # if (location == 0) return 81 7/subop/compare *(ebp+0xc) 0/imm32 - 74/jump-if-equal $emit-subx-imm32:end/disp8 + 74/jump-if-= $emit-subx-imm32:end/disp8 # (get-stmt-operand-from-arg-location *(ebp+0x10) *(ebp+0xc)) # stmt, l => var/eax (write-buffered *(ebp+8) Space) @@ -4276,7 +4276,7 @@ emit-subx-call: # out : (addr buffered-file), stmt : (handle statement), callee { # if (curr == null) break 81 7/subop/compare %ecx 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # (emit-subx-call-operand *(ebp+8) *ecx) # curr = curr->next @@ -4305,7 +4305,7 @@ emit-subx-call-operand: # out : (addr buffered-file), operand : (handle variabl # if (operand->register) emit "%__" { 81 7/subop/compare *(eax+0x10) 0/imm32 # Var-register - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 $emit-subx-call-operand:register: (write-buffered *(ebp+8) " %") (write-buffered *(ebp+8) *(eax+0x10)) # Var-register @@ -4314,7 +4314,7 @@ $emit-subx-call-operand:register: # else if (operand->stack-offset) emit "*(ebp+__)" { 81 7/subop/compare *(eax+0xc) 0/imm32 # Var-stack-offset - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 $emit-subx-call-operand:stack: (write-buffered *(ebp+8) Space) (write-buffered *(ebp+8) "*(ebp+") @@ -4329,7 +4329,7 @@ $emit-subx-call-operand:stack: 8b/-> *(eax+4) 0/r32/eax # Var-type 81 7/subop/compare *eax 0/imm32 # Tree-left 58/pop-to-eax - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 $emit-subx-call-operand:literal: (write-buffered *(ebp+8) Space) (write-buffered *(ebp+8) *eax) @@ -4353,7 +4353,7 @@ emit-subx-var-as-rm32: # out : (addr buffered-file), operand : (handle variable # if (operand->register) emit "%__" { 81 7/subop/compare *(eax+0x10) 0/imm32 # Var-register - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 $emit-subx-var-as-rm32:register: (write-buffered *(ebp+8) " %") (write-buffered *(ebp+8) *(eax+0x10)) # Var-register @@ -4361,7 +4361,7 @@ $emit-subx-var-as-rm32:register: # else if (operand->stack-offset) emit "*(ebp+__)" { 81 7/subop/compare *(eax+0xc) 0/imm32 # Var-stack-offset - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 $emit-subx-var-as-rm32:stack: (write-buffered *(ebp+8) Space) (write-buffered *(ebp+8) "*(ebp+") @@ -4388,12 +4388,12 @@ find-matching-function: # functions : (addr function), stmt : (handle statement { # if (curr == null) break 81 7/subop/compare %ecx 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # if match(stmt, curr) return curr { (mu-stmt-matches-function? *(ebp+0xc) %ecx) # => eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 89/<- %eax 1/r32/ecx eb/jump $find-matching-function:end/disp8 } @@ -4423,7 +4423,7 @@ find-matching-primitive: # primitives : (handle primitive), stmt : (handle stat $find-matching-primitive:loop: # if (curr == null) break 81 7/subop/compare %ecx 0/imm32 - 0f 84/jump-if-equal break/disp32 + 0f 84/jump-if-= break/disp32 #? (write-buffered Stderr "prim: ") #? (write-buffered Stderr *ecx) # Primitive-name #? (write-buffered Stderr " => ") @@ -4434,7 +4434,7 @@ $find-matching-primitive:loop: { (mu-stmt-matches-primitive? *(ebp+0xc) %ecx) # => eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 89/<- %eax 1/r32/ecx eb/jump $find-matching-primitive:end/disp8 } @@ -4495,7 +4495,7 @@ $mu-stmt-matches-primitive?:check-name: # if (primitive->name != stmt->operation) return false (string-equal? *(ecx+4) *edx) # Stmt1-operation, Primitive-name => eax 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 b8/copy-to-eax 0/imm32 e9/jump $mu-stmt-matches-primitive?:end/disp32 } @@ -4507,11 +4507,11 @@ $mu-stmt-matches-primitive?:check-inouts: # if (curr == 0 && curr2 == 0) move on to check outputs { 81 7/subop/compare %esi 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 $mu-stmt-matches-primitive?:stmt-inout-is-null: { 81 7/subop/compare %edi 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 # e9/jump $mu-stmt-matches-primitive?:check-outputs/disp32 } @@ -4522,7 +4522,7 @@ $mu-stmt-matches-primitive?:stmt-inout-is-null: # if (curr2 == 0) return false { 81 7/subop/compare %edi 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 $mu-stmt-matches-primitive?:prim-inout-is-null: b8/copy-to-eax 0/imm32/false e9/jump $mu-stmt-matches-primitive?:end/disp32 @@ -4531,7 +4531,7 @@ $mu-stmt-matches-primitive?:prim-inout-is-null: { (operand-matches-primitive? *esi *edi) # => eax 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 b8/copy-to-eax 0/imm32/false e9/jump $mu-stmt-matches-primitive?:end/disp32 } @@ -4550,10 +4550,10 @@ $mu-stmt-matches-primitive?:check-outputs: { $mu-stmt-matches-primitive?:check-output: 81 7/subop/compare %esi 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 { 81 7/subop/compare %edi 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 # return true b8/copy-to-eax 1/imm32 e9/jump $mu-stmt-matches-primitive?:end/disp32 @@ -4565,7 +4565,7 @@ $mu-stmt-matches-primitive?:check-output: # if (curr2 == 0) return false { 81 7/subop/compare %edi 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 b8/copy-to-eax 0/imm32 e9/jump $mu-stmt-matches-primitive?:end/disp32 } @@ -4573,7 +4573,7 @@ $mu-stmt-matches-primitive?:check-output: { (operand-matches-primitive? *esi *edi) # List-value List-value => eax 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 b8/copy-to-eax 0/imm32 e9/jump $mu-stmt-matches-primitive?:end/disp32 } @@ -4612,28 +4612,28 @@ operand-matches-primitive?: # var : (handle var), prim-var : (handle var) => re (type-equal? *(esi+4) *(edi+4)) # Var-type, Var-type => eax 3d/compare-eax-and 0/imm32 b8/copy-to-eax 0/imm32/false - 74/jump-if-equal $operand-matches-primitive?:end/disp8 + 74/jump-if-= $operand-matches-primitive?:end/disp8 # return false if var->register doesn't match prim-var->register { # if addresses are equal, don't return here 8b/-> *(esi+0x10) 0/r32/eax 39/compare *(edi+0x10) 0/r32/eax - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # if either address is 0, return false 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result + 74/jump-if-= $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result 81 7/subop/compare *(edi+0x10) 0/imm32 - 74/jump-if-equal $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result + 74/jump-if-= $operand-matches-primitive?:end/disp8 # eax goes from meaning var->register to result # if prim-var->register is "*", return true (string-equal? *(edi+0x10) "*") # Var-register 3d/compare-eax-and 0/imm32 b8/copy-to-eax 1/imm32/true - 75/jump-if-not-equal $operand-matches-primitive?:end/disp8 + 75/jump-if-!= $operand-matches-primitive?:end/disp8 # if string contents don't match, return false (string-equal? *(esi+0x10) *(edi+0x10)) # Var-register Var-register 3d/compare-eax-and 0/imm32 b8/copy-to-eax 0/imm32/false - 74/jump-if-equal $operand-matches-primitive?:end/disp8 + 74/jump-if-= $operand-matches-primitive?:end/disp8 } # return true b8/copy-to-eax 1/imm32/true @@ -4661,19 +4661,19 @@ type-equal?: # a : (handle tree type-id), b : (handle tree type-id) => result/e 8b/-> %ecx 0/r32/eax # Var-type 39/compare %edx 0/r32/eax # Var-type b8/copy-to-eax 1/imm32/true - 0f 84/jump-if-equal $type-equal?:end/disp32 + 0f 84/jump-if-= $type-equal?:end/disp32 # if (a == 0) return false 81 7/subop/compare %ecx 0/imm32 b8/copy-to-eax 0/imm32/false - 0f 84/jump-if-equal $type-equal?:end/disp32 + 0f 84/jump-if-= $type-equal?:end/disp32 # if (b == 0) return false 81 7/subop/compare %edx 0/imm32 b8/copy-to-eax 0/imm32/false - 0f 84/jump-if-equal $type-equal?:end/disp32 + 0f 84/jump-if-= $type-equal?:end/disp32 # if (!type-equal?(a->left, b->left)) return false (type-equal? *ecx *edx) # Tree-left, Tree-left => eax 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal $type-equal?:end/disp32 + 0f 84/jump-if-= $type-equal?:end/disp32 # return type-equal?(a->right, b->right (type-equal? *(ecx+4) *(edx+4)) # Tree-right, Tree-right => eax $type-equal?:end: diff --git a/apps/mulisp.subx b/apps/mulisp.subx index 87479ffe..a2fd5ebe 100644 --- a/apps/mulisp.subx +++ b/apps/mulisp.subx @@ -18,11 +18,11 @@ Entry: # run tests if necessary, a REPL if not { # if (argc <= 1) break 81 7/subop/compare *ebp 1/imm32 - 7e/jump-if-lesser-or-equal break/disp8 + 7e/jump-if-<= break/disp8 # if (argv[1] != "test")) break (kernel-string-equal? *(ebp+8) "test") # => eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # (run-tests) # syscall(exit, *Num-test-failures) @@ -84,7 +84,7 @@ repl: # in : (addr buffered-file), out : (addr buffered-file) (lisp-read Stdin) # => eax : (handle cell) # if (eax == 0) break 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # (lisp-eval %eax) # => eax : (handle cell) (lisp-print Stdout %eax) @@ -123,7 +123,7 @@ lisp-read: # in : (addr buffered-file) -> eax : (handle cell) # if (s->write == 0) return null { 81 7/subop/compare *ecx 0/imm32 - 75/jump-if-not-equal break/disp8 + 75/jump-if-!= break/disp8 b8/copy-to-eax 0/imm32/eof eb/jump $lisp-read:end/disp8 } diff --git a/apps/pack.subx b/apps/pack.subx index 68be16aa..8719996b 100644 --- a/apps/pack.subx +++ b/apps/pack.subx @@ -35,7 +35,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto interactive 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $subx-pack-main:interactive/disp8 + 7e/jump-if-<= $subx-pack-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto interactive # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -47,7 +47,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto interactive 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-pack-main:interactive/disp8 + 74/jump-if-= $subx-pack-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -159,7 +159,7 @@ $subx-pack:loop: $subx-pack:check0: # if (line->write == 0) break 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 0f 84/jump-if-equal $subx-pack:break/disp32 + 0f 84/jump-if-= $subx-pack:break/disp32 #? # dump line {{{ #? # . write(2/stderr, "LL: ") #? # . . push args @@ -205,7 +205,7 @@ $subx-pack:check1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) write-stream-data(out, line) 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $subx-pack:pass-through/disp32 + 0f 85/jump-if-!= $subx-pack:pass-through/disp32 $subx-pack:check2: #? # dump word-slice {{{ #? # . write(2/stderr, "AA: ") @@ -258,7 +258,7 @@ $subx-pack:check2: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto check3 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $subx-pack:check3/disp32 + 0f 84/jump-if-= $subx-pack:check3/disp32 # word-slice = next-word(line) # . . push args 52/push-edx @@ -330,7 +330,7 @@ $subx-pack:check3: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # if (in-code? != false) convert-instruction(line, out) 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32/false # compare ebx - 74/jump-if-equal $subx-pack:data/disp8 + 74/jump-if-= $subx-pack:data/disp8 $subx-pack:code: # . convert-instruction(line, out) # . . push args @@ -1026,7 +1026,7 @@ $convert-data:check0: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $convert-data:break/disp32 + 0f 85/jump-if-!= $convert-data:break/disp32 $convert-data:check-for-comment: # if (slice-starts-with?(word-slice, "#")) # . var start/edx : (addr byte) = word-slice->start @@ -1036,7 +1036,7 @@ $convert-data:check-for-comment: 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL # . if (c != '#') goto next check 3d/compare-eax-and 0x23/imm32/hash - 75/jump-if-not-equal $convert-data:check-for-label/disp8 + 75/jump-if-!= $convert-data:check-for-label/disp8 $convert-data:comment: # write-slice-buffered(out, word-slice) # . . push args @@ -1047,7 +1047,7 @@ $convert-data:comment: # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # return - 0f 85/jump-if-not-equal $convert-data:end/disp32 + 0f 85/jump-if-!= $convert-data:end/disp32 $convert-data:check-for-label: # if (slice-ends-with?(word-slice, ":")) # . var end/edx : (addr byte) = word-slice->end @@ -1057,7 +1057,7 @@ $convert-data:check-for-label: 8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 0/r32/AL -1/disp8 . # copy byte at *ecx to AL # . if (c != ':') goto next check 3d/compare-eax-and 0x3a/imm32/colon - 75/jump-if-not-equal $convert-data:check-for-imm32/disp8 + 75/jump-if-!= $convert-data:check-for-imm32/disp8 $convert-data:label: # write-stream-data(out, line) # . . push args @@ -1068,7 +1068,7 @@ $convert-data:label: # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # return - 75/jump-if-not-equal $convert-data:end/disp8 + 75/jump-if-!= $convert-data:end/disp8 $convert-data:check-for-imm32: # if (has-metadata?(word-slice, "imm32")) # . eax = has-metadata?(ecx, "imm32") @@ -1081,7 +1081,7 @@ $convert-data:check-for-imm32: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) process as a single byte 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $convert-data:single-byte/disp8 + 74/jump-if-= $convert-data:single-byte/disp8 $convert-data:imm32: # emit(out, word-slice, 4) # . . push args @@ -1860,7 +1860,7 @@ $convert-instruction:check0: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) pass through 3d/compare-eax-and 0/imm32/false - 75/jump-if-not-equal $convert-instruction:pass-through/disp8 + 75/jump-if-!= $convert-instruction:pass-through/disp8 $convert-instruction:check1: # if (slice-starts-with?(word-slice, "#")) write-stream-data(out, line) # . var start/edx : (addr byte) = word-slice->start @@ -1870,7 +1870,7 @@ $convert-instruction:check1: 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL # . if (c == '#') pass through 3d/compare-eax-and 0x23/imm32/hash - 74/jump-if-equal $convert-instruction:pass-through/disp8 + 74/jump-if-= $convert-instruction:pass-through/disp8 $convert-instruction:check2: # if (slice-ends-with?(word-slice, ":")) write-stream-data(out, line) # . var end/edx : (addr byte) = word-slice->end @@ -1880,7 +1880,7 @@ $convert-instruction:check2: 8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 0/r32/AL -1/disp8 . # copy byte at *ecx to AL # . if (c == ':') pass through 3d/compare-eax-and 0x3a/imm32/colon - 75/jump-if-not-equal $convert-instruction:really-convert/disp8 + 75/jump-if-!= $convert-instruction:really-convert/disp8 $convert-instruction:pass-through: # write-stream-data(out, line) # . . push args @@ -2028,7 +2028,7 @@ $emit-opcodes:op1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) return 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 + 0f 85/jump-if-!= $emit-opcodes:end/disp32 # if (slice-starts-with?(op1, "#")) return # . var start/ebx : (addr byte) = op1->start 8b/copy 0/mod/indirect 1/rm32/ecx . . . 3/r32/ebx . . # copy *ecx to ebx @@ -2037,7 +2037,7 @@ $emit-opcodes:op1: 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL # . if (c == '#') return 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-opcodes:end/disp32 + 0f 84/jump-if-= $emit-opcodes:end/disp32 # op1 = next-token-from-slice(op1->start, op1->end, '/') # . . push args 51/push-ecx @@ -2075,7 +2075,7 @@ $emit-opcodes:op1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) goto op2 3d/compare-eax-and 0/imm32/false - 75/jump-if-not-equal $emit-opcodes:op2/disp8 + 75/jump-if-!= $emit-opcodes:op2/disp8 # if (slice-equal?(op1, "f2")) goto op2 # . eax = slice-equal?(op1, "f2") # . . push args @@ -2087,7 +2087,7 @@ $emit-opcodes:op1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) goto op2 3d/compare-eax-and 0/imm32/false - 75/jump-if-not-equal $emit-opcodes:op2/disp8 + 75/jump-if-!= $emit-opcodes:op2/disp8 # if (slice-equal?(op1, "f3")) goto op2 # . eax = slice-equal?(op1, "f3") # . . push args @@ -2099,7 +2099,7 @@ $emit-opcodes:op1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) goto op2 3d/compare-eax-and 0/imm32/false - 75/jump-if-not-equal $emit-opcodes:op2/disp8 + 75/jump-if-!= $emit-opcodes:op2/disp8 # otherwise return e9/jump $emit-opcodes:end/disp32 $emit-opcodes:op2: @@ -2121,7 +2121,7 @@ $emit-opcodes:op2: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) return 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 + 0f 85/jump-if-!= $emit-opcodes:end/disp32 # if (slice-starts-with?(op2, "#")) return # . var start/ebx : (addr byte) = op2->start 8b/copy 0/mod/indirect 2/rm32/edx . . . 3/r32/ebx . . # copy *edx to ebx @@ -2130,7 +2130,7 @@ $emit-opcodes:op2: 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL # . if (c == '#') return 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-opcodes:end/disp32 + 0f 84/jump-if-= $emit-opcodes:end/disp32 # op2 = next-token-from-slice(op2->start, op2->end, '/') # . . push args 52/push-edx @@ -2168,7 +2168,7 @@ $emit-opcodes:op2: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) return 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 + 0f 85/jump-if-!= $emit-opcodes:end/disp32 # if (!slice-equal?(op2, "0f")) return # . eax = slice-equal?(op2, "0f") # . . push args @@ -2180,7 +2180,7 @@ $emit-opcodes:op2: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) return 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $emit-opcodes:end/disp32 + 0f 84/jump-if-= $emit-opcodes:end/disp32 $emit-opcodes:op3: # next-word(line, op3) # reuse op2/edx # . . push args @@ -2200,7 +2200,7 @@ $emit-opcodes:op3: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) return 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-opcodes:end/disp32 + 0f 85/jump-if-!= $emit-opcodes:end/disp32 # if (slice-starts-with?(op3, "#")) return # . var start/ebx : (addr byte) = op2->start 8b/copy 0/mod/indirect 2/rm32/edx . . . 3/r32/ebx . . # copy *edx to ebx @@ -2209,7 +2209,7 @@ $emit-opcodes:op3: 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL # . if (c == '#') return 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-opcodes:end/disp32 + 0f 84/jump-if-= $emit-opcodes:end/disp32 # op3 = next-token-from-slice(op3->start, op3->end, '/') # . . push args 52/push-edx @@ -2397,7 +2397,7 @@ $emit-modrm:check0: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) pass through 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-modrm:break/disp32 + 0f 85/jump-if-!= $emit-modrm:break/disp32 $emit-modrm:check1: # if (slice-starts-with?(word-slice, "#")) break # . spill edx @@ -2411,7 +2411,7 @@ $emit-modrm:check1: 5a/pop-to-edx # . if (c == '#') pass through 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-modrm:break/disp32 + 0f 84/jump-if-= $emit-modrm:break/disp32 $emit-modrm:check-for-mod: # if (has-metadata?(word-slice, "mod")) # . eax = has-metadata?(ecx, "mod") @@ -2424,7 +2424,7 @@ $emit-modrm:check-for-mod: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-modrm:check-for-rm32/disp8 + 74/jump-if-= $emit-modrm:check-for-rm32/disp8 $emit-modrm:mod: # mod = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) # . eax = parse-datum-of-word(word-slice) @@ -2452,7 +2452,7 @@ $emit-modrm:check-for-rm32: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-modrm:check-for-r32/disp8 + 74/jump-if-= $emit-modrm:check-for-r32/disp8 $emit-modrm:rm32: # rm32 = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) # . eax = parse-datum-of-word(word-slice) @@ -2480,7 +2480,7 @@ $emit-modrm:check-for-r32: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-modrm:check-for-subop/disp8 + 74/jump-if-= $emit-modrm:check-for-subop/disp8 $emit-modrm:r32: # r32 = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) # . eax = parse-datum-of-word(word-slice) @@ -2508,7 +2508,7 @@ $emit-modrm:check-for-subop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) loop 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $emit-modrm:loop/disp32 + 0f 84/jump-if-= $emit-modrm:loop/disp32 $emit-modrm:subop: # r32 = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) # . eax = parse-datum-of-word(word-slice) @@ -2527,7 +2527,7 @@ $emit-modrm:subop: $emit-modrm:break: # if (!has-modrm?) return 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32/false # compare edx - 74/jump-if-equal $emit-modrm:end/disp8 + 74/jump-if-= $emit-modrm:end/disp8 $emit-modrm:calculate: # var modrm/ebx : byte = mod & 0b11 81 4/subop/and 3/mod/direct 3/rm32/ebx . . . . . 3/imm32/0b11 # bitwise and of ebx @@ -2706,7 +2706,7 @@ $emit-sib:check0: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) pass through 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-sib:break/disp32 + 0f 85/jump-if-!= $emit-sib:break/disp32 $emit-sib:check1: # if (slice-starts-with?(word-slice, "#")) break # . spill edx @@ -2720,7 +2720,7 @@ $emit-sib:check1: 5a/pop-to-edx # . if (c == '#') pass through 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-sib:break/disp32 + 0f 84/jump-if-= $emit-sib:break/disp32 $emit-sib:check-for-scale: # if (has-metadata?(word-slice, "scale")) # . eax = has-metadata?(ecx, "scale") @@ -2733,7 +2733,7 @@ $emit-sib:check-for-scale: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-sib:check-for-base/disp8 + 74/jump-if-= $emit-sib:check-for-base/disp8 $emit-sib:scale: # scale = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) # . eax = parse-datum-of-word(word-slice) @@ -2761,7 +2761,7 @@ $emit-sib:check-for-base: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-sib:check-for-index/disp8 + 74/jump-if-= $emit-sib:check-for-index/disp8 $emit-sib:base: # base = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) # . eax = parse-datum-of-word(word-slice) @@ -2789,7 +2789,7 @@ $emit-sib:check-for-index: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) loop 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $emit-sib:loop/disp32 + 0f 84/jump-if-= $emit-sib:loop/disp32 $emit-sib:index: # index = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) # . eax = parse-datum-of-word(word-slice) @@ -2808,7 +2808,7 @@ $emit-sib:index: $emit-sib:break: # if (!has-sib?) return 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32/false # compare edx - 74/jump-if-equal $emit-sib:end/disp8 + 74/jump-if-= $emit-sib:end/disp8 $emit-sib:calculate: # var sib/ebx : byte = scale & 0b11 81 4/subop/and 3/mod/direct 3/rm32/ebx . . . . . 3/imm32/0b11 # bitwise and of ebx @@ -2969,7 +2969,7 @@ $emit-disp:check0: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) pass through 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-disp:break/disp32 + 0f 85/jump-if-!= $emit-disp:break/disp32 $emit-disp:check1: # if (slice-starts-with?(word-slice, "#")) break # . var start/edx : (addr byte) = word-slice->start @@ -2979,7 +2979,7 @@ $emit-disp:check1: 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL # . if (c == '#') break 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-disp:break/disp32 + 0f 84/jump-if-= $emit-disp:break/disp32 $emit-disp:check-for-disp32: # if (has-metadata?(word-slice, "disp32")) # . eax = has-metadata?(ecx, "disp32") @@ -2992,7 +2992,7 @@ $emit-disp:check-for-disp32: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-disp:check-for-disp16/disp8 + 74/jump-if-= $emit-disp:check-for-disp16/disp8 $emit-disp:disp32: # emit(out, word-slice, 4) # . . push args @@ -3017,7 +3017,7 @@ $emit-disp:check-for-disp16: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-disp:check-for-disp8/disp8 + 74/jump-if-= $emit-disp:check-for-disp8/disp8 $emit-disp:disp16: # emit(out, word-slice, 2) # . . push args @@ -3042,7 +3042,7 @@ $emit-disp:check-for-disp8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) loop 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $emit-disp:loop/disp32 + 0f 84/jump-if-= $emit-disp:loop/disp32 $emit-disp:disp8: # emit(out, word-slice, 1) # . . push args @@ -3188,7 +3188,7 @@ $emit-imm:check0: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) pass through 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-imm:break/disp32 + 0f 85/jump-if-!= $emit-imm:break/disp32 $emit-imm:check1: # if (slice-starts-with?(word-slice, "#")) break # . var start/edx : (addr byte) = slice->start @@ -3198,7 +3198,7 @@ $emit-imm:check1: 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL # . if (c == '#') break 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-imm:break/disp32 + 0f 84/jump-if-= $emit-imm:break/disp32 $emit-imm:check-for-imm32: # if (has-metadata?(word-slice, "imm32")) # . eax = has-metadata?(ecx, "imm32") @@ -3211,7 +3211,7 @@ $emit-imm:check-for-imm32: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-imm:check-for-imm16/disp8 + 74/jump-if-= $emit-imm:check-for-imm16/disp8 $emit-imm:imm32: # emit(out, word-slice, 4) # . . push args @@ -3236,7 +3236,7 @@ $emit-imm:check-for-imm16: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-imm:check-for-imm8/disp8 + 74/jump-if-= $emit-imm:check-for-imm8/disp8 $emit-imm:imm16: # emit(out, word-slice, 2) # . . push args @@ -3261,7 +3261,7 @@ $emit-imm:check-for-imm8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) loop 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $emit-imm:loop/disp32 + 0f 84/jump-if-= $emit-imm:loop/disp32 $emit-imm:imm8: # emit(out, word-slice, 1) # . . push args diff --git a/apps/sigils.subx b/apps/sigils.subx index c1374c60..fd0bc649 100644 --- a/apps/sigils.subx +++ b/apps/sigils.subx @@ -68,7 +68,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto interactive 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $subx-sigils-main:interactive/disp8 + 7e/jump-if-<= $subx-sigils-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto interactive # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -80,7 +80,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto interactive 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-sigils-main:interactive/disp8 + 74/jump-if-= $subx-sigils-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -170,7 +170,7 @@ $subx-sigils:line-loop: $subx-sigils:check0: # if (line->write == 0) break 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 0f 84/jump-if-equal $subx-sigils:break/disp32 + 0f 84/jump-if-= $subx-sigils:break/disp32 $subx-sigils:word-loop: # next-word-or-expression(line, word-slice) # . . push args @@ -191,7 +191,7 @@ $subx-sigils:check1: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $subx-sigils:next-line/disp32 + 0f 85/jump-if-!= $subx-sigils:next-line/disp32 $subx-sigils:check-for-comment: # if (slice-starts-with?(word-slice, "#")) continue # . start/ebx = word-slice->start @@ -201,11 +201,11 @@ $subx-sigils:check-for-comment: 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL # . if (eax == '#') continue 3d/compare-eax-and 0x23/imm32/hash - 74/jump-if-equal $subx-sigils:word-loop/disp8 + 74/jump-if-= $subx-sigils:word-loop/disp8 $subx-sigils:check-for-direct-mode: # if (!slice-starts-with?(word-slice, "%")) goto next check 3d/compare-eax-and 0x25/imm32/percent - 75/jump-if-not-equal $subx-sigils:check-for-indirect-mode/disp8 + 75/jump-if-!= $subx-sigils:check-for-indirect-mode/disp8 $subx-sigils:direct-mode: #? # dump word-slice {{{ #? # . write(2/stderr, "w: ") @@ -260,7 +260,7 @@ $subx-sigils:direct-mode: $subx-sigils:check-for-indirect-mode: # if (!slice-starts-with?(word-slice, "*")) goto next check 3d/compare-eax-and 0x2a/imm32/asterisk - 75/jump-if-not-equal $subx-sigils:check-for-invalid-addition/disp8 + 75/jump-if-!= $subx-sigils:check-for-invalid-addition/disp8 # if (!disp32-mode?(word-slice)) goto indirect mode # . eax = disp32-mode?(word-slice) # . . push args @@ -271,7 +271,7 @@ $subx-sigils:check-for-indirect-mode: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) goto indirect mode 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-sigils:indirect-mode/disp8 + 74/jump-if-= $subx-sigils:indirect-mode/disp8 $subx-sigils:disp32-mode: # emit-indirect-mode(out, word-slice) # . . push args @@ -317,11 +317,11 @@ $subx-sigils:indirect-mode: $subx-sigils:check-for-invalid-addition: # if (slice-starts-with?(word-slice, "+")) goto error1 3d/compare-eax-and 0x2b/imm32/plus - 74/jump-if-equal $subx-sigils:error1/disp8 + 74/jump-if-= $subx-sigils:error1/disp8 $subx-sigils:check-for-invalid-left-shift: # if (slice-starts-with?(word-slice, "<")) goto error1 3d/compare-eax-and 0x3c/imm32/less-than - 74/jump-if-equal $subx-sigils:error1/disp8 + 74/jump-if-= $subx-sigils:error1/disp8 $subx-sigils:regular-word: # write-slice-buffered(out, word-slice) # . . push args @@ -1652,7 +1652,7 @@ $next-word-or-expression:check0: 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # copy *(esi+4) to ecx # . if (ecx < line->write) goto next check 3b/compare 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # compare ecx with *esi - 7c/jump-if-lesser $next-word-or-expression:check-for-comment/disp8 + 7c/jump-if-< $next-word-or-expression:check-for-comment/disp8 # . return out = {0, 0} c7 0/subop/copy 0/mod/direct 7/rm32/edi . . . . . 0/imm32 # copy to *edi c7 0/subop/copy 1/mod/*+disp8 7/rm32/edi . . . . 4/disp8 0/imm32 # copy to *(edi+4) @@ -1667,7 +1667,7 @@ $next-word-or-expression:check-for-comment: 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 # . if (eax != '#') goto next check 3d/compare-eax-and 0x23/imm32/pound - 75/jump-if-not-equal $next-word-or-expression:check-for-string-literal/disp8 + 75/jump-if-!= $next-word-or-expression:check-for-string-literal/disp8 $next-word-or-expression:comment: # out->end = &line->data[line->write] 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax @@ -1681,7 +1681,7 @@ $next-word-or-expression:comment: $next-word-or-expression:check-for-string-literal: # if (line->data[line->read] != '"') goto next check 3d/compare-eax-and 0x22/imm32/dquote - 75/jump-if-not-equal $next-word-or-expression:check-for-expression/disp8 + 75/jump-if-!= $next-word-or-expression:check-for-expression/disp8 $next-word-or-expression:string-literal: # skip-string(line) # . . push args @@ -1695,14 +1695,14 @@ $next-word-or-expression:string-literal: $next-word-or-expression:check-for-expression: # if (line->data[line->read] != '*') goto next check 3d/compare-eax-and 0x2a/imm32/asterisk - 75/jump-if-not-equal $next-word-or-expression:regular-word/disp8 + 75/jump-if-!= $next-word-or-expression:regular-word/disp8 # if (line->data[line->read + 1] == ' ') goto error1 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 3d/compare-eax-and 0x20/imm32/space - 74/jump-if-equal $next-word-or-expression:error1/disp8 + 74/jump-if-= $next-word-or-expression:error1/disp8 # if (line->data[line->read + 1] != '(') goto regular word 3d/compare-eax-and 0x28/imm32/open-paren - 75/jump-if-not-equal $next-word-or-expression:regular-word/disp8 + 75/jump-if-!= $next-word-or-expression:regular-word/disp8 $next-word-or-expression:paren: # skip-until-close-paren(line) # . . push args @@ -1717,7 +1717,7 @@ $next-word-or-expression:paren: 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 # . if (eax != ')') goto error2 3d/compare-eax-and 0x29/imm32/close-paren - 75/jump-if-not-equal $next-word-or-expression:error2/disp8 + 75/jump-if-!= $next-word-or-expression:error2/disp8 # skip ')' ff 0/subop/increment 1/mod/*+disp8 6/rm32/esi . . . . 4/disp8 . # increment *(esi+4) # fall through @@ -2269,7 +2269,7 @@ $parse-effective-address:check-for-simple-register: 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3d/compare-eax-and 0x28/imm32/open-paren - 74/jump-if-equal $parse-effective-address:compound-expression/disp8 + 74/jump-if-= $parse-effective-address:compound-expression/disp8 $parse-effective-address:simple-register: # local-slice = next-token-from-slice(local-slice->start, local-slice->end, "/") # . . push args @@ -2335,13 +2335,13 @@ $parse-effective-address:compound-expression: 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3d/compare-eax-and 0x29/imm32/close-paren - 0f 84/jump-if-equal $parse-effective-address:end/disp32 + 0f 84/jump-if-= $parse-effective-address:end/disp32 # if (*local-slice->start == '-') goto displacement 3d/compare-eax-and 0x2d/imm32/minus - 0f 84/jump-if-equal $parse-effective-address:displacement/disp32 + 0f 84/jump-if-= $parse-effective-address:displacement/disp32 # if (*local-slice->start != '+') goto error1 3d/compare-eax-and 0x2b/imm32/plus - 0f 85/jump-if-not-equal $parse-effective-address:error1/disp32 + 0f 85/jump-if-!= $parse-effective-address:error1/disp32 $parse-effective-address:check-for-index: # ++local-slice->start to skip '+' ff 0/subop/increment 0/mod/indirect 6/rm32/esi . . . . . . # increment *esi @@ -2385,7 +2385,7 @@ $parse-effective-address:resolve-ambiguity: 59/pop-to-ecx # . if (eax == 0) goto displacement 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal $parse-effective-address:displacement/disp32 + 0f 84/jump-if-= $parse-effective-address:displacement/disp32 $parse-effective-address:index: # read register into index # . eax = next-register(local-slice) @@ -2412,11 +2412,11 @@ $parse-effective-address:index: 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3d/compare-eax-and 0x29/imm32/close-paren - 0f 84/jump-if-equal $parse-effective-address:end/disp32 + 0f 84/jump-if-= $parse-effective-address:end/disp32 $parse-effective-address:check-for-scale: # if (*local-slice->start != '<') goto next check 3d/compare-eax-and 0x3c/imm32/less-than - 75/jump-if-not-equal $parse-effective-address:check-for-displacement/disp8 + 75/jump-if-!= $parse-effective-address:check-for-displacement/disp8 # ++local-slice->start to skip '<' ff 0/subop/increment 0/mod/indirect 6/rm32/esi . . . . . . # increment *esi # if (*local-slice->start != '<') goto error2 @@ -2424,7 +2424,7 @@ $parse-effective-address:check-for-scale: 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3d/compare-eax-and 0x3c/imm32/less-than - 0f 85/jump-if-not-equal $parse-effective-address:error2/disp32 + 0f 85/jump-if-!= $parse-effective-address:error2/disp32 # ++local-slice->start to skip '<' ff 0/subop/increment 0/mod/indirect 6/rm32/esi . . . . . . # increment *esi # skip whitespace @@ -2464,13 +2464,13 @@ $parse-effective-address:scale: 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3d/compare-eax-and 0x29/imm32/close-paren - 74/jump-if-equal $parse-effective-address:end/disp8 + 74/jump-if-= $parse-effective-address:end/disp8 $parse-effective-address:check-for-displacement: # if (*local-slice->start not in '+' '-') goto error3 3d/compare-eax-and 0x2b/imm32/plus - 74/jump-if-equal $parse-effective-address:displacement/disp8 + 74/jump-if-= $parse-effective-address:displacement/disp8 3d/compare-eax-and 0x2d/imm32/minus - 74/jump-if-equal $parse-effective-address:displacement/disp8 + 74/jump-if-= $parse-effective-address:displacement/disp8 e9/jump $parse-effective-address:error3/disp32 $parse-effective-address:displacement: # read integer into disp @@ -2498,7 +2498,7 @@ $parse-effective-address:displacement: 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3d/compare-eax-and 0x29/imm32/close-paren - 0f 85/jump-if-not-equal $parse-effective-address:error4/disp32 + 0f 85/jump-if-!= $parse-effective-address:error4/disp32 $parse-effective-address:end: # return base in eax 89/copy 3/mod/direct 0/rm32/eax . . . 7/r32/edi . . # copy edi to eax @@ -3156,15 +3156,15 @@ emit-indirect-mode: # out : (addr buffered-file), base : int, index : int, scal $emit-indirect-mode:check-for-ebp: # if (base == 5) goto emit-sib 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 5/imm32 # compare *(ebp+12) - 74/jump-if-equal $emit-indirect-mode:emit-sib/disp8 + 74/jump-if-= $emit-indirect-mode:emit-sib/disp8 $emit-indirect-mode:check-for-esp: # if (base == 4) goto emit-sib 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 4/imm32 # compare *(ebp+12) - 74/jump-if-equal $emit-indirect-mode:emit-sib/disp8 + 74/jump-if-= $emit-indirect-mode:emit-sib/disp8 $emit-indirect-mode:check-for-sib: # if (index == 4/none) goto next check 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 4/imm32 # compare *(ebp+16) - 0f 84/jump-if-equal $emit-indirect-mode:check-for-disp/disp32 + 0f 84/jump-if-= $emit-indirect-mode:check-for-disp/disp32 $emit-indirect-mode:emit-sib: # emit(out, "2/mod/indirect 4/rm32/sib " base "/base " index "/index " scale "/scale " disp "/disp32") # . write-buffered(out, "2/mod/*+disp32 4/rm32/sib ") @@ -3243,7 +3243,7 @@ $emit-indirect-mode:emit-sib: $emit-indirect-mode:check-for-disp: # if (disp == 0) goto next check 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0x18/disp8 0/imm32 # compare *(ebp+24) - 74/jump-if-equal $emit-indirect-mode:emit-indirect/disp8 + 74/jump-if-= $emit-indirect-mode:emit-indirect/disp8 $emit-indirect-mode:emit-disp: # emit(out, "2/mod/*+disp32 " base "/rm32 " disp "/disp32") # . write-buffered(out, "2/mod/*+disp32 ") @@ -3877,7 +3877,7 @@ disp32-mode?: # in : (addr slice) -> reg/eax : boolean 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 0/r32/AL . . # copy byte at *eax to AL 81 4/subop/and 3/mod/direct 0/rm32/eax . . . . . 0xff/imm32 # bitwise and of eax 3d/compare-eax-and 0x28/imm32/open-paren - 74/jump-if-equal $disp32-mode?:false/disp8 + 74/jump-if-= $disp32-mode?:false/disp8 $disp32-mode?:check-for-register: # local-slice = next-token-from-slice(local-slice->start, local-slice->end, "/") # . . push args @@ -3900,7 +3900,7 @@ $disp32-mode?:check-for-register: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # if (eax != 0) return false 3d/compare-eax-and 0/imm32 - 75/jump-if-not-equal $disp32-mode?:false/disp8 + 75/jump-if-!= $disp32-mode?:false/disp8 # return true b8/copy-to-eax 1/imm32/true eb/jump $disp32-mode?:end/disp8 @@ -3993,14 +3993,14 @@ next-hex-int: # in : (addr slice) -> result/eax $next-hex-int:positive: # if (*curr == '+') ++curr 3d/compare-eax-and 0x2b/imm32/+ - 75/jump-if-not-equal $next-hex-int:negative/disp8 + 75/jump-if-!= $next-hex-int:negative/disp8 # . ++curr 41/increment-ecx eb/jump $next-hex-int:skip-whitespace/disp8 $next-hex-int:negative: # else if (*curr == '-') ++curr, negate = true 3d/compare-eax-and 0x2d/imm32/- - 75/jump-if-not-equal $next-hex-int:skip-whitespace/disp8 + 75/jump-if-!= $next-hex-int:skip-whitespace/disp8 $next-hex-int:need-to-negate: # . ++curr 41/increment-ecx @@ -4027,24 +4027,24 @@ $next-hex-int:initial-0: # . if (*curr != '0') jump to loop 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x30/imm32/0 - 75/jump-if-not-equal $next-hex-int:loop/disp8 + 75/jump-if-!= $next-hex-int:loop/disp8 # . ++curr 41/increment-ecx $next-hex-int:initial-0x: # . if (curr >= in->end) return result 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $next-hex-int:end/disp8 + 73/jump-if-addr>= $next-hex-int:end/disp8 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x78/imm32/x - 75/jump-if-not-equal $next-hex-int:loop/disp8 + 75/jump-if-!= $next-hex-int:loop/disp8 # . ++curr 41/increment-ecx $next-hex-int:loop: # if (curr >= in->end) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $next-hex-int:break/disp8 + 73/jump-if-addr>= $next-hex-int:break/disp8 # if (!is-hex-digit?(*curr)) break # . eax = *curr 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -4057,7 +4057,7 @@ $next-hex-int:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) break 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $next-hex-int:break/disp8 + 74/jump-if-= $next-hex-int:break/disp8 # eax = from-hex-char(*curr) # . . copy arg to eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -4073,7 +4073,7 @@ $next-hex-int:loop: $next-hex-int:break: # if (negate?) result = -result 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32/false # compare ebx - 74/jump-if-equal $next-hex-int:end/disp8 + 74/jump-if-= $next-hex-int:end/disp8 $next-hex-int:negate: f7 3/subop/negate 3/mod/direct 7/rm32/edi . . . . . . # negate edi $next-hex-int:end: @@ -4410,24 +4410,24 @@ $next-positive-hex-int:initial-0: # . if (*curr != '0') jump to loop 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x30/imm32/0 - 75/jump-if-not-equal $next-positive-hex-int:loop/disp8 + 75/jump-if-!= $next-positive-hex-int:loop/disp8 # . ++curr 41/increment-ecx $next-positive-hex-int:initial-0x: # . if (curr >= in->end) return result 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $next-positive-hex-int:end/disp8 + 73/jump-if-addr>= $next-positive-hex-int:end/disp8 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 3d/compare-eax-and 0x78/imm32/x - 75/jump-if-not-equal $next-positive-hex-int:loop/disp8 + 75/jump-if-!= $next-positive-hex-int:loop/disp8 # . ++curr 41/increment-ecx $next-positive-hex-int:loop: # if (curr >= in->end) break 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 73/jump-if-greater-or-equal-unsigned $next-positive-hex-int:end/disp8 + 73/jump-if-addr>= $next-positive-hex-int:end/disp8 # if (!is-hex-digit?(*curr)) break # . eax = *curr 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -4440,7 +4440,7 @@ $next-positive-hex-int:loop: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) break 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $next-positive-hex-int:end/disp8 + 74/jump-if-= $next-positive-hex-int:end/disp8 # eax = from-hex-char(*curr) # . . copy arg to eax 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL diff --git a/apps/survey.subx b/apps/survey.subx index caedc77a..7ee97d3d 100644 --- a/apps/survey.subx +++ b/apps/survey.subx @@ -64,7 +64,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto interactive 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $subx-survey-main:interactive/disp8 + 7e/jump-if-<= $subx-survey-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto interactive # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -76,7 +76,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto interactive 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-survey-main:interactive/disp8 + 74/jump-if-= $subx-survey-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -709,7 +709,7 @@ $compute-offsets:line-loop: # if (line->write == 0) break 8b/copy 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . . # copy *ecx to eax 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal $compute-offsets:break-line-loop/disp32 + 0f 84/jump-if-= $compute-offsets:break-line-loop/disp32 #? # dump line {{{ #? # . write(2/stderr, "LL: ") #? # . . push args @@ -793,7 +793,7 @@ $compute-offsets:word-loop: #? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # . if (curr-segment-name == 0) print curr-segment-name #? 81 7/subop/compare 3/mod/direct 6/rm32/esi . . . . . 0/imm32 # compare esi -#? 74/jump-if-equal $compute-offsets:case-empty/disp8 +#? 74/jump-if-= $compute-offsets:case-empty/disp8 #? # . write(2/stderr, "segment at start of word: ") #? # . . push args #? 68/push "segment at start of word: "/imm32 @@ -835,7 +835,7 @@ $compute-offsets:case-empty: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $compute-offsets:line-loop/disp32 + 0f 85/jump-if-!= $compute-offsets:line-loop/disp32 $compute-offsets:case-comment: # if slice-starts-with?(word-slice, "#") continue 68/push "#"/imm32 @@ -845,7 +845,7 @@ $compute-offsets:case-comment: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $compute-offsets:line-loop/disp32 + 0f 85/jump-if-!= $compute-offsets:line-loop/disp32 $compute-offsets:case-segment-header: # if (!slice-equal?(word-slice/edx, "==")) goto next case # . eax = slice-equal?(word-slice/edx, "==") @@ -856,10 +856,10 @@ $compute-offsets:case-segment-header: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next case 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $compute-offsets:case-label/disp32 + 0f 84/jump-if-= $compute-offsets:case-label/disp32 # if (curr-segment-name == 0) goto construct-next-segment 81 7/subop/compare 3/mod/direct 6/rm32/esi . . . . . 0/imm32 # compare esi - 74/jump-if-equal $compute-offsets:construct-next-segment/disp8 + 74/jump-if-= $compute-offsets:construct-next-segment/disp8 # seg/eax = get-or-insert(segments, curr-segment-name, row-size=16) # . . push args 68/push 0x10/imm32/row-size @@ -903,7 +903,7 @@ $compute-offsets:construct-next-segment: #? # dump curr-segment-name if not null (clobbering eax) {{{ #? # . if (curr-segment-name == 0) goto update-curr-segment-name #? 81 7/subop/compare 3/mod/direct 6/rm32/esi . . . . . 0/imm32 # compare esi -#? 74/jump-if-equal $compute-offsets:update-curr-segment-name/disp8 +#? 74/jump-if-= $compute-offsets:update-curr-segment-name/disp8 #? # . write(2/stderr, "setting segment to: ") #? # . . push args #? 68/push "setting segment to: "/imm32 @@ -960,7 +960,7 @@ $compute-offsets:update-curr-segment-name: # if empty?(curr-segment-name) abort # . if (eax == 0) abort 3d/compare-eax-and 0/imm32 - 0f 84/jump-if-equal $compute-offsets:abort/disp32 + 0f 84/jump-if-= $compute-offsets:abort/disp32 # next-word(line, segment-tmp) 68/push compute-offsets:segment-tmp/imm32 51/push-ecx @@ -975,7 +975,7 @@ $compute-offsets:update-curr-segment-name: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) abort 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $compute-offsets:abort/disp32 + 0f 85/jump-if-!= $compute-offsets:abort/disp32 # seg/ebx = get-or-insert(segments, curr-segment-name, row-size=16) # . . push args 68/push 0x10/imm32/row-size @@ -1024,7 +1024,7 @@ $compute-offsets:case-label: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) goto next case 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $compute-offsets:case-default/disp8 + 74/jump-if-= $compute-offsets:case-default/disp8 # strip trailing ':' from word-slice ff 1/subop/decrement 1/mod/*+disp8 2/rm32/edx . . . . 4/disp8 . # decrement *(edx+4) # x/eax = leaky-get-or-insert-slice(labels, word-slice, row-size=16) @@ -1428,7 +1428,7 @@ compute-addresses: # segments : (addr stream {string, segment-info}), labels : $compute-addresses:segment-loop: # if (srow >= max) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 73/jump-if-greater-or-equal-unsigned $compute-addresses:segment-break/disp8 + 73/jump-if-addr>= $compute-addresses:segment-break/disp8 # srow->file-offset += starting-offset 01/add 1/mod/*+disp8 0/rm32/eax . . . 7/r32/edi 8/disp8 . # add edi to *(eax+8) # clear last 12 bits of srow->address for p_align=0x1000 @@ -1495,7 +1495,7 @@ $compute-addresses:segment-break: $compute-addresses:label-loop: # if (lrow >= max) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 0f 83/jump-if-greater-or-equal-unsigned $compute-addresses:end/disp32 + 0f 83/jump-if-addr>= $compute-addresses:end/disp32 #? # dump lrow->key {{{ #? # . write(2/stderr, "label: ") #? # . . push args @@ -2055,7 +2055,7 @@ $emit-segments:line-loop: $emit-segments:check-for-end-of-input: # if (line->write == 0) break 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 0f 84/jump-if-equal $emit-segments:end/disp32 + 0f 84/jump-if-= $emit-segments:end/disp32 # offset-of-next-instruction += num-bytes(line) # . eax = num-bytes(line) # . . push args @@ -2119,7 +2119,7 @@ $emit-segments:check-for-end-of-line: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != 0) break 3d/compare-eax-and 0/imm32 - 0f 85/jump-if-not-equal $emit-segments:next-line/disp32 + 0f 85/jump-if-!= $emit-segments:next-line/disp32 $emit-segments:check-for-comment: # if (slice-starts-with?(word-slice, "#")) break # . start/esi = word-slice->start @@ -2129,7 +2129,7 @@ $emit-segments:check-for-comment: 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL # . if (eax == '#') break 3d/compare-eax-and 0x23/imm32/hash - 0f 84/jump-if-equal $emit-segments:next-line/disp32 + 0f 84/jump-if-= $emit-segments:next-line/disp32 $emit-segments:check-for-label: # if is-label?(word-slice) break # . eax = is-label?(word-slice) @@ -2141,7 +2141,7 @@ $emit-segments:check-for-label: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-segments:line-loop/disp32 + 0f 85/jump-if-!= $emit-segments:line-loop/disp32 $emit-segments:check-for-segment-header: # if (slice-equal?(word-slice, "==")) break # . eax = slice-equal?(word-slice, "==") @@ -2154,7 +2154,7 @@ $emit-segments:check-for-segment-header: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) break 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-segments:line-loop/disp32 + 0f 85/jump-if-!= $emit-segments:line-loop/disp32 $emit-segments:2-character: # if (length(word-slice) != 2) goto next check # . eax = length(word-slice) @@ -2162,7 +2162,7 @@ $emit-segments:2-character: 2b/subtract 0/mod/indirect 2/rm32/edx . . . 0/r32/eax . . # subtract *edx from eax # . if (eax != 2) goto next check 3d/compare-eax-and 2/imm32 - 75/jump-if-not-equal $emit-segments:check-metadata/disp8 + 75/jump-if-!= $emit-segments:check-metadata/disp8 # write-slice-buffered(out, word-slice) # . . push args 52/push-edx @@ -2277,7 +2277,7 @@ $emit-segments:check-global-variable: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) goto code label checks 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-segments:check-code-label-for-imm8/disp32 + 0f 85/jump-if-!= $emit-segments:check-code-label-for-imm8/disp32 $emit-segments:check-global-variable-for-disp8: # if has-metadata?(word-slice, "disp8") abort # . eax = has-metadata?(word-slice, "disp8") @@ -2290,7 +2290,7 @@ $emit-segments:check-global-variable-for-disp8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) abort 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-segments:global-variable-abort/disp32 + 0f 85/jump-if-!= $emit-segments:global-variable-abort/disp32 $emit-segments:check-global-variable-for-imm8: # if has-metadata?(word-slice, "imm8") abort # . eax = has-metadata?(word-slice, "imm8") @@ -2303,7 +2303,7 @@ $emit-segments:check-global-variable-for-imm8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) abort 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-segments:global-variable-abort/disp32 + 0f 85/jump-if-!= $emit-segments:global-variable-abort/disp32 $emit-segments:emit-global-variable: # emit-hex(out, info->address, 4) # . . push args @@ -2328,7 +2328,7 @@ $emit-segments:check-code-label-for-imm8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax != false) abort 3d/compare-eax-and 0/imm32/false - 0f 85/jump-if-not-equal $emit-segments:imm8-abort/disp32 + 0f 85/jump-if-!= $emit-segments:imm8-abort/disp32 $emit-segments:check-code-label-for-imm32: # if (!has-metadata?(word-slice, "imm32")) goto next check # . eax = has-metadata?(edx, "imm32") @@ -2341,7 +2341,7 @@ $emit-segments:check-code-label-for-imm32: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32 - 74/jump-if-equal $emit-segments:check-code-label-for-disp8/disp8 + 74/jump-if-= $emit-segments:check-code-label-for-disp8/disp8 #? # dump info->address {{{ #? # . write(2/stderr, "info->address: ") #? # . . push args @@ -2399,7 +2399,7 @@ $emit-segments:check-code-label-for-disp8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-segments:check-code-label-for-disp32/disp8 + 74/jump-if-= $emit-segments:check-code-label-for-disp32/disp8 $emit-segments:emit-code-label-disp8: # emit-hex(out, info->offset - offset-of-next-instruction, 1) # . . push args @@ -2426,7 +2426,7 @@ $emit-segments:check-code-label-for-disp32: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) abort 3d/compare-eax-and 0/imm32/false - 0f 84/jump-if-equal $emit-segments:abort/disp32 + 0f 84/jump-if-= $emit-segments:abort/disp32 $emit-segments:emit-code-label-disp32: # emit-hex(out, info->offset - offset-of-next-instruction, 4) # . . push args @@ -3218,7 +3218,7 @@ emit-headers: # out : (addr buffered-file), segments : (addr stream {string, se $emit-headers:loop: # if (curr-segment >= max) break 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 0f 83/jump-if-greater-or-equal-unsigned $emit-headers:end/disp32 + 0f 83/jump-if-addr>= $emit-headers:end/disp32 #? # dump curr-segment->name {{{ #? # . write(2/stderr, "about to emit ph entry: segment->name: ") #? # . . push args @@ -3433,7 +3433,7 @@ emit-elf-program-header-entry: # out : (addr buffered-file), curr-segment : (ad 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $emit-elf-program-header-entry:data/disp8 + 74/jump-if-= $emit-elf-program-header-entry:data/disp8 # *$Elf_p_flags = r-x c7 0/subop/copy 0/mod/indirect 5/rm32/.disp32 . . . $Elf_p_flags/disp32 5/imm32 # copy to *$Elf_p_flags eb/jump $emit-elf-program-header-entry:really-emit/disp8 @@ -3491,7 +3491,7 @@ stream-add4: # in : (addr stream byte), key : addr, val1 : addr, val2 : addr, v 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 # if (curr >= max) abort 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 + 73/jump-if-addr>= $stream-add4:abort/disp8 # *curr = key 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0xc/disp8 . # copy *(ebp+12) to ecx 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -3499,7 +3499,7 @@ stream-add4: # in : (addr stream byte), key : addr, val1 : addr, val2 : addr, v 05/add-to-eax 4/imm32 # if (curr >= max) abort 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 + 73/jump-if-addr>= $stream-add4:abort/disp8 # *curr = val1 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x10/disp8 . # copy *(ebp+16) to ecx 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -3507,7 +3507,7 @@ stream-add4: # in : (addr stream byte), key : addr, val1 : addr, val2 : addr, v 05/add-to-eax 4/imm32 # if (curr >= max) abort 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 + 73/jump-if-addr>= $stream-add4:abort/disp8 # *curr = val2 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x14/disp8 . # copy *(ebp+20) to ecx 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -3515,7 +3515,7 @@ stream-add4: # in : (addr stream byte), key : addr, val1 : addr, val2 : addr, v 05/add-to-eax 4/imm32 # if (curr >= max) abort 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax with edx - 73/jump-if-greater-or-equal-unsigned $stream-add4:abort/disp8 + 73/jump-if-addr>= $stream-add4:abort/disp8 # *curr = val3 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 1/r32/ecx 0x18/disp8 . # copy *(ebp+24) to ecx 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax @@ -4251,7 +4251,7 @@ $num-bytes:check0: 3d/compare-eax-and 0/imm32/false # . restore result now that ZF is set 58/pop-to-eax - 75/jump-if-not-equal $num-bytes:end/disp8 + 75/jump-if-!= $num-bytes:end/disp8 $num-bytes:check-for-comment: # if (slice-starts-with?(word-slice, "#")) break # . start/edx = word-slice->start @@ -4261,7 +4261,7 @@ $num-bytes:check-for-comment: 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 3/r32/BL . . # copy byte at *edx to BL # . if (ebx == '#') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x23/imm32/hash # compare ebx - 74/jump-if-equal $num-bytes:end/disp8 + 74/jump-if-= $num-bytes:end/disp8 $num-bytes:check-for-label: # if (slice-ends-with?(word-slice, ":")) break # . end/edx = word-slice->end @@ -4271,7 +4271,7 @@ $num-bytes:check-for-label: 8a/copy-byte 1/mod/*+disp8 2/rm32/edx . . . 3/r32/BL -1/disp8 . # copy byte at *ecx to BL # . if (ebx == ':') break 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x3a/imm32/colon # compare ebx - 74/jump-if-equal $num-bytes:end/disp8 + 74/jump-if-= $num-bytes:end/disp8 $num-bytes:check-for-segment-header: # if (slice-equal?(word-slice, "==")) break # . push result @@ -4288,7 +4288,7 @@ $num-bytes:check-for-segment-header: 3d/compare-eax-and 0/imm32/false # . restore result now that ZF is set 58/pop-to-eax - 75/jump-if-not-equal $num-bytes:end/disp8 + 75/jump-if-!= $num-bytes:end/disp8 $num-bytes:loop-body: # result += compute-width-of-slice(word-slice) # . copy result to edx diff --git a/apps/tests.subx b/apps/tests.subx index 5609be0c..118e027e 100644 --- a/apps/tests.subx +++ b/apps/tests.subx @@ -33,7 +33,7 @@ Entry: # run tests if necessary, convert stdin if not # - if argc > 1 and argv[1] == "test", then return run_tests() # if (argc <= 1) goto run-main 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 7e/jump-if-lesser-or-equal $subx-tests-main:interactive/disp8 + 7e/jump-if-<= $subx-tests-main:interactive/disp8 # if (!kernel-string-equal?(argv[1], "test")) goto run-main # . eax = kernel-string-equal?(argv[1], "test") # . . push args @@ -45,7 +45,7 @@ Entry: # run tests if necessary, convert stdin if not 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto run-main 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-tests-main:interactive/disp8 + 74/jump-if-= $subx-tests-main:interactive/disp8 # run-tests() e8/call run-tests/disp32 # syscall(exit, *Num-test-failures) @@ -160,7 +160,7 @@ $subx-gen-run-tests:loop: $subx-gen-run-tests:check0: # if (line->write == 0) break 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 0f 84/jump-if-equal $subx-gen-run-tests:break/disp32 + 0f 84/jump-if-= $subx-gen-run-tests:break/disp32 # next-word(line, word-slice) # . . push args 52/push-edx @@ -180,7 +180,7 @@ $subx-gen-run-tests:check-for-label: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . if (eax == false) continue 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-gen-run-tests:continue/disp8 + 74/jump-if-= $subx-gen-run-tests:continue/disp8 $subx-gen-run-tests:check-label-prefix: # strip trailing ':' from word-slice ff 1/subop/decrement 1/mod/*+disp8 2/rm32/edx . . . . 4/disp8 . # decrement *(edx+4) @@ -194,7 +194,7 @@ $subx-gen-run-tests:check-label-prefix: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) break 3d/compare-eax-and 0/imm32/false - 74/jump-if-equal $subx-gen-run-tests:continue/disp8 + 74/jump-if-= $subx-gen-run-tests:continue/disp8 $subx-gen-run-tests:call-test-function: # tests-found? = true bb/copy-to-ebx 1/imm32/true @@ -243,7 +243,7 @@ $subx-gen-run-tests:continue: $subx-gen-run-tests:break: # if (!tests-found?) goto end 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32/false # compare ebx - 74/jump-if-equal $subx-gen-run-tests:end/disp8 + 74/jump-if-= $subx-gen-run-tests:end/disp8 # write(new-code-segment, " c3/return\n") # . . push args 68/push " c3/return\n"/imm32 diff --git a/html/050_write.subx.html b/html/050_write.subx.html index 7a3bdae8..2369ce10 100644 --- a/html/050_write.subx.html +++ b/html/050_write.subx.html @@ -93,7 +93,7 @@ if ('onhashchange' in window) { 34 cd/syscall 0x80/imm8 35 # if (eax < 0) abort 36 3d/compare-eax-with 0/imm32 -37 0f 8c/jump-if-lesser $_write:abort/disp32 +37 0f 8c/jump-if-< $_write:abort/disp32 38 $_write:end: 39 # . restore registers 40 5b/pop-to-ebx diff --git a/html/052kernel-string-equal.subx.html b/html/052kernel-string-equal.subx.html index f7818771..ff234b34 100644 --- a/html/052kernel-string-equal.subx.html +++ b/html/052kernel-string-equal.subx.html @@ -140,17 +140,17 @@ if ('onhashchange' in window) { 78 $kernel-string-equal?:loop: 79 # if (i >= n) break 80 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 81 7d/jump-if-greater-or-equal $kernel-string-equal?:break/disp8 + 81 7d/jump-if->= $kernel-string-equal?:break/disp8 82 # c1 = *s1 83 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL 84 # c2 = *s2 85 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL 86 # if (c1 == 0) return false 87 3d/compare-eax-and 0/imm32 - 88 74/jump-if-equal $kernel-string-equal?:false/disp8 + 88 74/jump-if-= $kernel-string-equal?:false/disp8 89 # if (c1 != c2) return false 90 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 91 75/jump-if-not-equal $kernel-string-equal?:false/disp8 + 91 75/jump-if-!= $kernel-string-equal?:false/disp8 92 # ++i 93 41/increment-ecx 94 # ++s1 @@ -162,7 +162,7 @@ if ('onhashchange' in window) { 100 # return *s1 == 0 101 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 0/r32/AL . . # copy byte at *edi to AL 102 3d/compare-eax-and 0/imm32 -103 75/jump-if-not-equal $kernel-string-equal?:false/disp8 +103 75/jump-if-!= $kernel-string-equal?:false/disp8 104 $kernel-string-equal?:true: 105 b8/copy-to-eax 1/imm32 106 eb/jump $kernel-string-equal?:end/disp8 diff --git a/html/054string-equal.subx.html b/html/054string-equal.subx.html index 027d9c6c..c41c7042 100644 --- a/html/054string-equal.subx.html +++ b/html/054string-equal.subx.html @@ -112,7 +112,7 @@ if ('onhashchange' in window) { 50 $string-equal?:lengths: 51 # if (ecx != benchmark->length) return false 52 39/compare 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # compare *edi and ecx - 53 75/jump-if-not-equal $string-equal?:false/disp8 + 53 75/jump-if-!= $string-equal?:false/disp8 54 # var currs/esi : (addr byte) = s->data 55 81 0/subop/add 3/mod/direct 6/rm32/esi . . . . . 4/imm32 # add to esi 56 # var maxs/ecx : (addr byte) = &s->data[s->length] @@ -126,14 +126,14 @@ if ('onhashchange' in window) { 64 $string-equal?:loop: 65 # if (currs >= maxs) return true 66 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx - 67 73/jump-if-greater-or-equal-unsigned $string-equal?:true/disp8 + 67 73/jump-if-addr>= $string-equal?:true/disp8 68 # c1 = *currs 69 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL 70 # c2 = *currb 71 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 2/r32/DL . . # copy byte at *edi to DL 72 # if (c1 != c2) return false 73 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax and edx - 74 75/jump-if-not-equal $string-equal?:false/disp8 + 74 75/jump-if-!= $string-equal?:false/disp8 75 # ++currs 76 46/increment-esi 77 # ++currb diff --git a/html/055stream.subx.html b/html/055stream.subx.html index 154cf964..7bd7705b 100644 --- a/html/055stream.subx.html +++ b/html/055stream.subx.html @@ -94,7 +94,7 @@ if ('onhashchange' in window) { 36 $clear-stream:loop: 37 # if (curr >= max) break 38 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx -39 73/jump-if-greater-or-equal-unsigned $clear-stream:end/disp8 +39 73/jump-if-addr>= $clear-stream:end/disp8 40 # *curr = 0 41 c6 0/subop/copy-byte 0/mod/direct 0/rm32/eax . . . . . 0/imm8 # copy byte to *eax 42 # ++curr diff --git a/html/056trace.subx.html b/html/056trace.subx.html index 10bb7393..26cf8a0f 100644 --- a/html/056trace.subx.html +++ b/html/056trace.subx.html @@ -180,7 +180,7 @@ if ('onhashchange' in window) { 117 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 118 # if (eax == 0) return 119 3d/compare-eax-and 0/imm32 -120 74/jump-if-equal $trace:end/disp8 +120 74/jump-if-= $trace:end/disp8 121 # t->write += eax 122 01/add 0/mod/indirect 7/rm32/edi . . . 0/r32/eax . . # add eax to *edi 123 # refresh ecx = t->write @@ -398,7 +398,7 @@ if ('onhashchange' in window) { 335 $trace-scan:loop: 336 # if (Trace-stream->read >= Trace-stream->write) return false 337 39/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) -338 7d/jump-if-greater-or-equal $trace-scan:false/disp8 +338 7d/jump-if->= $trace-scan:false/disp8 339 # eax = next-line-matches?(Trace-stream, line) 340 # . . push args 341 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -409,7 +409,7 @@ if ('onhashchange' in window) { 346 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 347 # if (eax == false) continue 348 3d/compare-eax-and 0/imm32/false -349 74/jump-if-equal $trace-scan:continue/disp8 +349 74/jump-if-= $trace-scan:continue/disp8 350 $trace-scan:true: 351 # skip-next-line(Trace-stream) 352 # . . push args @@ -667,12 +667,12 @@ if ('onhashchange' in window) { 604 $next-line-matches?:loop: 605 # if (currl >= maxl) break 606 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi and ecx -607 73/jump-if-greater-or-equal-unsigned $next-line-matches?:break/disp8 +607 73/jump-if-addr>= $next-line-matches?:break/disp8 608 # if (currt >= maxt) return false 609 # . eax = false 610 b8/copy-to-eax 0/imm32/false 611 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . . # compare edi and edx -612 73/jump-if-greater-or-equal-unsigned $next-line-matches?:end/disp8 +612 73/jump-if-addr>= $next-line-matches?:end/disp8 613 # if (*currt != *currl) return false 614 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 615 31/xor 3/mod/direct 3/rm32/eax . . . 3/r32/eax . . # clear ebx @@ -684,7 +684,7 @@ if ('onhashchange' in window) { 621 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx 622 # . eax = false 623 b8/copy-to-eax 0/imm32/false -624 75/jump-if-not-equal $next-line-matches?:end/disp8 +624 75/jump-if-!= $next-line-matches?:end/disp8 625 # ++currt 626 47/increment-edi 627 # ++currl @@ -698,7 +698,7 @@ if ('onhashchange' in window) { 635 3d/compare-eax-and 0xa/imm32/newline 636 # . eax = false 637 b8/copy-to-eax 1/imm32/true -638 74/jump-if-equal $next-line-matches?:end/disp8 +638 74/jump-if-= $next-line-matches?:end/disp8 639 b8/copy-to-eax 0/imm32/true 640 $next-line-matches?:end: 641 # . restore registers @@ -834,14 +834,14 @@ if ('onhashchange' in window) { 771 $skip-next-line:loop: 772 # if (curr >= max) break 773 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx and ebx -774 73/jump-if-greater-or-equal-unsigned $skip-next-line:end/disp8 +774 73/jump-if-addr>= $skip-next-line:end/disp8 775 # ++i 776 42/increment-edx 777 # if (*curr == '\n') break 778 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 779 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/eax . . # copy *ecx to eax 780 3d/compare-eax-and 0a/imm32/newline -781 74/jump-if-equal $skip-next-line:end/disp8 +781 74/jump-if-= $skip-next-line:end/disp8 782 # ++curr 783 41/increment-ecx 784 # loop @@ -980,10 +980,10 @@ if ('onhashchange' in window) { 917 $_append-4:loop: 918 # if (in >= inend) break 919 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx -920 73/jump-if-greater-or-equal-unsigned $_append-4:end/disp8 +920 73/jump-if-addr>= $_append-4:end/disp8 921 # if (out >= outend) abort # just to catch test failures fast 922 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . . # compare edi with edx -923 73/jump-if-greater-or-equal-unsigned $_append-4:abort/disp8 +923 73/jump-if-addr>= $_append-4:abort/disp8 924 # *out = *in 925 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL 926 88/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . . # copy byte at BL to *edi diff --git a/html/057write.subx.html b/html/057write.subx.html index 5cbcd69a..d890be19 100644 --- a/html/057write.subx.html +++ b/html/057write.subx.html @@ -87,7 +87,7 @@ if ('onhashchange' in window) { 27 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp 28 # if (f < 0x08000000) _write(f, s) and return # f can't be a user-mode address, so treat it as a kernel file descriptor 29 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x08000000/imm32 # compare *(ebp+8) - 30 73/jump-if-greater-unsigned-or-equal $write:fake/disp8 + 30 73/jump-if-addr>= $write:fake/disp8 31 # . . push args 32 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 33 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) diff --git a/html/058stream-equal.subx.html b/html/058stream-equal.subx.html index f4e87361..231f300e 100644 --- a/html/058stream-equal.subx.html +++ b/html/058stream-equal.subx.html @@ -87,7 +87,7 @@ if ('onhashchange' in window) { 28 $stream-data-equal?:compare-lengths: 29 # if (f->write != s->length) return false 30 39/compare 0/mod/indirect 7/rm32/edi . . . 0/r32/eax . . # compare *edi and eax - 31 75/jump-if-not-equal $stream-data-equal?:false/disp8 + 31 75/jump-if-!= $stream-data-equal?:false/disp8 32 # var currs/edi : (addr byte) = s->data 33 81 0/subop/add 3/mod/direct 7/rm32/edi . . . . . 4/imm32 # add to edi 34 # var eax : byte = 0 @@ -97,14 +97,14 @@ if ('onhashchange' in window) { 38 $stream-data-equal?:loop: 39 # if (currf >= maxf) return true 40 39/compare 3/mod/direct 6/rm32/esi . . . 2/r32/edx . . # compare esi with edx - 41 73/jump-if-greater-or-equal-unsigned $stream-data-equal?:true/disp8 + 41 73/jump-if-addr>= $stream-data-equal?:true/disp8 42 # AL = *currs 43 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL 44 # CL = *curr 45 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 1/r32/CL . . # copy byte at *edi to CL 46 # if (eax != ecx) return false 47 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax and ecx - 48 75/jump-if-not-equal $stream-data-equal?:false/disp8 + 48 75/jump-if-!= $stream-data-equal?:false/disp8 49 # ++f 50 46/increment-esi 51 # ++curr @@ -346,20 +346,20 @@ if ('onhashchange' in window) { 287 $next-stream-line-equal?:loop: 288 # if (currf >= f->write) break 289 3b/compare 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # compare ecx with *esi -290 7d/jump-if-greater-or-equal $next-stream-line-equal?:break/disp8 +290 7d/jump-if->= $next-stream-line-equal?:break/disp8 291 # c1 = f->data[f->read] 292 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 293 # if (c1 == '\n') break 294 3d/compare-eax-and 0xa/imm32/newline -295 74/jump-if-equal $next-stream-line-equal?:break/disp8 +295 74/jump-if-= $next-stream-line-equal?:break/disp8 296 # if (currs >= s->length) return false 297 3b/compare 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # compare edx with *edi -298 7d/jump-if-greater-or-equal $next-stream-line-equal?:false/disp8 +298 7d/jump-if->= $next-stream-line-equal?:false/disp8 299 # c2 = s->data[currs] 300 8a/copy-byte 1/mod/*+disp8 4/rm32/sib 7/base/edi 2/index/edx . 3/r32/BL 4/disp8 . # copy byte at *(edi+edx+4) to BL 301 # if (c1 != c2) return false 302 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx -303 75/jump-if-not-equal $next-stream-line-equal?:false/disp8 +303 75/jump-if-!= $next-stream-line-equal?:false/disp8 304 # ++currf 305 41/increment-ecx 306 # ++currs @@ -370,7 +370,7 @@ if ('onhashchange' in window) { 311 41/increment-ecx 312 # if (currs >= s->length) return true 313 3b/compare 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # compare edx with *edi -314 7c/jump-if-lesser $next-stream-line-equal?:false/disp8 +314 7c/jump-if-< $next-stream-line-equal?:false/disp8 315 $next-stream-line-equal?:true: 316 b8/copy-to-eax 1/imm32 317 # persist f->read on success diff --git a/html/059stop.subx.html b/html/059stop.subx.html index 7a35e528..5493a95d 100644 --- a/html/059stop.subx.html +++ b/html/059stop.subx.html @@ -156,7 +156,7 @@ if ('onhashchange' in window) { 95 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none . 0/r32/eax 4/disp8 . # copy *(esp+4) to eax 96 # if (ed->target == 0) really exit 97 81 7/subop/compare 0/mod/indirect 0/rm32/eax . . . . . 0/imm32 # compare *eax - 98 75/jump-if-not-equal $stop:fake/disp8 + 98 75/jump-if-!= $stop:fake/disp8 99 # . syscall(exit, value) 100 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/esp 4/index/none . 3/r32/ebx 8/disp8 . # copy *(esp+8) to ebx 101 b8/copy-to-eax 1/imm32/exit diff --git a/html/060read.subx.html b/html/060read.subx.html index 1aa46769..dc314fea 100644 --- a/html/060read.subx.html +++ b/html/060read.subx.html @@ -112,7 +112,7 @@ if ('onhashchange' in window) { 51 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp 52 # if (f < 0x08000000) return _read(f, s) # f can't be a user-mode address, so treat it as a kernel file descriptor 53 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x08000000/imm32 # compare *(ebp+8) - 54 73/jump-if-greater-unsigned-or-equal $read:fake/disp8 + 54 73/jump-if-addr>= $read:fake/disp8 55 # . . push args 56 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 57 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -226,10 +226,10 @@ if ('onhashchange' in window) { 165 $_buffer-4:loop: 166 # if (in >= inend) break 167 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx -168 73/jump-if-greater-or-equal-unsigned $_buffer-4:end/disp8 +168 73/jump-if-addr>= $_buffer-4:end/disp8 169 # if (out >= outend) break # for now silently ignore filled up buffer 170 39/compare 3/mod/direct 7/rm32/edi . . . 2/r32/edx . . # compare edi with edx -171 73/jump-if-greater-or-equal-unsigned $_buffer-4:end/disp8 +171 73/jump-if-addr>= $_buffer-4:end/disp8 172 # *out = *in 173 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 3/r32/BL . . # copy byte at *esi to BL 174 88/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . . # copy byte at BL to *edi diff --git a/html/061read-byte.subx.html b/html/061read-byte.subx.html index 9416117f..0be60e25 100644 --- a/html/061read-byte.subx.html +++ b/html/061read-byte.subx.html @@ -110,7 +110,7 @@ if ('onhashchange' in window) { 48 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # copy *(esi+8) to ecx 49 # if (f->read >= f->write) populate stream from file 50 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 51 7c/jump-if-lesser $read-byte-buffered:from-stream/disp8 + 51 7c/jump-if-< $read-byte-buffered:from-stream/disp8 52 # . clear-stream(stream = f+4) 53 # . . push args 54 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy esi+4 to eax @@ -131,7 +131,7 @@ if ('onhashchange' in window) { 69 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 70 # if (eax == 0) return 0xffffffff 71 3d/compare-eax-and 0/imm32 - 72 75/jump-if-not-equal $read-byte-buffered:from-stream/disp8 + 72 75/jump-if-!= $read-byte-buffered:from-stream/disp8 73 b8/copy-to-eax 0xffffffff/imm32/Eof 74 eb/jump $read-byte-buffered:end/disp8 75 $read-byte-buffered:from-stream: diff --git a/html/062write-stream.subx.html b/html/062write-stream.subx.html index 2b32ebc1..f698d844 100644 --- a/html/062write-stream.subx.html +++ b/html/062write-stream.subx.html @@ -82,7 +82,7 @@ if ('onhashchange' in window) { 21 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp 22 # if (f < 0x08000000) _write-stream(f, s), return # f can't be a user-mode address, so treat it as a kernel file descriptor 23 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 0x08000000/imm32 # compare *(ebp+8) - 24 73/jump-if-greater-unsigned-or-equal $write-stream:fake/disp8 + 24 73/jump-if-addr>= $write-stream:fake/disp8 25 # . . push args 26 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 27 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) @@ -165,7 +165,7 @@ if ('onhashchange' in window) { 104 cd/syscall 0x80/imm8 105 # if (eax < 0) abort 106 3d/compare-eax-with 0/imm32 -107 0f 8c/jump-if-lesser $_write-stream:abort/disp32 +107 0f 8c/jump-if-< $_write-stream:abort/disp32 108 # s->read += eax 109 01/add 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # add eax to *(esi+4) 110 # . restore registers diff --git a/html/064write-byte.subx.html b/html/064write-byte.subx.html index d9e880f9..8555f857 100644 --- a/html/064write-byte.subx.html +++ b/html/064write-byte.subx.html @@ -105,7 +105,7 @@ if ('onhashchange' in window) { 43 8b/copy 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 4/disp8 . # copy *(edi+4) to ecx 44 # if (f->write >= f->length) flush and clear f's stream 45 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 0xc/disp8 . # compare ecx with *(edi+12) - 46 7c/jump-if-lesser $write-byte-buffered:to-stream/disp8 + 46 7c/jump-if-< $write-byte-buffered:to-stream/disp8 47 # . flush(f) 48 # . . push args 49 57/push-edi @@ -280,7 +280,7 @@ if ('onhashchange' in window) { 218 8b/copy 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # copy *edi to ecx 219 # if (f->write >= f->length) abort 220 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(edi+8) -221 7d/jump-if-greater-or-equal $append-byte:abort/disp8 +221 7d/jump-if->= $append-byte:abort/disp8 222 $append-byte:to-stream: 223 # write to stream 224 # f->data[f->write] = LSB(n) diff --git a/html/065write-buffered.subx.html b/html/065write-buffered.subx.html index f69708d2..de4e5509 100644 --- a/html/065write-buffered.subx.html +++ b/html/065write-buffered.subx.html @@ -113,10 +113,10 @@ if ('onhashchange' in window) { 52 $write-buffered:loop: 53 # if (in >= inend) break 54 39/compare 3/mod/direct 6/rm32/esi . . . 1/r32/ecx . . # compare esi with ecx - 55 73/jump-if-greater-or-equal-unsigned $write-buffered:loop-end/disp8 + 55 73/jump-if-addr>= $write-buffered:loop-end/disp8 56 # if (f->write >= f->length) flush and clear f's stream 57 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx with edx - 58 7c/jump-if-lesser $write-buffered:to-stream/disp8 + 58 7c/jump-if-< $write-buffered:to-stream/disp8 59 # . persist f->write 60 89/copy 1/mod/*+disp8 7/rm32/edi . . . 3/r32/ebx 4/disp8 . # copy ebx to *(edi+4) 61 # . flush(f) diff --git a/html/066print-int.subx.html b/html/066print-int.subx.html index 1c024069..3da50115 100644 --- a/html/066print-int.subx.html +++ b/html/066print-int.subx.html @@ -71,7 +71,7 @@ if ('onhashchange' in window) { 10 # no error checking; accepts argument in eax 11 # if (eax <= 9) return eax + '0' 12 3d/compare-eax-with 0x9/imm32/9 - 13 7f/jump-if-greater $to-hex-char:else/disp8 + 13 7f/jump-if-> $to-hex-char:else/disp8 14 05/add-to-eax 0x30/imm32/0 15 c3/return 16 $to-hex-char:else: @@ -267,7 +267,7 @@ if ('onhashchange' in window) { 206 $print-int32:loop: 207 # if (ecx < 0) break 208 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx -209 7c/jump-if-lesser $print-int32:end/disp8 +209 7c/jump-if-< $print-int32:end/disp8 210 # eax = n >> ecx 211 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax 212 d3/>>ecx 5/subop/pad-zeroes 3/mod/direct 0/rm32/eax . . . . . . # shift eax right by ecx bits, padding zeroes @@ -355,7 +355,7 @@ if ('onhashchange' in window) { 294 $print-int32-buffered:loop: 295 # if (ecx < 0) break 296 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx -297 7c/jump-if-lesser $print-int32-buffered:end/disp8 +297 7c/jump-if-< $print-int32-buffered:end/disp8 298 # eax = n >> ecx 299 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax 300 d3/>>ecx 5/subop/pad-zeroes 3/mod/direct 0/rm32/eax . . . . . . # shift eax right by ecx bits, padding zeroes diff --git a/html/067parse-hex.subx.html b/html/067parse-hex.subx.html index 1eefdb0a..227519e1 100644 --- a/html/067parse-hex.subx.html +++ b/html/067parse-hex.subx.html @@ -83,13 +83,13 @@ if ('onhashchange' in window) { 23 # if s is empty return false 24 b8/copy-to-eax 0/imm32/false 25 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 26 73/jump-if-greater-or-equal-unsigned $is-hex-int?:end/disp8 + 26 73/jump-if-addr>= $is-hex-int?:end/disp8 27 # skip past leading '-' 28 # . if (*curr == '-') ++curr 29 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx 30 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL 31 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x2d/imm32/- # compare ebx - 32 75/jump-if-not-equal $is-hex-int?:initial-0/disp8 + 32 75/jump-if-!= $is-hex-int?:initial-0/disp8 33 # . ++curr 34 41/increment-ecx 35 # skip past leading '0x' @@ -98,24 +98,24 @@ if ('onhashchange' in window) { 38 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx 39 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL 40 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x30/imm32/0 # compare ebx - 41 75/jump-if-not-equal $is-hex-int?:loop/disp8 + 41 75/jump-if-!= $is-hex-int?:loop/disp8 42 # . ++curr 43 41/increment-ecx 44 $is-hex-int?:initial-0x: 45 # . if (curr >= in->end) return true 46 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 47 73/jump-if-greater-or-equal-unsigned $is-hex-int?:true/disp8 + 47 73/jump-if-addr>= $is-hex-int?:true/disp8 48 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 49 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx 50 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 3/r32/BL . . # copy byte at *ecx to BL 51 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x78/imm32/x # compare ebx - 52 75/jump-if-not-equal $is-hex-int?:loop/disp8 + 52 75/jump-if-!= $is-hex-int?:loop/disp8 53 # . ++curr 54 41/increment-ecx 55 $is-hex-int?:loop: 56 # if (curr >= in->end) return true 57 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 58 73/jump-if-greater-or-equal-unsigned $is-hex-int?:true/disp8 + 58 73/jump-if-addr>= $is-hex-int?:true/disp8 59 # var eax : boolean = is-hex-digit?(*curr) 60 # . . push args 61 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -126,7 +126,7 @@ if ('onhashchange' in window) { 66 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 67 # if (eax == false) return false 68 3d/compare-eax-and 0/imm32 - 69 74/jump-if-equal $is-hex-int?:end/disp8 + 69 74/jump-if-= $is-hex-int?:end/disp8 70 # ++curr 71 41/increment-ecx 72 # loop @@ -435,7 +435,7 @@ if ('onhashchange' in window) { 375 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 376 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 377 3d/compare-eax-and 0x2d/imm32/- -378 75/jump-if-not-equal $parse-hex-int:initial-0/disp8 +378 75/jump-if-!= $parse-hex-int:initial-0/disp8 379 # . ++curr 380 41/increment-ecx 381 # . negate = true @@ -445,24 +445,24 @@ if ('onhashchange' in window) { 385 # . if (*curr != '0') jump to loop 386 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 387 3d/compare-eax-and 0x30/imm32/0 -388 75/jump-if-not-equal $parse-hex-int:loop/disp8 +388 75/jump-if-!= $parse-hex-int:loop/disp8 389 # . ++curr 390 41/increment-ecx 391 $parse-hex-int:initial-0x: 392 # . if (curr >= in->end) return result 393 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -394 73/jump-if-greater-or-equal-unsigned $parse-hex-int:end/disp8 +394 73/jump-if-addr>= $parse-hex-int:end/disp8 395 # . if (*curr != 'x') jump to loop # the previous '0' is still valid so doesn't need to be checked again 396 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 397 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 398 3d/compare-eax-and 0x78/imm32/x -399 75/jump-if-not-equal $parse-hex-int:loop/disp8 +399 75/jump-if-!= $parse-hex-int:loop/disp8 400 # . ++curr 401 41/increment-ecx 402 $parse-hex-int:loop: 403 # if (curr >= in->end) break 404 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -405 73/jump-if-greater-or-equal-unsigned $parse-hex-int:negate/disp8 +405 73/jump-if-addr>= $parse-hex-int:negate/disp8 406 # var eax : int = from-hex-char(*curr) 407 # . . copy arg to eax 408 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL @@ -478,7 +478,7 @@ if ('onhashchange' in window) { 418 $parse-hex-int:negate: 419 # if (negate?) result = -result 420 81 7/subop/compare 3/mod/direct 6/rm32/esi . . . . . 0/imm32/false # compare esi -421 74/jump-if-equal $parse-hex-int:end/disp8 +421 74/jump-if-= $parse-hex-int:end/disp8 422 f7 3/subop/negate 3/mod/direct 3/rm32/ebx . . . . . . # negate ebx 423 $parse-hex-int:end: 424 # return result @@ -707,18 +707,18 @@ if ('onhashchange' in window) { 647 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 1/r32/ecx 8/disp8 . # copy *(ebp+8) to ecx 648 # return false if c < '0' 649 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x30/imm32 # compare ecx -650 7c/jump-if-lesser $is-hex-digit?:false/disp8 +650 7c/jump-if-< $is-hex-digit?:false/disp8 651 # return true if c <= '9' 652 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x39/imm32 # compare ecx -653 7e/jump-if-lesser-or-equal $is-hex-digit?:true/disp8 +653 7e/jump-if-<= $is-hex-digit?:true/disp8 654 # drop case 655 25/and-eax-with 0x5f/imm32 656 # return false if c > 'f' 657 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x66/imm32 # compare ecx -658 7f/jump-if-greater $is-hex-digit?:false/disp8 +658 7f/jump-if-> $is-hex-digit?:false/disp8 659 # return true if c >= 'a' 660 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x61/imm32 # compare ecx -661 7d/jump-if-greater-or-equal $is-hex-digit?:true/disp8 +661 7d/jump-if->= $is-hex-digit?:true/disp8 662 # otherwise return false 663 $is-hex-digit?:false: 664 b8/copy-to-eax 0/imm32/false @@ -864,15 +864,15 @@ if ('onhashchange' in window) { 804 $from-hex-char:check0: 805 # if (eax < '0') goto abort 806 3d/compare-eax-with 0x30/imm32/0 -807 7c/jump-if-lesser $from-hex-char:abort/disp8 +807 7c/jump-if-< $from-hex-char:abort/disp8 808 $from-hex-char:check1: 809 # if (eax > 'f') goto abort 810 3d/compare-eax-with 0x66/imm32/f -811 7f/jump-if-greater $from-hex-char:abort/disp8 +811 7f/jump-if-> $from-hex-char:abort/disp8 812 $from-hex-char:check2: 813 # if (eax > '9') goto next check 814 3d/compare-eax-with 0x39/imm32/9 -815 7f/jump-if-greater $from-hex-char:check3/disp8 +815 7f/jump-if-> $from-hex-char:check3/disp8 816 $from-hex-char:digit: 817 # return eax - '0' 818 2d/subtract-from-eax 0x30/imm32/0 @@ -880,7 +880,7 @@ if ('onhashchange' in window) { 820 $from-hex-char:check3: 821 # if (eax < 'a') goto abort 822 3d/compare-eax-with 0x61/imm32/a -823 7c/jump-if-lesser $from-hex-char:abort/disp8 +823 7c/jump-if-< $from-hex-char:abort/disp8 824 $from-hex-char:letter: 825 # return eax - ('a'-10) 826 2d/subtract-from-eax 0x57/imm32/a-10 diff --git a/html/069allocate.subx.html b/html/069allocate.subx.html index ef63f935..d6ffe82c 100644 --- a/html/069allocate.subx.html +++ b/html/069allocate.subx.html @@ -133,7 +133,7 @@ if ('onhashchange' in window) { 72 89/copy 3/mod/direct 2/rm32/edx . . . 0/r32/eax . . # copy eax to edx 73 03/add 1/mod/*+disp8 5/rm32/ebp . . . 2/r32/edx 0xc/disp8 . # add *(ebp+12) to edx 74 3b/compare 1/mod/*+disp8 1/rm32/ecx . . . 2/r32/edx 4/disp8 . # compare edx with *(ecx+4) - 75 73/jump-if-greater-or-equal-signed $allocate:abort/disp8 + 75 73/jump-if->=-signed $allocate:abort/disp8 76 $allocate:commit: 77 # update ad->curr 78 89/copy 0/mod/indirect 1/rm32/ecx . . . 2/r32/edx . . # copy edx to *ecx @@ -257,7 +257,7 @@ if ('onhashchange' in window) { 196 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 197 # if (eax == 0) abort 198 3d/compare-eax-and 0/imm32 -199 74/jump-if-equal $allocate-region:abort/disp8 +199 74/jump-if-= $allocate-region:abort/disp8 200 # earmark 8 bytes at the start for a new allocation descriptor 201 # . *eax = eax + 8 202 89/copy 3/mod/direct 1/rm32/ecx . . . 0/r32/eax . . # copy eax to ecx diff --git a/html/070new-stream.subx.html b/html/070new-stream.subx.html index d6993e88..8b826643 100644 --- a/html/070new-stream.subx.html +++ b/html/070new-stream.subx.html @@ -78,7 +78,7 @@ if ('onhashchange' in window) { 19 f7 4/subop/multiply 1/mod/*+disp8 5/rm32/ebp . . 0xc/disp8 . # multiply *(ebp+12) into eax 20 # . if overflow abort 21 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32 # compare edx - 22 75/jump-if-not-equal $new-stream:abort/disp8 + 22 75/jump-if-!= $new-stream:abort/disp8 23 # . edx = elemsize*length 24 89/copy 3/mod/direct 2/rm32/edx . . . 0/r32/eax . . # copy eax to edx 25 # . eax += 12 diff --git a/html/071read-line.subx.html b/html/071read-line.subx.html index 6b900139..3d4d8ffb 100644 --- a/html/071read-line.subx.html +++ b/html/071read-line.subx.html @@ -97,10 +97,10 @@ if ('onhashchange' in window) { 37 $read-line-buffered:loop: 38 # if (s->write >= s->length) abort 39 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 2/r32/edx 8/disp8 . # compare edx with *(edi+8) - 40 7d/jump-if-greater-or-equal $read-line-buffered:abort/disp8 + 40 7d/jump-if->= $read-line-buffered:abort/disp8 41 # if (f->read >= f->write) populate stream from file 42 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 43 7c/jump-if-lesser $read-line-buffered:from-stream/disp8 + 43 7c/jump-if-< $read-line-buffered:from-stream/disp8 44 # . clear-stream(stream = f+4) 45 # . . push args 46 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy esi+4 to eax @@ -123,7 +123,7 @@ if ('onhashchange' in window) { 63 # since f->read was initially 0, eax is the same as f->write 64 # . if (eax == 0) return true 65 3d/compare-eax-and 0/imm32 - 66 74/jump-if-equal $read-line-buffered:end/disp8 + 66 74/jump-if-= $read-line-buffered:end/disp8 67 $read-line-buffered:from-stream: 68 # AL = f->data[f->read] 69 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax @@ -136,7 +136,7 @@ if ('onhashchange' in window) { 76 42/increment-edx 77 # if (AL == '\n') return 78 3d/compare-eax-and 0xa/imm32 - 79 75/jump-if-not-equal $read-line-buffered:loop/disp8 + 79 75/jump-if-!= $read-line-buffered:loop/disp8 80 $read-line-buffered:end: 81 # save f->read 82 89/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # copy ecx to *(esi+8) @@ -306,10 +306,10 @@ if ('onhashchange' in window) { 246 $read-line:loop: 247 # if (s->write >= s->length) abort 248 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 2/r32/edx 8/disp8 . # compare edx with *(edi+8) -249 0f 8d/jump-if-greater-or-equal $read-line:abort/disp32 +249 0f 8d/jump-if->= $read-line:abort/disp32 250 # if (f->read >= f->write) break 251 3b/compare 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # compare ecx with *esi -252 7d/jump-if-greater-or-equal $read-line:end/disp8 +252 7d/jump-if->= $read-line:end/disp8 253 # AL = f->data[f->read] 254 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 255 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 @@ -321,7 +321,7 @@ if ('onhashchange' in window) { 261 42/increment-edx 262 # if (AL == '\n') return 263 3d/compare-eax-and 0xa/imm32 -264 0f 85/jump-if-not-equal $read-line:loop/disp32 +264 0f 85/jump-if-!= $read-line:loop/disp32 265 $read-line:end: 266 # save f->read 267 89/copy 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # copy ecx to *(esi+4) diff --git a/html/072slice.subx.html b/html/072slice.subx.html index a27628f6..aa2a0251 100644 --- a/html/072slice.subx.html +++ b/html/072slice.subx.html @@ -81,7 +81,7 @@ if ('onhashchange' in window) { 20 # . compare eax and s->end 21 39/compare 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # compare eax and *(ecx+4) 22 b8/copy-to-eax 1/imm32/true - 23 74/jump-if-equal $slice-empty?:end/disp8 + 23 74/jump-if-= $slice-empty?:end/disp8 24 b8/copy-to-eax 0/imm32/false 25 $slice-empty?:end: 26 # . restore registers @@ -190,16 +190,16 @@ if ('onhashchange' in window) { 129 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 3/r32/ebx 0xc/disp8 . # copy *(ebp+12) to ebx 130 # if (p != 0) goto next check 131 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32 # compare ebx - 132 75/jump-if-not-equal $slice-equal?:nonnull-string/disp8 + 132 75/jump-if-!= $slice-equal?:nonnull-string/disp8 133 $slice-equal?:null-string: 134 # return s->start == s->end 135 3d/compare-eax-and 0/imm32 - 136 74/jump-if-equal $slice-equal?:true/disp8 + 136 74/jump-if-= $slice-equal?:true/disp8 137 eb/jump $slice-equal?:false/disp8 138 $slice-equal?:nonnull-string: 139 # if (slen != p->length) return false 140 39/compare 0/mod/indirect 3/rm32/ebx . . . 0/r32/eax . . # compare *ebx and eax - 141 75/jump-if-not-equal $slice-equal?:false/disp8 + 141 75/jump-if-!= $slice-equal?:false/disp8 142 # var currp/ebx : (addr byte) = p->data 143 81 0/subop/add 3/mod/direct 3/rm32/ebx . . . . . 4/imm32 # add to ebx 144 # var c1/eax : byte = 0 @@ -209,14 +209,14 @@ if ('onhashchange' in window) { 148 $slice-equal?:loop: 149 # if (currs >= maxs) return true 150 39/compare 3/mod/direct 2/rm32/edx . . . 6/r32/esi . . # compare edx with esi - 151 73/jump-if-greater-or-equal-unsigned $slice-equal?:true/disp8 + 151 73/jump-if-addr>= $slice-equal?:true/disp8 152 # c1 = *currp 153 8a/copy-byte 0/mod/indirect 3/rm32/ebx . . . 0/r32/AL . . # copy byte at *ebx to AL 154 # c2 = *currs 155 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 1/r32/CL . . # copy byte at *edx to CL 156 # if (c1 != c2) return false 157 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax and ecx - 158 75/jump-if-not-equal $slice-equal?:false/disp8 + 158 75/jump-if-!= $slice-equal?:false/disp8 159 # ++currp 160 43/increment-ebx 161 # ++currs @@ -558,7 +558,7 @@ if ('onhashchange' in window) { 497 8b/copy 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # copy *edi to edx 498 # if (lenh > lens) return false 499 39/compare 3/mod/direct 2/rm32/edx . . . 1/r32/ecx . . # compare edx with ecx - 500 7f/jump-if-greater $slice-starts-with?:false/disp8 + 500 7f/jump-if-> $slice-starts-with?:false/disp8 501 # var currs/esi : (addr byte) = s->start 502 8b/subtract 0/mod/indirect 6/rm32/esi . . . 6/r32/esi . . # copy *esi to esi 503 # var currh/edi : (addr byte) = head->data @@ -572,14 +572,14 @@ if ('onhashchange' in window) { 511 $slice-starts-with?:loop: 512 # if (i >= lenh) return true 513 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 514 7d/jump-if-greater-or-equal $slice-starts-with?:true/disp8 + 514 7d/jump-if->= $slice-starts-with?:true/disp8 515 # c1 = *currs 516 8a/copy-byte 0/mod/indirect 6/rm32/esi . . . 0/r32/AL . . # copy byte at *esi to AL 517 # c2 = *currh 518 8a/copy-byte 0/mod/indirect 7/rm32/edi . . . 3/r32/BL . . # copy byte at *edi to BL 519 # if (c1 != c2) return false 520 39/compare 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # compare eax and ebx - 521 75/jump-if-not-equal $slice-starts-with?:false/disp8 + 521 75/jump-if-!= $slice-starts-with?:false/disp8 522 # ++i 523 41/increment-ecx 524 # ++currs @@ -848,10 +848,10 @@ if ('onhashchange' in window) { 787 $write-slice:loop: 788 # if (curr >= max) break 789 39/compare 3/mod/direct 1/rm32/ecx . . . 6/r32/esi . . # compare ecx with esi - 790 73/jump-if-greater-or-equal-unsigned $write-slice:loop-end/disp8 + 790 73/jump-if-addr>= $write-slice:loop-end/disp8 791 # if (out->write >= out->length) abort 792 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx with edx - 793 7d/jump-if-greater-or-equal $write-slice:abort/disp8 + 793 7d/jump-if->= $write-slice:abort/disp8 794 # out->data[out->write] = *in 795 # . AL = *in 796 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax @@ -964,10 +964,10 @@ if ('onhashchange' in window) { 903 $write-slice-buffered:loop: 904 # if (curr >= max) break 905 39/compare 3/mod/direct 1/rm32/ecx . . . 6/r32/esi . . # compare ecx with esi - 906 73/jump-if-greater-or-equal-unsigned $write-slice-buffered:loop-end/disp8 + 906 73/jump-if-addr>= $write-slice-buffered:loop-end/disp8 907 # if (out->write >= out->length) flush and clear out's stream 908 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx with edx - 909 7c/jump-if-lesser $write-slice-buffered:to-stream/disp8 + 909 7c/jump-if-< $write-slice-buffered:to-stream/disp8 910 # . persist out->write 911 89/copy 1/mod/*+disp8 7/rm32/edi . . . 3/r32/ebx 4/disp8 . # copy ebx to *(edi+4) 912 # . flush(out) @@ -1102,7 +1102,7 @@ if ('onhashchange' in window) { 1041 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1042 # if (eax == 0) abort 1043 3d/compare-eax-and 0/imm32 -1044 74/jump-if-equal $slice-to-string:abort/disp8 +1044 74/jump-if-= $slice-to-string:abort/disp8 1045 # out->length = size-4 1046 89/copy 0/mod/indirect 0/rm32/eax . . . 1/r32/ecx . . # copy ecx to *eax 1047 81 5/subop/subtract 0/mod/indirect 0/rm32/eax . . . . . 4/imm32 # subtract 4 from *eax diff --git a/html/073next-token.subx.html b/html/073next-token.subx.html index 0d2b716c..1f8bb778 100644 --- a/html/073next-token.subx.html +++ b/html/073next-token.subx.html @@ -418,13 +418,13 @@ if ('onhashchange' in window) { 359 $skip-chars-matching:loop: 360 # if (in->read >= in->write) break 361 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 362 7d/jump-if-greater-or-equal $skip-chars-matching:end/disp8 + 362 7d/jump-if->= $skip-chars-matching:end/disp8 363 # eax = in->data[in->read] 364 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 365 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 366 # if (eax != delimiter) break 367 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax and edx - 368 75/jump-if-not-equal $skip-chars-matching:end/disp8 + 368 75/jump-if-!= $skip-chars-matching:end/disp8 369 # ++in->read 370 41/increment-ecx 371 eb/jump $skip-chars-matching:loop/disp8 @@ -538,22 +538,22 @@ if ('onhashchange' in window) { 479 $skip-chars-matching-whitespace:loop: 480 # if (in->read >= in->write) break 481 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 482 7d/jump-if-greater-or-equal $skip-chars-matching-whitespace:end/disp8 + 482 7d/jump-if->= $skip-chars-matching-whitespace:end/disp8 483 # eax = in->data[in->read] 484 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 485 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 486 # if (eax == ' ') goto body 487 3d/compare-eax-and 0x20/imm32/space - 488 74/jump-if-equal $skip-chars-matching-whitespace:body/disp8 + 488 74/jump-if-= $skip-chars-matching-whitespace:body/disp8 489 # if (eax == '\n') goto body 490 3d/compare-eax-and 0x0a/imm32/newline - 491 74/jump-if-equal $skip-chars-matching-whitespace:body/disp8 + 491 74/jump-if-= $skip-chars-matching-whitespace:body/disp8 492 # if (eax == '\t') goto body 493 3d/compare-eax-and 0x09/imm32/tab - 494 74/jump-if-equal $skip-chars-matching-whitespace:body/disp8 + 494 74/jump-if-= $skip-chars-matching-whitespace:body/disp8 495 # if (eax != '\r') break 496 3d/compare-eax-and 0x0d/imm32/cr - 497 75/jump-if-not-equal $skip-chars-matching-whitespace:end/disp8 + 497 75/jump-if-!= $skip-chars-matching-whitespace:end/disp8 498 $skip-chars-matching-whitespace:body: 499 # ++in->read 500 41/increment-ecx @@ -631,13 +631,13 @@ if ('onhashchange' in window) { 572 $skip-chars-not-matching:loop: 573 # if (in->read >= in->write) break 574 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 575 7d/jump-if-greater-or-equal $skip-chars-not-matching:end/disp8 + 575 7d/jump-if->= $skip-chars-not-matching:end/disp8 576 # eax = in->data[in->read] 577 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 578 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 579 # if (eax == delimiter) break 580 39/compare 3/mod/direct 0/rm32/eax . . . 2/r32/edx . . # compare eax and edx - 581 74/jump-if-equal $skip-chars-not-matching:end/disp8 + 581 74/jump-if-= $skip-chars-not-matching:end/disp8 582 # ++in->read 583 41/increment-ecx 584 eb/jump $skip-chars-not-matching:loop/disp8 @@ -790,22 +790,22 @@ if ('onhashchange' in window) { 731 $skip-chars-not-matching-whitespace:loop: 732 # if (in->read >= in->write) break 733 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 734 7d/jump-if-greater-or-equal $skip-chars-not-matching-whitespace:end/disp8 + 734 7d/jump-if->= $skip-chars-not-matching-whitespace:end/disp8 735 # eax = in->data[in->read] 736 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 737 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 738 # if (eax == ' ') break 739 3d/compare-eax-and 0x20/imm32/space - 740 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 740 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 741 # if (eax == '\n') break 742 3d/compare-eax-and 0x0a/imm32/newline - 743 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 743 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 744 # if (eax == '\t') break 745 3d/compare-eax-and 0x09/imm32/tab - 746 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 746 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 747 # if (eax == '\r') break 748 3d/compare-eax-and 0x0d/imm32/cr - 749 74/jump-if-equal $skip-chars-not-matching-whitespace:end/disp8 + 749 74/jump-if-= $skip-chars-not-matching-whitespace:end/disp8 750 # ++in->read 751 41/increment-ecx 752 eb/jump $skip-chars-not-matching-whitespace:loop/disp8 @@ -879,12 +879,12 @@ if ('onhashchange' in window) { 820 $skip-chars-matching-in-slice:loop: 821 # if (curr >= end) break 822 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 823 73/jump-if-greater-or-equal-unsigned $skip-chars-matching-in-slice:end/disp8 + 823 73/jump-if-addr>= $skip-chars-matching-in-slice:end/disp8 824 # c = *curr 825 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL 826 # if (c != delimiter) break 827 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx and edx - 828 75/jump-if-not-equal $skip-chars-matching-in-slice:end/disp8 + 828 75/jump-if-!= $skip-chars-matching-in-slice:end/disp8 829 # ++curr 830 40/increment-eax 831 eb/jump $skip-chars-matching-in-slice:loop/disp8 @@ -972,21 +972,21 @@ if ('onhashchange' in window) { 913 $skip-chars-matching-whitespace-in-slice:loop: 914 # if (curr >= end) break 915 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 916 0f 83/jump-if-greater-or-equal-unsigned $skip-chars-matching-in-slice:end/disp32 + 916 0f 83/jump-if-addr>= $skip-chars-matching-in-slice:end/disp32 917 # c = *curr 918 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL 919 # if (c == ' ') goto body 920 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x20/imm32/space # compare ebx - 921 74/jump-if-equal $skip-chars-matching-whitespace-in-slice:body/disp8 + 921 74/jump-if-= $skip-chars-matching-whitespace-in-slice:body/disp8 922 # if (c == '\n') goto body 923 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0a/imm32/newline # compare ebx - 924 74/jump-if-equal $skip-chars-matching-whitespace-in-slice:body/disp8 + 924 74/jump-if-= $skip-chars-matching-whitespace-in-slice:body/disp8 925 # if (c == '\t') goto body 926 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x09/imm32/tab # compare ebx - 927 74/jump-if-equal $skip-chars-matching-whitespace-in-slice:body/disp8 + 927 74/jump-if-= $skip-chars-matching-whitespace-in-slice:body/disp8 928 # if (c != '\r') break 929 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0d/imm32/cr # compare ebx - 930 75/jump-if-not-equal $skip-chars-matching-whitespace-in-slice:end/disp8 + 930 75/jump-if-!= $skip-chars-matching-whitespace-in-slice:end/disp8 931 $skip-chars-matching-whitespace-in-slice:body: 932 # ++curr 933 40/increment-eax @@ -1048,12 +1048,12 @@ if ('onhashchange' in window) { 989 $skip-chars-not-matching-in-slice:loop: 990 # if (curr >= end) break 991 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 992 73/jump-if-greater-or-equal-unsigned $skip-chars-not-matching-in-slice:end/disp8 + 992 73/jump-if-addr>= $skip-chars-not-matching-in-slice:end/disp8 993 # c = *curr 994 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL 995 # if (c == delimiter) break 996 39/compare 3/mod/direct 3/rm32/ebx . . . 2/r32/edx . . # compare ebx and edx - 997 74/jump-if-equal $skip-chars-not-matching-in-slice:end/disp8 + 997 74/jump-if-= $skip-chars-not-matching-in-slice:end/disp8 998 # ++curr 999 40/increment-eax 1000 eb/jump $skip-chars-not-matching-in-slice:loop/disp8 @@ -1170,21 +1170,21 @@ if ('onhashchange' in window) { 1111 $skip-chars-not-matching-whitespace-in-slice:loop: 1112 # if (curr >= end) break 1113 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx -1114 0f 83/jump-if-greater-or-equal-unsigned $skip-chars-not-matching-in-slice:end/disp32 +1114 0f 83/jump-if-addr>= $skip-chars-not-matching-in-slice:end/disp32 1115 # c = *curr 1116 8a/copy-byte 0/mod/indirect 0/rm32/eax . . . 3/r32/BL . . # copy byte at *eax to BL 1117 # if (c == ' ') break 1118 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x20/imm32/space # compare ebx -1119 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 +1119 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 1120 # if (c == '\n') break 1121 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0a/imm32/newline # compare ebx -1122 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 +1122 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 1123 # if (c == '\t') break 1124 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x09/imm32/tab # compare ebx -1125 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 +1125 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 1126 # if (c == '\r') break 1127 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0x0d/imm32/cr # compare ebx -1128 74/jump-if-equal $skip-chars-not-matching-whitespace-in-slice:end/disp8 +1128 74/jump-if-= $skip-chars-not-matching-whitespace-in-slice:end/disp8 1129 # ++curr 1130 40/increment-eax 1131 eb/jump $skip-chars-not-matching-whitespace-in-slice:loop/disp8 @@ -1488,17 +1488,17 @@ if ('onhashchange' in window) { 1429 $skip-string-in-slice:loop: 1430 # if (curr >= end) return curr 1431 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -1432 73/jump-if-greater-unsigned-or-equal $skip-string-in-slice:return-curr/disp8 +1432 73/jump-if-addr>= $skip-string-in-slice:return-curr/disp8 1433 # c = *curr 1434 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 1435 $skip-string-in-slice:dquote: 1436 # if (c == '"') break 1437 3d/compare-eax-and 0x22/imm32/double-quote -1438 74/jump-if-equal $skip-string-in-slice:break/disp8 +1438 74/jump-if-= $skip-string-in-slice:break/disp8 1439 $skip-string-in-slice:check-for-escape: 1440 # if (c == '\') escape next char 1441 3d/compare-eax-and 0x5c/imm32/backslash -1442 75/jump-if-not-equal $skip-string-in-slice:continue/disp8 +1442 75/jump-if-!= $skip-string-in-slice:continue/disp8 1443 $skip-string-in-slice:escape: 1444 41/increment-ecx 1445 $skip-string-in-slice:continue: @@ -1860,13 +1860,13 @@ if ('onhashchange' in window) { 1801 $skip-until-close-paren-in-slice:loop: 1802 # if (curr >= end) break 1803 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -1804 73/jump-if-greater-unsigned-or-equal $skip-until-close-paren-in-slice:break/disp8 +1804 73/jump-if-addr>= $skip-until-close-paren-in-slice:break/disp8 1805 # c = *curr 1806 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 1807 $skip-until-close-paren-in-slice:check-close: 1808 # if (c == ')') break 1809 3d/compare-eax-and 0x29/imm32/close-paren -1810 74/jump-if-equal $skip-until-close-paren-in-slice:break/disp8 +1810 74/jump-if-= $skip-until-close-paren-in-slice:break/disp8 1811 # ++curr 1812 41/increment-ecx 1813 eb/jump $skip-until-close-paren-in-slice:loop/disp8 diff --git a/html/075print-int-decimal.subx.html b/html/075print-int-decimal.subx.html index 9a7c6ce2..bf35a3be 100644 --- a/html/075print-int-decimal.subx.html +++ b/html/075print-int-decimal.subx.html @@ -112,7 +112,7 @@ if ('onhashchange' in window) { 51 # var eax : int = abs(n) 52 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax 53 3d/compare-eax-with 0/imm32 - 54 7d/jump-if-greater-or-equal $print-int32-decimal:read-loop/disp8 + 54 7d/jump-if->= $print-int32-decimal:read-loop/disp8 55 $print-int32-decimal:negative: 56 f7 3/subop/negate 3/mod/direct 0/rm32/eax . . . . . . # negate eax 57 $print-int32-decimal:read-loop: @@ -125,11 +125,11 @@ if ('onhashchange' in window) { 64 52/push-edx 65 # if (eax == 0) break 66 3d/compare-eax-and 0/imm32 - 67 7f/jump-if-greater $print-int32-decimal:read-loop/disp8 + 67 7f/jump-if-> $print-int32-decimal:read-loop/disp8 68 $print-int32-decimal:read-break: 69 # if (n < 0) push('-') 70 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 0/imm32 # compare *(ebp+12) - 71 7d/jump-if-greater-or-equal $print-int32-decimal:write/disp8 + 71 7d/jump-if->= $print-int32-decimal:write/disp8 72 $print-int32-decimal:push-negative: 73 68/push 0x2d/imm32/- 74 $print-int32-decimal:write: @@ -147,10 +147,10 @@ if ('onhashchange' in window) { 86 58/pop-to-eax 87 # if (eax == sentinel) break 88 3d/compare-eax-and 0/imm32/sentinel - 89 74/jump-if-equal $print-int32-decimal:write-break/disp8 + 89 74/jump-if-= $print-int32-decimal:write-break/disp8 90 # if (curr >= max) abort 91 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx - 92 73/jump-if-greater-or-equal-unsigned $print-int32-decimal:abort/disp8 + 92 73/jump-if-addr>= $print-int32-decimal:abort/disp8 93 $print-int32-decimal:write-char: 94 # *curr = AL 95 88/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy AL to byte at *ecx @@ -350,10 +350,10 @@ if ('onhashchange' in window) { 314 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 1/r32/ecx 8/disp8 . # copy *(ebp+8) to ecx 315 # return false if c < '0' 316 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x30/imm32 # compare ecx -317 7c/jump-if-lesser $is-decimal-digit?:false/disp8 +317 7c/jump-if-< $is-decimal-digit?:false/disp8 318 # return true if c <= '9' 319 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0x39/imm32 # compare ecx -320 7e/jump-if-lesser-or-equal $is-decimal-digit?:true/disp8 +320 7e/jump-if-<= $is-decimal-digit?:true/disp8 321 # otherwise return false 322 $is-decimal-digit?:false: 323 b8/copy-to-eax 0/imm32/false diff --git a/html/076next-word.subx.html b/html/076next-word.subx.html index fd995009..90aa0113 100644 --- a/html/076next-word.subx.html +++ b/html/076next-word.subx.html @@ -93,7 +93,7 @@ if ('onhashchange' in window) { 34 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax 35 # . if (eax < line->write) goto next check 36 3b/compare 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # compare eax with *esi - 37 7c/jump-if-lesser $next-word:check-for-comment/disp8 + 37 7c/jump-if-< $next-word:check-for-comment/disp8 38 # . return out 39 c7 0/subop/copy 0/mod/direct 7/rm32/edi . . . . . 0/imm32 # copy to *edi 40 c7 0/subop/copy 1/mod/*+disp8 7/rm32/edi . . . . 4/disp8 0/imm32 # copy to *(edi+4) @@ -109,7 +109,7 @@ if ('onhashchange' in window) { 50 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 51 # . compare 52 3d/compare-eax-and 0x23/imm32/pound - 53 75/jump-if-not-equal $next-word:regular-word/disp8 + 53 75/jump-if-!= $next-word:regular-word/disp8 54 $next-word:comment: 55 # . out->end = &line->data[line->write] 56 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax diff --git a/html/077subx-words.subx.html b/html/077subx-words.subx.html index 1ea0b967..eac8cad4 100644 --- a/html/077subx-words.subx.html +++ b/html/077subx-words.subx.html @@ -121,7 +121,7 @@ if ('onhashchange' in window) { 62 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 63 # . if (eax != false) return false 64 3d/compare-eax-and 0/imm32/false - 65 75/jump-if-not-equal $has-metadata?:false/disp8 + 65 75/jump-if-!= $has-metadata?:false/disp8 66 # if (slice-equal?(twig, s)) return true 67 # . eax = slice-equal?(twig, s) 68 # . . push args @@ -134,7 +134,7 @@ if ('onhashchange' in window) { 75 # . if (eax != false) return true 76 3d/compare-eax-and 0/imm32/false 77 # eax already contains true - 78 75/jump-if-not-equal $has-metadata?:end/disp8 + 78 75/jump-if-!= $has-metadata?:end/disp8 79 eb/jump $has-metadata?:loop/disp8 80 $has-metadata?:false: 81 b8/copy-to-eax 0/imm32/false @@ -348,29 +348,29 @@ if ('onhashchange' in window) { 289 $is-valid-name?:check0: 290 # if (start >= in->end) return false 291 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) -292 73/jump-if-greater-or-equal-unsigned $is-valid-name?:false/disp8 +292 73/jump-if-addr>= $is-valid-name?:false/disp8 293 $is-valid-name?:check1: 294 # var len/eax : int = in->end - start 295 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax 296 29/subtract 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # subtract ecx from eax 297 # if (eax == 2) return false 298 3d/compare-eax-and 2/imm32 -299 74/jump-if-equal $is-valid-name?:false/disp8 +299 74/jump-if-= $is-valid-name?:false/disp8 300 $is-valid-name?:check2: 301 # var c/eax : (addr byte) = *start 302 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax 303 8a/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy byte at *ecx to AL 304 # if (c == "-") return false 305 3d/compare-eax-and 2d/imm32/- -306 74/jump-if-equal $is-valid-name?:false/disp8 +306 74/jump-if-= $is-valid-name?:false/disp8 307 $is-valid-name?:check3a: 308 # if (c < "0") return true 309 3d/compare-eax-with 30/imm32/0 -310 7c/jump-if-lesser $is-valid-name?:true/disp8 +310 7c/jump-if-< $is-valid-name?:true/disp8 311 $is-valid-name?:check3b: 312 # if (c > "9") return true 313 3d/compare-eax-with 39/imm32/9 -314 7f/jump-if-greater $is-valid-name?:true/disp8 +314 7f/jump-if-> $is-valid-name?:true/disp8 315 $is-valid-name?:false: 316 # return false 317 b8/copy-to-eax 0/imm32/false @@ -608,7 +608,7 @@ if ('onhashchange' in window) { 549 # . return (eax == ':') 550 3d/compare-eax-and 0x3a/imm32/colon 551 b8/copy-to-eax 1/imm32/true -552 74/jump-if-equal $is-label?:end/disp8 +552 74/jump-if-= $is-label?:end/disp8 553 b8/copy-to-eax 0/imm32/false 554 $is-label?:end: 555 # . restore registers diff --git a/html/078emit-hex.subx.html b/html/078emit-hex.subx.html index 94b7eea1..838851a6 100644 --- a/html/078emit-hex.subx.html +++ b/html/078emit-hex.subx.html @@ -84,7 +84,7 @@ if ('onhashchange' in window) { 25 $emit-hex:loop: 26 # if (curr >= width) break 27 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 28 7d/jump-if-greater-or-equal $emit-hex:end/disp8 + 28 7d/jump-if->= $emit-hex:end/disp8 29 # print-byte-buffered(out, ebx) # only BL used 30 # . . push args 31 53/push-ebx diff --git a/html/079emit.subx.html b/html/079emit.subx.html index ccaa5a46..dbe0d673 100644 --- a/html/079emit.subx.html +++ b/html/079emit.subx.html @@ -102,7 +102,7 @@ if ('onhashchange' in window) { 41 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 42 # . if (eax != false) 43 3d/compare-eax-and 0/imm32/false - 44 74/jump-if-equal $emit:hex-int/disp8 + 44 74/jump-if-= $emit:hex-int/disp8 45 $emit:name: 46 # . write-slice-buffered(out, word) 47 # . . push args diff --git a/html/080zero-out.subx.html b/html/080zero-out.subx.html index 9f39374e..203e38db 100644 --- a/html/080zero-out.subx.html +++ b/html/080zero-out.subx.html @@ -91,7 +91,7 @@ if ('onhashchange' in window) { 32 $zero-out:loop: 33 # if (i >= len) break 34 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -35 7d/jump-if-greater-or-equal $zero-out:end/disp8 +35 7d/jump-if->= $zero-out:end/disp8 36 # *curr = 0 37 c6 0/subop/copy 0/mod/direct 6/rm32/esi . . . . . 0/imm8 # copy byte to *esi 38 # ++curr diff --git a/html/081table.subx.html b/html/081table.subx.html index 6ed012d9..127b2d9d 100644 --- a/html/081table.subx.html +++ b/html/081table.subx.html @@ -112,7 +112,7 @@ if ('onhashchange' in window) { 51 $get:search-loop: 52 # if (curr >= max) abort 53 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 54 73/jump-if-greater-or-equal-unsigned $get:abort/disp8 + 54 73/jump-if-addr>= $get:abort/disp8 55 # if (string-equal?(key, *curr)) return curr+4 56 # . eax = string-equal?(key, *curr) 57 # . . push args @@ -124,7 +124,7 @@ if ('onhashchange' in window) { 63 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 64 # . if (eax != false) return eax = curr+4 65 3d/compare-eax-and 0/imm32/false - 66 74/jump-if-equal $get:mismatch/disp8 + 66 74/jump-if-= $get:mismatch/disp8 67 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 68 eb/jump $get:end/disp8 69 $get:mismatch: @@ -286,7 +286,7 @@ if ('onhashchange' in window) { 225 $get-slice:search-loop: 226 # if (curr >= max) abort 227 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 228 73/jump-if-greater-or-equal-unsigned $get-slice:abort/disp8 + 228 73/jump-if-addr>= $get-slice:abort/disp8 229 # if (slice-equal?(key, *curr)) return curr+4 230 # . eax = slice-equal?(key, *curr) 231 # . . push args @@ -298,7 +298,7 @@ if ('onhashchange' in window) { 237 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 238 # . if (eax != false) return eax = curr+4 239 3d/compare-eax-and 0/imm32/false - 240 74/jump-if-equal $get-slice:mismatch/disp8 + 240 74/jump-if-= $get-slice:mismatch/disp8 241 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 242 eb/jump $get-slice:end/disp8 243 $get-slice:mismatch: @@ -494,7 +494,7 @@ if ('onhashchange' in window) { 433 $get-or-insert:search-loop: 434 # if (curr >= max) break 435 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 436 73/jump-if-greater-or-equal-unsigned $get-or-insert:not-found/disp8 + 436 73/jump-if-addr>= $get-or-insert:not-found/disp8 437 # if (string-equal?(key, *curr)) return curr+4 438 # . eax = string-equal?(key, *curr) 439 # . . push args @@ -506,7 +506,7 @@ if ('onhashchange' in window) { 445 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 446 # . if (eax != false) return eax = curr+4 447 3d/compare-eax-and 0/imm32/false - 448 74/jump-if-equal $get-or-insert:mismatch/disp8 + 448 74/jump-if-= $get-or-insert:mismatch/disp8 449 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 450 eb/jump $get-or-insert:end/disp8 451 $get-or-insert:mismatch: @@ -520,7 +520,7 @@ if ('onhashchange' in window) { 459 # if (table->write >= table->length) abort 460 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx 461 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(esi+8) - 462 73/jump-if-greater-or-equal-unsigned $get-or-insert:abort/disp8 + 462 73/jump-if-addr>= $get-or-insert:abort/disp8 463 # zero-out(max, row-size) 464 # . . push args 465 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 . # push *(ebp+16) @@ -745,7 +745,7 @@ if ('onhashchange' in window) { 684 $leaky-get-or-insert-slice:search-loop: 685 # if (curr >= max) break 686 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 687 73/jump-if-greater-or-equal-unsigned $leaky-get-or-insert-slice:not-found/disp8 + 687 73/jump-if-addr>= $leaky-get-or-insert-slice:not-found/disp8 688 # if (slice-equal?(key, *curr)) return curr+4 689 # . eax = slice-equal?(key, *curr) 690 # . . push args @@ -757,7 +757,7 @@ if ('onhashchange' in window) { 696 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 697 # . if (eax != false) return eax = curr+4 698 3d/compare-eax-and 0/imm32/false - 699 74/jump-if-equal $leaky-get-or-insert-slice:mismatch/disp8 + 699 74/jump-if-= $leaky-get-or-insert-slice:mismatch/disp8 700 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 701 eb/jump $leaky-get-or-insert-slice:end/disp8 702 $leaky-get-or-insert-slice:mismatch: @@ -771,7 +771,7 @@ if ('onhashchange' in window) { 710 # if (table->write >= table->length) abort 711 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx 712 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(esi+8) - 713 7d/jump-if-greater-or-equal $leaky-get-or-insert-slice:abort/disp8 + 713 7d/jump-if->= $leaky-get-or-insert-slice:abort/disp8 714 # zero-out(max, row-size) 715 # . . push args 716 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 . # push *(ebp+16) @@ -1015,7 +1015,7 @@ if ('onhashchange' in window) { 954 $get-or-stop:search-loop: 955 # if (curr >= max) stop(ed) 956 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 957 73/jump-if-greater-or-equal-unsigned $get-or-stop:stop/disp8 + 957 73/jump-if-addr>= $get-or-stop:stop/disp8 958 # if (string-equal?(key, *curr)) return curr+4 959 # . eax = string-equal?(key, *curr) 960 # . . push args @@ -1027,7 +1027,7 @@ if ('onhashchange' in window) { 966 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 967 # . if (eax != false) return eax = curr+4 968 3d/compare-eax-and 0/imm32/false - 969 74/jump-if-equal $get-or-stop:mismatch/disp8 + 969 74/jump-if-= $get-or-stop:mismatch/disp8 970 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 971 eb/jump $get-or-stop:end/disp8 972 $get-or-stop:mismatch: @@ -1231,7 +1231,7 @@ if ('onhashchange' in window) { 1170 $get-slice-or-stop:search-loop: 1171 # if (curr >= max) stop(ed) 1172 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -1173 73/jump-if-greater-or-equal-unsigned $get-slice-or-stop:stop/disp8 +1173 73/jump-if-addr>= $get-slice-or-stop:stop/disp8 1174 # if (slice-equal?(key, *curr)) return curr+4 1175 # . eax = slice-equal?(key, *curr) 1176 # . . push args @@ -1243,7 +1243,7 @@ if ('onhashchange' in window) { 1182 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1183 # . if (eax != false) return eax = curr+4 1184 3d/compare-eax-and 0/imm32/false -1185 74/jump-if-equal $get-slice-or-stop:mismatch/disp8 +1185 74/jump-if-= $get-slice-or-stop:mismatch/disp8 1186 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 1187 eb/jump $get-slice-or-stop:end/disp8 1188 $get-slice-or-stop:mismatch: @@ -1467,7 +1467,7 @@ if ('onhashchange' in window) { 1406 $maybe-get:search-loop: 1407 # if (curr >= max) return null 1408 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -1409 73/jump-if-greater-or-equal-unsigned $maybe-get:null/disp8 +1409 73/jump-if-addr>= $maybe-get:null/disp8 1410 # if (string-equal?(key, *curr)) return curr+4 1411 # . eax = string-equal?(key, *curr) 1412 # . . push args @@ -1479,7 +1479,7 @@ if ('onhashchange' in window) { 1418 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1419 # . if (eax != false) return eax = curr+4 1420 3d/compare-eax-and 0/imm32/false -1421 74/jump-if-equal $maybe-get:mismatch/disp8 +1421 74/jump-if-= $maybe-get:mismatch/disp8 1422 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 1423 eb/jump $maybe-get:end/disp8 1424 $maybe-get:mismatch: @@ -1614,7 +1614,7 @@ if ('onhashchange' in window) { 1553 $maybe-get-slice:search-loop: 1554 # if (curr >= max) return null 1555 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx -1556 73/jump-if-greater-or-equal-unsigned $maybe-get-slice:null/disp8 +1556 73/jump-if-addr>= $maybe-get-slice:null/disp8 1557 # if (slice-equal?(key, *curr)) return curr+4 1558 # . eax = slice-equal?(key, *curr) 1559 # . . push args @@ -1626,7 +1626,7 @@ if ('onhashchange' in window) { 1565 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1566 # . if (eax != false) return eax = curr+4 1567 3d/compare-eax-and 0/imm32/false -1568 74/jump-if-equal $maybe-get-slice:mismatch/disp8 +1568 74/jump-if-= $maybe-get-slice:mismatch/disp8 1569 8d/copy-address 1/mod/*+disp8 1/rm32/ecx . . . 0/r32/eax 4/disp8 . # copy ecx+4 to eax 1570 eb/jump $maybe-get-slice:end/disp8 1571 $maybe-get-slice:mismatch: diff --git a/html/082slurp.subx.html b/html/082slurp.subx.html index a34f3bde..9491c189 100644 --- a/html/082slurp.subx.html +++ b/html/082slurp.subx.html @@ -94,10 +94,10 @@ if ('onhashchange' in window) { 35 $slurp:loop: 36 # if (s->write >= s->length) abort 37 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 2/r32/edx 8/disp8 . # compare edx with *(edi+8) - 38 7d/jump-if-greater-or-equal $slurp:abort/disp8 + 38 7d/jump-if->= $slurp:abort/disp8 39 # if (f->read >= f->write) populate stream from file 40 3b/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare ecx with *(esi+4) - 41 7c/jump-if-lesser $slurp:from-stream/disp8 + 41 7c/jump-if-< $slurp:from-stream/disp8 42 # . clear-stream(stream = f+4) 43 # . . push args 44 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy esi+4 to eax @@ -120,7 +120,7 @@ if ('onhashchange' in window) { 61 # since f->read was initially 0, eax is the same as f->write 62 # . if (eax == 0) return true 63 3d/compare-eax-and 0/imm32 - 64 74/jump-if-equal $slurp:end/disp8 + 64 74/jump-if-= $slurp:end/disp8 65 $slurp:from-stream: 66 # var c/eax : byte = f->data[f->read] 67 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax diff --git a/html/083subx-widths.subx.html b/html/083subx-widths.subx.html index 023510f2..b6341472 100644 --- a/html/083subx-widths.subx.html +++ b/html/083subx-widths.subx.html @@ -121,7 +121,7 @@ if ('onhashchange' in window) { 62 # . if (eax != false) return 4 63 3d/compare-eax-and 0/imm32/false 64 b8/copy-to-eax 4/imm32 # ZF is set, so we can overwrite eax now - 65 75/jump-if-not-equal $compute-width-of-slice:end/disp8 + 65 75/jump-if-!= $compute-width-of-slice:end/disp8 66 # if (has-metadata?(word, "disp32")) return 4 67 # . eax = has-metadata?(word, "disp32") 68 # . . push args @@ -134,7 +134,7 @@ if ('onhashchange' in window) { 75 # . if (eax != false) return 4 76 3d/compare-eax-and 0/imm32/false 77 b8/copy-to-eax 4/imm32 # ZF is set, so we can overwrite eax now - 78 75/jump-if-not-equal $compute-width-of-slice:end/disp8 + 78 75/jump-if-!= $compute-width-of-slice:end/disp8 79 # if (has-metadata?(word, "imm16")) return 2 80 # . eax = has-metadata?(word, "imm16") 81 # . . push args @@ -147,7 +147,7 @@ if ('onhashchange' in window) { 88 # . if (eax != false) return 2 89 3d/compare-eax-and 0/imm32/false 90 b8/copy-to-eax 2/imm32 # ZF is set, so we can overwrite eax now - 91 75/jump-if-not-equal $compute-width-of-slice:end/disp8 + 91 75/jump-if-!= $compute-width-of-slice:end/disp8 92 # if (has-metadata?(word, "disp16")) return 2 93 # . eax = has-metadata?(word, "disp16") 94 # . . push args @@ -160,7 +160,7 @@ if ('onhashchange' in window) { 101 # . if (eax != false) return 2 102 3d/compare-eax-and 0/imm32/false 103 b8/copy-to-eax 2/imm32 # ZF is set, so we can overwrite eax now -104 75/jump-if-not-equal $compute-width-of-slice:end/disp8 +104 75/jump-if-!= $compute-width-of-slice:end/disp8 105 # otherwise return 1 106 b8/copy-to-eax 1/imm32 107 $compute-width-of-slice:end: diff --git a/html/084emit-hex-array.subx.html b/html/084emit-hex-array.subx.html index ca1b619b..db2762e5 100644 --- a/html/084emit-hex-array.subx.html +++ b/html/084emit-hex-array.subx.html @@ -87,7 +87,7 @@ if ('onhashchange' in window) { 27 $emit-hex-array:loop: 28 # if (curr >= width) break 29 39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx - 30 73/jump-if-greater-or-equal-unsigned $emit-hex-array:end/disp8 + 30 73/jump-if-addr>= $emit-hex-array:end/disp8 31 # emit-hex(out, c = *curr, width=1) 32 # . . push args 33 68/push 1/imm32/width diff --git a/html/085next-word-or-string.subx.html b/html/085next-word-or-string.subx.html index 640b2745..4671ca51 100644 --- a/html/085next-word-or-string.subx.html +++ b/html/085next-word-or-string.subx.html @@ -91,7 +91,7 @@ if ('onhashchange' in window) { 32 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax 33 # . if (eax < line->write) goto next check 34 3b/compare 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # compare eax with *esi - 35 7c/jump-if-lesser $next-word-or-string:check-for-comment/disp8 + 35 7c/jump-if-< $next-word-or-string:check-for-comment/disp8 36 # . return out 37 c7 0/subop/copy 0/mod/direct 7/rm32/edi . . . . . 0/imm32 # copy to *edi 38 c7 0/subop/copy 1/mod/*+disp8 7/rm32/edi . . . . 4/disp8 0/imm32 # copy to *(edi+4) @@ -107,7 +107,7 @@ if ('onhashchange' in window) { 48 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 49 # . compare 50 3d/compare-eax-and 0x23/imm32/pound - 51 75/jump-if-not-equal $next-word-or-string:check-for-string-literal/disp8 + 51 75/jump-if-!= $next-word-or-string:check-for-string-literal/disp8 52 $next-word-or-string:comment: 53 # out->end = &line->data[line->write] 54 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax @@ -125,7 +125,7 @@ if ('onhashchange' in window) { 66 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 67 # . compare 68 3d/compare-eax-and 0x22/imm32/dquote - 69 75/jump-if-not-equal $next-word-or-string:regular-word/disp8 + 69 75/jump-if-!= $next-word-or-string:regular-word/disp8 70 $next-word-or-string:string-literal: 71 # skip-string(line) 72 # . . push args diff --git a/html/091write-int.subx.html b/html/091write-int.subx.html index d69537e4..16538350 100644 --- a/html/091write-int.subx.html +++ b/html/091write-int.subx.html @@ -79,7 +79,7 @@ if ('onhashchange' in window) { 19 8b/copy 0/mod/indirect 7/rm32/edi . . . 1/r32/ecx . . # copy *edi to ecx 20 # if (out->write >= out->length) abort 21 3b/compare 1/mod/*+disp8 7/rm32/edi . . . 1/r32/ecx 8/disp8 . # compare ecx with *(edi+8) - 22 7d/jump-if-greater-or-equal $write-int:abort/disp8 + 22 7d/jump-if->= $write-int:abort/disp8 23 $write-int:to-stream: 24 # out->data[out->write] = n 25 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax diff --git a/html/092stack.subx.html b/html/092stack.subx.html index 1b0e6fe7..8427a1f8 100644 --- a/html/092stack.subx.html +++ b/html/092stack.subx.html @@ -86,7 +86,7 @@ if ('onhashchange' in window) { 26 $clear-stack:loop: 27 # if (curr >= max) break 28 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . . # compare eax with ecx - 29 73/jump-if-greater-or-equal-unsigned $clear-stack:end/disp8 + 29 73/jump-if-addr>= $clear-stack:end/disp8 30 # *curr = 0 31 c6 0/subop/copy 0/mod/direct 0/rm32/eax . . . . . 0/imm8 # copy byte to *eax 32 # ++curr @@ -181,7 +181,7 @@ if ('onhashchange' in window) { 121 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx 122 # if (s->top >= s->length) abort 123 39/compare 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # compare *(esi+4) and ecx -124 7e/jump-if-lesser-or-equal $push:abort/disp8 +124 7e/jump-if-<= $push:abort/disp8 125 # s->data[s->top] = n 126 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax 127 89/copy 1/mod/*+disp8 4/rm32/sib 6/base/esi 1/index/ecx . 0/r32/eax 8/disp8 . # copy eax to *(esi+ecx+8) @@ -298,7 +298,7 @@ if ('onhashchange' in window) { 238 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 8/disp8 . # copy *(ebp+8) to esi 239 # if (s->top <= 0) abort 240 81 7/subop/compare 0/mod/indirect 6/rm32/esi . . . . . 0/imm32 # compare *esi -241 7e/jump-if-lesser-or-equal $pop:abort/disp8 +241 7e/jump-if-<= $pop:abort/disp8 242 # s->top -= 4 243 81 5/subop/subtract 0/mod/direct 6/rm32/esi . . . . . 4/imm32 # subtract from *esi 244 # eax = s->data[s->top] @@ -402,7 +402,7 @@ if ('onhashchange' in window) { 342 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 8/disp8 . # copy *(ebp+8) to esi 343 # if (s->top <= 0) abort 344 81 7/subop/compare 0/mod/indirect 6/rm32/esi . . . . . 0/imm32 # compare *esi -345 7e/jump-if-lesser-or-equal $top:abort/disp8 +345 7e/jump-if-<= $top:abort/disp8 346 # n = s->data[s->top - 4] 347 8b/copy 0/mod/indirect 6/rm32/esi . . . 1/r32/ecx . . # copy *esi to ecx 348 81 5/subop/subtract 3/mod/direct 1/rm32/ecx . . . . . 4/imm32 # subtract from ecx diff --git a/html/100array-equal.subx.html b/html/100array-equal.subx.html index 89c48e6b..ab7a0357 100644 --- a/html/100array-equal.subx.html +++ b/html/100array-equal.subx.html @@ -102,7 +102,7 @@ if ('onhashchange' in window) { 42 $array-equal?:lengths: 43 # if (lena != b->length) return false 44 39/compare *edi 2/r32/edx - 45 75/jump-if-not-equal $array-equal?:false/disp8 + 45 75/jump-if-!= $array-equal?:false/disp8 46 # var curra/esi : (addr byte) = a->data 47 81 0/subop/add %esi 4/imm32 48 # var currb/edi : (addr byte) = b->data @@ -114,14 +114,14 @@ if ('onhashchange' in window) { 54 $array-equal?:loop: 55 # if (i >= lena) return true 56 39/compare %ecx 2/r32/edx - 57 7d/jump-if-greater-or-equal $array-equal?:true/disp8 + 57 7d/jump-if->= $array-equal?:true/disp8 58 # var vala/eax : int = *curra 59 8b/-> *esi 0/r32/eax 60 # var valb/ebx : int = *currb 61 8b/-> *edi 3/r32/ebx 62 # if (vala != valb) return false 63 39/compare %eax 3/r32/ebx - 64 75/jump-if-not-equal $array-equal?:false/disp8 + 64 75/jump-if-!= $array-equal?:false/disp8 65 # i += 4 66 81 0/subop/add %ecx 4/imm32 67 # currs += 4 @@ -335,7 +335,7 @@ if ('onhashchange' in window) { 275 $parse-array-of-ints:loop1: 276 # if (curr >= end) break 277 39/compare %ecx 2/r32/edx -278 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:break1/disp8 +278 73/jump-if-addr>= $parse-array-of-ints:break1/disp8 279 # curr = skip-chars-matching-in-slice(curr, end, ' ') 280 # . eax = skip-chars-matching-in-slice(curr, end, ' ') 281 # . . push args @@ -350,7 +350,7 @@ if ('onhashchange' in window) { 290 89/<- %ecx 0/r32/eax 291 # if (curr >= end) break 292 39/compare %ecx 2/r32/edx -293 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:break1/disp8 +293 73/jump-if-addr>= $parse-array-of-ints:break1/disp8 294 # curr = skip-chars-not-matching-in-slice(curr, end, ' ') 295 # . eax = skip-chars-not-matching-in-slice(curr, end, ' ') 296 # . . push args @@ -393,7 +393,7 @@ if ('onhashchange' in window) { 333 $parse-array-of-ints:loop2: 334 # if (slice->start >= end) break 335 39/compare *ecx 2/r32/edx -336 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:end/disp8 +336 73/jump-if-addr>= $parse-array-of-ints:end/disp8 337 # slice->start = skip-chars-matching-in-slice(slice->start, end, ' ') 338 # . eax = skip-chars-matching-in-slice(slice->start, end, ' ') 339 # . . push args @@ -408,7 +408,7 @@ if ('onhashchange' in window) { 348 89/<- *ecx 0/r32/eax 349 # if (slice->start >= end) break 350 39/compare *ecx 2/r32/edx -351 73/jump-if-greater-or-equal-unsigned $parse-array-of-ints:end/disp8 +351 73/jump-if-addr>= $parse-array-of-ints:end/disp8 352 # slice->end = skip-chars-not-matching-in-slice(slice->start, end, ' ') 353 # . eax = skip-chars-not-matching-in-slice(curr, end, ' ') 354 # . . push args 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 diff --git a/mu-init-test.subx b/mu-init-test.subx index 977147fa..f51999c8 100644 --- a/mu-init-test.subx +++ b/mu-init-test.subx @@ -16,11 +16,11 @@ main: # args : (address array kernel-string) -> result/ebx : int { # if (argc <= 1) break 81 7/subop/compare *esi 1/imm32 - 7e/jump-if-lesser-or-equal break/disp8 + 7e/jump-if-<= break/disp8 # if (argv[1] != "test") break (kernel-string-equal? *(esi+8) "test") # => eax 3d/compare-eax-and 0/imm32 - 74/jump-if-equal break/disp8 + 74/jump-if-= break/disp8 # (run-tests) # return *Num-test-failures diff --git a/tools/update_html b/tools/update_html index 7efddfe7..34a52eea 100755 --- a/tools/update_html +++ b/tools/update_html @@ -38,13 +38,6 @@ convert_html() { mv -i $1.html html/`dirname $1` } -ctags -x *.cc |grep -v '^. ' > /tmp/tags # don't hyperlink every 'i' to the integer register variant -for f in *.cc -do - test $# -gt 0 && test $1 != $f && continue - process $f -done - ctags -x *.subx > /tmp/tags for f in *.subx do @@ -61,13 +54,4 @@ do process $f done -for f in apps/*.mu -do - test $# -gt 0 && test $1 != $f && continue - ( cd apps - ctags -x ../*.subx `basename $f` > /tmp/tags - ) - process $f -done - rm /tmp/tags