From ec73ed1230d75deb0f913a32617c9f1e0a5ca640 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Fri, 10 Jul 2020 23:44:10 -0700 Subject: 6631 --- html/085next-word-or-string.subx.html | 479 ---------------------------------- 1 file changed, 479 deletions(-) delete mode 100644 html/085next-word-or-string.subx.html (limited to 'html/085next-word-or-string.subx.html') diff --git a/html/085next-word-or-string.subx.html b/html/085next-word-or-string.subx.html deleted file mode 100644 index 7837d7f6..00000000 --- a/html/085next-word-or-string.subx.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - -Mu - 085next-word-or-string.subx - - - - - - - - - - -https://github.com/akkartik/mu/blob/master/085next-word-or-string.subx -
-  1 == code
-  2 #   instruction                     effective address                                                   register    displacement    immediate
-  3 # . op          subop               mod             rm32          base        index         scale       r32
-  4 # . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes
-  5 
-  6 # (re)compute the bounds of the next word or string literal in the line
-  7 # return empty string on reaching end of file
-  8 next-word-or-string:  # line: (addr stream byte), out: (addr slice)
-  9     # . prologue
- 10     55/push-ebp
- 11     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
- 12     # . save registers
- 13     50/push-eax
- 14     51/push-ecx
- 15     56/push-esi
- 16     57/push-edi
- 17     # esi = line
- 18     8b/copy                         1/mod/*+disp8   5/rm32/ebp    .           .             .           6/r32/esi   8/disp8         .                 # copy *(ebp+8) to esi
- 19     # edi = out
- 20     8b/copy                         1/mod/*+disp8   5/rm32/ebp    .           .             .           7/r32/edi   0xc/disp8       .                 # copy *(ebp+12) to edi
- 21     # skip-chars-matching(line, ' ')
- 22     # . . push args
- 23     68/push  0x20/imm32/space
- 24     ff          6/subop/push        1/mod/*+disp8   5/rm32/ebp    .           .             .           .           8/disp8         .                 # push *(ebp+8)
- 25     # . . call
- 26     e8/call  skip-chars-matching/disp32
- 27     # . . discard args
- 28     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
- 29 $next-word-or-string:check0:
- 30     # if (line->read >= line->write) clear out and return
- 31     # . eax = line->read
- 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-<  $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)
- 39     eb/jump  $next-word-or-string:end/disp8
- 40 $next-word-or-string:check-for-comment:
- 41     # out->start = &line->data[line->read]
- 42     8b/copy                         1/mod/*+disp8   6/rm32/esi    .           .             .           1/r32/ecx   4/disp8         .                 # copy *(esi+4) to ecx
- 43     8d/copy-address                 1/mod/*+disp8   4/rm32/sib    6/base/esi  1/index/ecx   .           0/r32/eax   0xc/disp8       .                 # copy esi+ecx+12 to eax
- 44     89/copy                         0/mod/indirect  7/rm32/edi    .           .             .           0/r32/eax   .               .                 # copy eax to *edi
- 45     # if (line->data[line->read] != '#') goto next check
- 46     # . eax = line->data[line->read]
- 47     31/xor                          3/mod/direct    0/rm32/eax    .           .             .           0/r32/eax   .               .                 # clear eax
- 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-!=  $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
- 55     8d/copy-address                 1/mod/*+disp8   4/rm32/sib    6/base/esi  0/index/eax   .           0/r32/eax   0xc/disp8       .                 # copy esi+eax+12 to eax
- 56     89/copy                         1/mod/*+disp8   7/rm32/edi    .           .             .           0/r32/eax   4/disp8         .                 # copy eax to *(edi+4)
- 57     # line->read = line->write  # skip rest of line
- 58     8b/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy *esi to eax
- 59     89/copy                         1/mod/*+disp8   6/rm32/esi    .           .             .           0/r32/eax   4/disp8         .                 # copy eax to *(esi+4)
- 60     # return
- 61     eb/jump  $next-word-or-string:end/disp8
- 62 $next-word-or-string:check-for-string-literal:
- 63     # if (line->data[line->read] != '"') goto next check
- 64     # . eax = line->data[line->read]
- 65     31/xor                          3/mod/direct    0/rm32/eax    .           .             .           0/r32/eax   .               .                 # clear eax
- 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-!=  $next-word-or-string:regular-word/disp8
- 70 $next-word-or-string:string-literal:
- 71     # skip-string(line)
- 72     # . . push args
- 73     56/push-esi
- 74     # . . call
- 75     e8/call  skip-string/disp32
- 76     # . . discard args
- 77     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
- 78     # fall through
- 79 $next-word-or-string:regular-word:
- 80     # skip-chars-not-matching-whitespace(line)  # including trailing newline
- 81     # . . push args
- 82     ff          6/subop/push        1/mod/*+disp8   5/rm32/ebp    .           .             .           .           8/disp8         .                 # push *(ebp+8)
- 83     # . . call
- 84     e8/call  skip-chars-not-matching-whitespace/disp32
- 85     # . . discard args
- 86     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
- 87     # out->end = &line->data[line->read]
- 88     8b/copy                         1/mod/*+disp8   6/rm32/esi    .           .             .           1/r32/ecx   4/disp8         .                 # copy *(esi+4) to ecx
- 89     8d/copy-address                 1/mod/*+disp8   4/rm32/sib    6/base/esi  1/index/ecx   .           0/r32/eax   0xc/disp8       .                 # copy esi+ecx+12 to eax
- 90     89/copy                         1/mod/*+disp8   7/rm32/edi    .           .             .           0/r32/eax   4/disp8         .                 # copy eax to *(edi+4)
- 91 $next-word-or-string:end:
- 92     # . restore registers
- 93     5f/pop-to-edi
- 94     5e/pop-to-esi
- 95     59/pop-to-ecx
- 96     58/pop-to-eax
- 97     # . epilogue
- 98     89/copy                         3/mod/direct    4/rm32/esp    .           .             .           5/r32/ebp   .               .                 # copy ebp to esp
- 99     5d/pop-to-ebp
-100     c3/return
-101 
-102 test-next-word-or-string:
-103     # . prologue
-104     55/push-ebp
-105     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
-106     # setup
-107     # . clear-stream(_test-input-stream)
-108     # . . push args
-109     68/push  _test-input-stream/imm32
-110     # . . call
-111     e8/call  clear-stream/disp32
-112     # . . discard args
-113     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
-114     # var slice/ecx: slice
-115     68/push  0/imm32/end
-116     68/push  0/imm32/start
-117     89/copy                         3/mod/direct    1/rm32/ecx    .           .             .           4/r32/esp   .               .                 # copy esp to ecx
-118     # write(_test-input-stream, "  ab")
-119     # . . push args
-120     68/push  "  ab"/imm32
-121     68/push  _test-input-stream/imm32
-122     # . . call
-123     e8/call  write/disp32
-124     # . . discard args
-125     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-126     # next-word-or-string(_test-input-stream, slice)
-127     # . . push args
-128     51/push-ecx
-129     68/push  _test-input-stream/imm32
-130     # . . call
-131     e8/call  next-word-or-string/disp32
-132     # . . discard args
-133     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-134     # check-ints-equal(_test-input-stream->read, 4, msg)
-135     # . . push args
-136     68/push  "F - test-next-word-or-string/updates-stream-read-correctly"/imm32
-137     68/push  4/imm32
-138     b8/copy-to-eax  _test-input-stream/imm32
-139     ff          6/subop/push        1/mod/*+disp8   0/rm32/eax    .           .             .           .           4/disp8         .                 # push *(eax+4)
-140     # . . call
-141     e8/call  check-ints-equal/disp32
-142     # . . discard args
-143     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-144     # check-ints-equal(slice->start - _test-input-stream->data, 2, msg)
-145     # . check-ints-equal(slice->start - _test-input-stream, 14, msg)
-146     # . . push args
-147     68/push  "F - test-next-word-or-string: start"/imm32
-148     68/push  0xe/imm32
-149     # . . push slice->start - _test-input-stream
-150     8b/copy                         0/mod/indirect  1/rm32/ecx    .           .             .           0/r32/eax   .               .                 # copy *ecx to eax
-151     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-152     50/push-eax
-153     # . . call
-154     e8/call  check-ints-equal/disp32
-155     # . . discard args
-156     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-157     # check-ints-equal(slice->end - _test-input-stream->data, 4, msg)
-158     # . check-ints-equal(slice->end - _test-input-stream, 16, msg)
-159     # . . push args
-160     68/push  "F - test-next-word-or-string: end"/imm32
-161     68/push  0x10/imm32
-162     # . . push slice->end - _test-input-stream
-163     8b/copy                         1/mod/*+disp8   1/rm32/ecx    .           .             .           0/r32/eax   4/disp8         .                 # copy *(ecx+4) to eax
-164     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-165     50/push-eax
-166     # . . call
-167     e8/call  check-ints-equal/disp32
-168     # . . discard args
-169     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-170     # . epilogue
-171     89/copy                         3/mod/direct    4/rm32/esp    .           .             .           5/r32/ebp   .               .                 # copy ebp to esp
-172     5d/pop-to-ebp
-173     c3/return
-174 
-175 test-next-word-or-string-returns-whole-comment:
-176     # . prologue
-177     55/push-ebp
-178     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
-179     # setup
-180     # . clear-stream(_test-input-stream)
-181     # . . push args
-182     68/push  _test-input-stream/imm32
-183     # . . call
-184     e8/call  clear-stream/disp32
-185     # . . discard args
-186     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
-187     # var slice/ecx: slice
-188     68/push  0/imm32/end
-189     68/push  0/imm32/start
-190     89/copy                         3/mod/direct    1/rm32/ecx    .           .             .           4/r32/esp   .               .                 # copy esp to ecx
-191     # write(_test-input-stream, "  # a")
-192     # . . push args
-193     68/push  "  # a"/imm32
-194     68/push  _test-input-stream/imm32
-195     # . . call
-196     e8/call  write/disp32
-197     # . . discard args
-198     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-199     # next-word-or-string(_test-input-stream, slice)
-200     # . . push args
-201     51/push-ecx
-202     68/push  _test-input-stream/imm32
-203     # . . call
-204     e8/call  next-word-or-string/disp32
-205     # . . discard args
-206     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-207     # check-ints-equal(_test-input-stream->read, 5, msg)
-208     # . . push args
-209     68/push  "F - test-next-word-or-string-returns-whole-comment/updates-stream-read-correctly"/imm32
-210     68/push  5/imm32
-211     b8/copy-to-eax  _test-input-stream/imm32
-212     ff          6/subop/push        1/mod/*+disp8   0/rm32/eax    .           .             .           .           4/disp8         .                 # push *(eax+4)
-213     # . . call
-214     e8/call  check-ints-equal/disp32
-215     # . . discard args
-216     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-217     # check-ints-equal(slice->start - _test-input-stream->data, 2, msg)
-218     # . check-ints-equal(slice->start - _test-input-stream, 14, msg)
-219     # . . push args
-220     68/push  "F - test-next-word-or-string-returns-whole-comment: start"/imm32
-221     68/push  0xe/imm32
-222     # . . push slice->start - _test-input-stream
-223     8b/copy                         0/mod/indirect  1/rm32/ecx    .           .             .           0/r32/eax   .               .                 # copy *ecx to eax
-224     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-225     50/push-eax
-226     # . . call
-227     e8/call  check-ints-equal/disp32
-228     # . . discard args
-229     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-230     # check-ints-equal(slice->end - _test-input-stream->data, 5, msg)
-231     # . check-ints-equal(slice->end - _test-input-stream, 17, msg)
-232     # . . push args
-233     68/push  "F - test-next-word-or-string-returns-whole-comment: end"/imm32
-234     68/push  0x11/imm32
-235     # . . push slice->end - _test-input-stream
-236     8b/copy                         1/mod/*+disp8   1/rm32/ecx    .           .             .           0/r32/eax   4/disp8         .                 # copy *(ecx+4) to eax
-237     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-238     50/push-eax
-239     # . . call
-240     e8/call  check-ints-equal/disp32
-241     # . . discard args
-242     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-243     # . epilogue
-244     89/copy                         3/mod/direct    4/rm32/esp    .           .             .           5/r32/ebp   .               .                 # copy ebp to esp
-245     5d/pop-to-ebp
-246     c3/return
-247 
-248 test-next-word-or-string-returns-empty-slice-on-eof:
-249     # . prologue
-250     55/push-ebp
-251     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
-252     # setup
-253     # . clear-stream(_test-input-stream)
-254     # . . push args
-255     68/push  _test-input-stream/imm32
-256     # . . call
-257     e8/call  clear-stream/disp32
-258     # . . discard args
-259     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
-260     # var slice/ecx: slice
-261     68/push  0/imm32/end
-262     68/push  0/imm32/start
-263     89/copy                         3/mod/direct    1/rm32/ecx    .           .             .           4/r32/esp   .               .                 # copy esp to ecx
-264     # write nothing to _test-input-stream
-265     # next-word-or-string(_test-input-stream, slice)
-266     # . . push args
-267     51/push-ecx
-268     68/push  _test-input-stream/imm32
-269     # . . call
-270     e8/call  next-word-or-string/disp32
-271     # . . discard args
-272     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-273     # check-ints-equal(slice->end - slice->start, 0, msg)
-274     # . . push args
-275     68/push  "F - test-next-word-or-string-returns-empty-string-on-eof"/imm32
-276     68/push  0/imm32
-277     # . . push slice->end - slice->start
-278     8b/copy                         1/mod/*+disp8   1/rm32/ecx    .           .             .           0/r32/eax   4/disp8         .                 # copy *(ecx+4) to eax
-279     2b/subtract                     0/mod/indirect  1/rm32/ecx    .           .             .           0/r32/eax   .               .                 # subtract *ecx from eax
-280     50/push-eax
-281     # . . call
-282     e8/call  check-ints-equal/disp32
-283     # . . discard args
-284     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-285     # . epilogue
-286     89/copy                         3/mod/direct    4/rm32/esp    .           .             .           5/r32/ebp   .               .                 # copy ebp to esp
-287     5d/pop-to-ebp
-288     c3/return
-289 
-290 test-next-word-or-string-returns-string-literal:
-291     # . prologue
-292     55/push-ebp
-293     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
-294     # setup
-295     # . clear-stream(_test-input-stream)
-296     # . . push args
-297     68/push  _test-input-stream/imm32
-298     # . . call
-299     e8/call  clear-stream/disp32
-300     # . . discard args
-301     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
-302     # var slice/ecx: slice
-303     68/push  0/imm32/end
-304     68/push  0/imm32/start
-305     89/copy                         3/mod/direct    1/rm32/ecx    .           .             .           4/r32/esp   .               .                 # copy esp to ecx
-306     # write(_test-input-stream, " \"a b\"/imm32 ")
-307     # . . push args
-308     68/push  " \"a b\"/imm32 "/imm32
-309     68/push  _test-input-stream/imm32
-310     # . . call
-311     e8/call  write/disp32
-312     # . . discard args
-313     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-314     # next-word-or-string(_test-input-stream, slice)
-315     # . . push args
-316     51/push-ecx
-317     68/push  _test-input-stream/imm32
-318     # . . call
-319     e8/call  next-word-or-string/disp32
-320     # . . discard args
-321     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-322     # check-ints-equal(slice->start - _test-input-stream->data, 1, msg)
-323     # . check-ints-equal(slice->start - _test-input-stream, 13, msg)
-324     # . . push args
-325     68/push  "F - test-next-word-or-string-returns-string-literal: start"/imm32
-326     68/push  0xd/imm32
-327     # . . push slice->start - _test-input-stream
-328     8b/copy                         0/mod/indirect  1/rm32/ecx    .           .             .           0/r32/eax   .               .                 # copy *ecx to eax
-329     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-330     50/push-eax
-331     # . . call
-332     e8/call  check-ints-equal/disp32
-333     # . . discard args
-334     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-335     # check-ints-equal(slice->end - _test-input-stream->data, 12, msg)
-336     # . check-ints-equal(slice->end - _test-input-stream, 24, msg)
-337     # . . push args
-338     68/push  "F - test-next-word-or-string-returns-string-literal: end"/imm32
-339     68/push  0x18/imm32
-340     # . . push slice->end - _test-input-stream
-341     8b/copy                         1/mod/*+disp8   1/rm32/ecx    .           .             .           0/r32/eax   4/disp8         .                 # copy *(ecx+4) to eax
-342     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-343     50/push-eax
-344     # . . call
-345     e8/call  check-ints-equal/disp32
-346     # . . discard args
-347     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-348     # . epilogue
-349     89/copy                         3/mod/direct    4/rm32/esp    .           .             .           5/r32/ebp   .               .                 # copy ebp to esp
-350     5d/pop-to-ebp
-351     c3/return
-352 
-353 test-next-word-or-string-returns-string-with-escapes:
-354     # . prologue
-355     55/push-ebp
-356     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
-357     # setup
-358     # . clear-stream(_test-input-stream)
-359     # . . push args
-360     68/push  _test-input-stream/imm32
-361     # . . call
-362     e8/call  clear-stream/disp32
-363     # . . discard args
-364     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
-365     # var slice/ecx: slice
-366     68/push  0/imm32/end
-367     68/push  0/imm32/start
-368     89/copy                         3/mod/direct    1/rm32/ecx    .           .             .           4/r32/esp   .               .                 # copy esp to ecx
-369     # write(_test-input-stream, " \"a\\\"b\"/x")
-370     # . . push args
-371     68/push  " \"a\\\"b\"/x"/imm32
-372     68/push  _test-input-stream/imm32
-373     # . . call
-374     e8/call  write/disp32
-375     # . . discard args
-376     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-377     # next-word-or-string(_test-input-stream, slice)
-378     # . . push args
-379     51/push-ecx
-380     68/push  _test-input-stream/imm32
-381     # . . call
-382     e8/call  next-word-or-string/disp32
-383     # . . discard args
-384     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-385     # check-ints-equal(slice->start - _test-input-stream->data, 1, msg)
-386     # . check-ints-equal(slice->start - _test-input-stream, 13, msg)
-387     # . . push args
-388     68/push  "F - test-next-word-or-string-returns-string-with-escapes: start"/imm32
-389     68/push  0xd/imm32
-390     # . . push slice->start - _test-input-stream
-391     8b/copy                         0/mod/indirect  1/rm32/ecx    .           .             .           0/r32/eax   .               .                 # copy *ecx to eax
-392     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-393     50/push-eax
-394     # . . call
-395     e8/call  check-ints-equal/disp32
-396     # . . discard args
-397     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-398     # check-ints-equal(slice->end - _test-input-stream->data, 9, msg)
-399     # . check-ints-equal(slice->end - _test-input-stream, 21, msg)
-400     # . . push args
-401     68/push  "F - test-next-word-or-string-returns-string-with-escapes: end"/imm32
-402     68/push  0x15/imm32
-403     # . . push slice->end - _test-input-stream
-404     8b/copy                         1/mod/*+disp8   1/rm32/ecx    .           .             .           0/r32/eax   4/disp8         .                 # copy *(ecx+4) to eax
-405     81          5/subop/subtract    3/mod/direct    0/rm32/eax    .           .             .           .           .               _test-input-stream/imm32 # subtract from eax
-406     50/push-eax
-407     # . . call
-408     e8/call  check-ints-equal/disp32
-409     # . . discard args
-410     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-411     # . epilogue
-412     89/copy                         3/mod/direct    4/rm32/esp    .           .             .           5/r32/ebp   .               .                 # copy ebp to esp
-413     5d/pop-to-ebp
-414     c3/return
-415 
-416 # . . vim:nowrap:textwidth=0
-
- - - -- cgit 1.4.1-2-gfad0