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