about summary refs log tree commit diff stats
path: root/html/apps/dquotes.subx.html
diff options
context:
space:
mode:
Diffstat (limited to 'html/apps/dquotes.subx.html')
-rw-r--r--html/apps/dquotes.subx.html783
1 files changed, 178 insertions, 605 deletions
diff --git a/html/apps/dquotes.subx.html b/html/apps/dquotes.subx.html
index ecffb4d6..6e9d009a 100644
--- a/html/apps/dquotes.subx.html
+++ b/html/apps/dquotes.subx.html
@@ -65,7 +65,7 @@ if ('onhashchange' in window) {
 <span id="L2" class="LineNr">   2 </span><span class="subxComment"># Replace them with references to new variables in the data segment.</span>
 <span id="L3" class="LineNr">   3 </span><span class="subxComment">#</span>
 <span id="L4" class="LineNr">   4 </span><span class="subxComment"># To run:</span>
-<span id="L5" class="LineNr">   5 </span><span class="subxComment">#   $ ./subx translate *.subx apps/dquotes.subx -o apps/dquotes</span>
+<span id="L5" class="LineNr">   5 </span><span class="subxComment">#   $ ./subx translate 0*.subx apps/subx-common.subx apps/dquotes.subx  -o apps/dquotes</span>
 <span id="L6" class="LineNr">   6 </span><span class="subxComment">#   $ cat x</span>
 <span id="L7" class="LineNr">   7 </span><span class="subxComment">#   == code</span>
 <span id="L8" class="LineNr">   8 </span><span class="subxComment">#   ab &quot;cd ef&quot;/imm32</span>
@@ -369,7 +369,7 @@ if ('onhashchange' in window) {
 <span id="L306" class="LineNr"> 306 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L307" class="LineNr"> 307 </span>    <span class="subxS1Comment"># . print-int32-decimal(out-segment, *Next-string-literal)</span>
 <span id="L308" class="LineNr"> 308 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L309" class="LineNr"> 309 </span>    ff          6/subop/push        0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          <span class="SpecialChar"><a href='dquotes.subx.html#L2715'>Next-string-literal</a></span>/disp32        <span class="subxComment"># push *Next-string-literal</span>
+<span id="L309" class="LineNr"> 309 </span>    ff          6/subop/push        0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          <span class="SpecialChar"><a href='dquotes.subx.html#L2288'>Next-string-literal</a></span>/disp32        <span class="subxComment"># push *Next-string-literal</span>
 <span id="L310" class="LineNr"> 310 </span>    ff          6/subop/push        1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          0x10/disp8     <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+16)</span>
 <span id="L311" class="LineNr"> 311 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L312" class="LineNr"> 312 </span>    e8/call  <a href='../074print-int-decimal.subx.html#L8'>print-int32-decimal</a>/disp32
@@ -410,7 +410,7 @@ if ('onhashchange' in window) {
 <span id="L347" class="LineNr"> 347 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L348" class="LineNr"> 348 </span>    <span class="subxS1Comment"># . print-int32-decimal(int32-stream, *Next-string-literal)</span>
 <span id="L349" class="LineNr"> 349 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L350" class="LineNr"> 350 </span>    ff          6/subop/push        0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          <span class="SpecialChar"><a href='dquotes.subx.html#L2715'>Next-string-literal</a></span>/disp32        <span class="subxComment"># push *Next-string-literal</span>
+<span id="L350" class="LineNr"> 350 </span>    ff          6/subop/push        0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          <span class="SpecialChar"><a href='dquotes.subx.html#L2288'>Next-string-literal</a></span>/disp32        <span class="subxComment"># push *Next-string-literal</span>
 <span id="L351" class="LineNr"> 351 </span>    51/push-ECX
 <span id="L352" class="LineNr"> 352 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L353" class="LineNr"> 353 </span>    e8/call  <a href='../074print-int-decimal.subx.html#L8'>print-int32-decimal</a>/disp32
@@ -433,7 +433,7 @@ if ('onhashchange' in window) {
 <span id="L370" class="LineNr"> 370 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L371" class="LineNr"> 371 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L372" class="LineNr"> 372 </span>    <span class="subxComment"># ++ *Next-string-literal</span>
-<span id="L373" class="LineNr"> 373 </span>    ff          0/subop/increment   0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          <span class="SpecialChar"><a href='dquotes.subx.html#L2715'>Next-string-literal</a></span>/disp32        <span class="subxComment"># increment *Num-test-failures</span>
+<span id="L373" class="LineNr"> 373 </span>    ff          0/subop/increment   0/mod/indirect  5/rm32/.disp32           <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          <span class="SpecialChar"><a href='dquotes.subx.html#L2288'>Next-string-literal</a></span>/disp32        <span class="subxComment"># increment *Num-test-failures</span>
 <span id="L374" class="LineNr"> 374 </span><span class="Constant">$process-string-literal:end</span>:
 <span id="L375" class="LineNr"> 375 </span>    <span class="subxS1Comment"># . reclaim locals</span>
 <span id="L376" class="LineNr"> 376 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x16/imm32        <span class="subxComment"># add to ESP</span>
@@ -892,7 +892,7 @@ if ('onhashchange' in window) {
 <span id="L886" class="LineNr"> 886 </span>    56/push-ESI
 <span id="L887" class="LineNr"> 887 </span>    52/push-EDX
 <span id="L888" class="LineNr"> 888 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L889" class="LineNr"> 889 </span>    e8/call  <a href='dquotes.subx.html#L2600'>string-length-at-start-of-slice</a>/disp32
+<span id="L889" class="LineNr"> 889 </span>    e8/call  <a href='dquotes.subx.html#L2173'>string-length-at-start-of-slice</a>/disp32
 <span id="L890" class="LineNr"> 890 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L891" class="LineNr"> 891 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L892" class="LineNr"> 892 </span>    <span class="subxComment"># print(out, &quot;#{len}/imm32 &quot;)</span>
@@ -962,7 +962,7 @@ if ('onhashchange' in window) {
 <span id="L956" class="LineNr"> 956 </span>    74/jump-if-equal  $emit-string-literal-data:char-done/disp8
 <span id="L957" class="LineNr"> 957 </span>    <span class="subxS1Comment"># . write(out, &quot;/&quot;)</span>
 <span id="L958" class="LineNr"> 958 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L959" class="LineNr"> 959 </span>    68/push  <span class="SpecialChar"><a href='dquotes.subx.html#L2726'>Slash</a></span>/imm32
+<span id="L959" class="LineNr"> 959 </span>    68/push  <span class="SpecialChar"><a href='dquotes.subx.html#L2299'>Slash</a></span>/imm32
 <span id="L960" class="LineNr"> 960 </span>    ff          6/subop/push        1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+8)</span>
 <span id="L961" class="LineNr"> 961 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L962" class="LineNr"> 962 </span>    e8/call  <a href='../057write.subx.html#L24'>write</a>/disp32
@@ -979,7 +979,7 @@ if ('onhashchange' in window) {
 <span id="L973" class="LineNr"> 973 </span><span class="Constant">$emit-string-literal-data:char-done</span>:
 <span id="L974" class="LineNr"> 974 </span>    <span class="subxComment"># write(out, &quot; &quot;)</span>
 <span id="L975" class="LineNr"> 975 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L976" class="LineNr"> 976 </span>    68/push  <span class="SpecialChar"><a href='dquotes.subx.html#L2719'>Space</a></span>/imm32
+<span id="L976" class="LineNr"> 976 </span>    68/push  <span class="SpecialChar"><a href='dquotes.subx.html#L2292'>Space</a></span>/imm32
 <span id="L977" class="LineNr"> 977 </span>    ff          6/subop/push        1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EBP+8)</span>
 <span id="L978" class="LineNr"> 978 </span>    <span class="subxS2Comment"># . . call</span>
 <span id="L979" class="LineNr"> 979 </span>    e8/call  <a href='../057write.subx.html#L24'>write</a>/disp32
@@ -1048,8 +1048,8 @@ if ('onhashchange' in window) {
 <span id="L1042" class="LineNr">1042 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1043" class="LineNr">1043 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L1044" class="LineNr">1044 </span>    <span class="subxComment"># var slice/ECX = '&quot;abc&quot;/d'</span>
-<span id="L1045" class="LineNr">1045 </span>    68/push  <a href='dquotes.subx.html#L2735'>_test-slice-abc-limit</a>/imm32
-<span id="L1046" class="LineNr">1046 </span>    68/push  <a href='dquotes.subx.html#L2732'>_test-slice-abc</a>/imm32
+<span id="L1045" class="LineNr">1045 </span>    68/push  <a href='dquotes.subx.html#L2308'>_test-slice-abc-limit</a>/imm32
+<span id="L1046" class="LineNr">1046 </span>    68/push  <a href='dquotes.subx.html#L2305'>_test-slice-abc</a>/imm32
 <span id="L1047" class="LineNr">1047 </span>    89/copy                         3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to ECX</span>
 <span id="L1048" class="LineNr">1048 </span>    <span class="subxComment"># emit-string-literal-data(_test-output-stream, slice)</span>
 <span id="L1049" class="LineNr">1049 </span>    <span class="subxS2Comment"># . . push args</span>
@@ -1127,8 +1127,8 @@ if ('onhashchange' in window) {
 <span id="L1171" class="LineNr">1171 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1172" class="LineNr">1172 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L1173" class="LineNr">1173 </span>    <span class="subxComment"># var slice/ECX = '&quot;a b&quot;'</span>
-<span id="L1174" class="LineNr">1174 </span>    68/push  <a href='dquotes.subx.html#L2739'>_test-slice-a-space-b-limit</a>/imm32
-<span id="L1175" class="LineNr">1175 </span>    68/push  <a href='dquotes.subx.html#L2737'>_test-slice-a-space-b</a>/imm32
+<span id="L1174" class="LineNr">1174 </span>    68/push  <a href='dquotes.subx.html#L2312'>_test-slice-a-space-b-limit</a>/imm32
+<span id="L1175" class="LineNr">1175 </span>    68/push  <a href='dquotes.subx.html#L2310'>_test-slice-a-space-b</a>/imm32
 <span id="L1176" class="LineNr">1176 </span>    89/copy                         3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to ECX</span>
 <span id="L1177" class="LineNr">1177 </span>    <span class="subxComment"># emit-string-literal-data(_test-output-stream, slice)</span>
 <span id="L1178" class="LineNr">1178 </span>    <span class="subxS2Comment"># . . push args</span>
@@ -1166,8 +1166,8 @@ if ('onhashchange' in window) {
 <span id="L1235" class="LineNr">1235 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1236" class="LineNr">1236 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L1237" class="LineNr">1237 </span>    <span class="subxComment"># var slice/ECX = '&quot;a\&quot;b&quot;'</span>
-<span id="L1238" class="LineNr">1238 </span>    68/push  <a href='dquotes.subx.html#L2743'>_test-slice-a-dquote-b-limit</a>/imm32
-<span id="L1239" class="LineNr">1239 </span>    68/push  <a href='dquotes.subx.html#L2741'>_test-slice-a-dquote-b</a>/imm32
+<span id="L1238" class="LineNr">1238 </span>    68/push  <a href='dquotes.subx.html#L2316'>_test-slice-a-dquote-b-limit</a>/imm32
+<span id="L1239" class="LineNr">1239 </span>    68/push  <a href='dquotes.subx.html#L2314'>_test-slice-a-dquote-b</a>/imm32
 <span id="L1240" class="LineNr">1240 </span>    89/copy                         3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to ECX</span>
 <span id="L1241" class="LineNr">1241 </span>    <span class="subxComment"># emit-string-literal-data(_test-output-stream, slice)</span>
 <span id="L1242" class="LineNr">1242 </span>    <span class="subxS2Comment"># . . push args</span>
@@ -1205,8 +1205,8 @@ if ('onhashchange' in window) {
 <span id="L1299" class="LineNr">1299 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1300" class="LineNr">1300 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L1301" class="LineNr">1301 </span>    <span class="subxComment"># var slice/ECX = '&quot;a\nb&quot;'</span>
-<span id="L1302" class="LineNr">1302 </span>    68/push  <a href='dquotes.subx.html#L2747'>_test-slice-a-newline-b-limit</a>/imm32
-<span id="L1303" class="LineNr">1303 </span>    68/push  <a href='dquotes.subx.html#L2745'>_test-slice-a-newline-b</a>/imm32
+<span id="L1302" class="LineNr">1302 </span>    68/push  <a href='dquotes.subx.html#L2320'>_test-slice-a-newline-b-limit</a>/imm32
+<span id="L1303" class="LineNr">1303 </span>    68/push  <a href='dquotes.subx.html#L2318'>_test-slice-a-newline-b</a>/imm32
 <span id="L1304" class="LineNr">1304 </span>    89/copy                         3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to ECX</span>
 <span id="L1305" class="LineNr">1305 </span>    <span class="subxComment"># emit-string-literal-data(_test-output-stream, slice)</span>
 <span id="L1306" class="LineNr">1306 </span>    <span class="subxS2Comment"># . . push args</span>
@@ -1280,7 +1280,7 @@ if ('onhashchange' in window) {
 <span id="L1399" class="LineNr">1399 </span>    52/push-EDX
 <span id="L1400" class="LineNr">1400 </span>    51/push-ECX
 <span id="L1401" class="LineNr">1401 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1402" class="LineNr">1402 </span>    e8/call  <a href='dquotes.subx.html#L2416'>skip-string-in-slice</a>/disp32
+<span id="L1402" class="LineNr">1402 </span>    e8/call  skip-string-in-slice/disp32
 <span id="L1403" class="LineNr">1403 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1404" class="LineNr">1404 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L1405" class="LineNr">1405 </span>    <span class="subxS1Comment"># . curr = EAX</span>
@@ -1583,8 +1583,8 @@ if ('onhashchange' in window) {
 <span id="L1702" class="LineNr">1702 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1703" class="LineNr">1703 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L1704" class="LineNr">1704 </span>    <span class="subxComment"># var slice/ECX = &quot;\&quot;abc/def\&quot;/ghi&quot;</span>
-<span id="L1705" class="LineNr">1705 </span>    68/push  <a href='dquotes.subx.html#L2756'>_test-slice-literal-string-with-limit</a>/imm32
-<span id="L1706" class="LineNr">1706 </span>    68/push  <a href='dquotes.subx.html#L2750'>_test-slice-literal-string</a>/imm32/start
+<span id="L1705" class="LineNr">1705 </span>    68/push  <a href='dquotes.subx.html#L2329'>_test-slice-literal-string-with-limit</a>/imm32
+<span id="L1706" class="LineNr">1706 </span>    68/push  <a href='dquotes.subx.html#L2323'>_test-slice-literal-string</a>/imm32/start
 <span id="L1707" class="LineNr">1707 </span>    89/copy                         3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to ECX</span>
 <span id="L1708" class="LineNr">1708 </span>    <span class="subxComment"># emit-metadata(_test-output-buffered-file, slice)</span>
 <span id="L1709" class="LineNr">1709 </span>    <span class="subxS2Comment"># . . push args</span>
@@ -1685,7 +1685,7 @@ if ('onhashchange' in window) {
 <span id="L1829" class="LineNr">1829 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1830" class="LineNr">1830 </span>    56/push-ESI
 <span id="L1831" class="LineNr">1831 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L1832" class="LineNr">1832 </span>    e8/call  <a href='dquotes.subx.html#L2175'>skip-string</a>/disp32
+<span id="L1832" class="LineNr">1832 </span>    e8/call  skip-string/disp32
 <span id="L1833" class="LineNr">1833 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1834" class="LineNr">1834 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
 <span id="L1835" class="LineNr">1835 </span>    <span class="subxComment"># fall through</span>
@@ -1858,7 +1858,7 @@ if ('onhashchange' in window) {
 <span id="L2002" class="LineNr">2002 </span>    5d/pop-to-EBP
 <span id="L2003" class="LineNr">2003 </span>    c3/return
 <span id="L2004" class="LineNr">2004 </span>
-<span id="L2005" class="LineNr">2005 </span><span class="subxTest">test-next-word-or-string-returns-empty-string-on-eof</span>:
+<span id="L2005" class="LineNr">2005 </span><span class="subxTest">test-next-word-or-string-returns-empty-slice-on-eof</span>:
 <span id="L2006" class="LineNr">2006 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L2007" class="LineNr">2007 </span>    55/push-EBP
 <span id="L2008" class="LineNr">2008 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
@@ -1900,7 +1900,7 @@ if ('onhashchange' in window) {
 <span id="L2044" class="LineNr">2044 </span>    5d/pop-to-EBP
 <span id="L2045" class="LineNr">2045 </span>    c3/return
 <span id="L2046" class="LineNr">2046 </span>
-<span id="L2047" class="LineNr">2047 </span><span class="subxTest">test-next-word-or-string-returns-whole-string</span>:
+<span id="L2047" class="LineNr">2047 </span><span class="subxTest">test-next-word-or-string-returns-string-literal</span>:
 <span id="L2048" class="LineNr">2048 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L2049" class="LineNr">2049 </span>    55/push-EBP
 <span id="L2050" class="LineNr">2050 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
@@ -1935,7 +1935,7 @@ if ('onhashchange' in window) {
 <span id="L2079" class="LineNr">2079 </span>    <span class="subxComment"># check-ints-equal(slice-&gt;start - _test-input-stream-&gt;data, 1, msg)</span>
 <span id="L2080" class="LineNr">2080 </span>    <span class="subxS1Comment"># . check-ints-equal(slice-&gt;start - _test-input-stream, 13, msg)</span>
 <span id="L2081" class="LineNr">2081 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2082" class="LineNr">2082 </span>    68/push  <span class="Constant">&quot;F - <a href='dquotes.subx.html#L2047'>test-next-word-or-string-returns-whole-string</a>: start&quot;</span>/imm32
+<span id="L2082" class="LineNr">2082 </span>    68/push  <span class="Constant">&quot;F - <a href='dquotes.subx.html#L2047'>test-next-word-or-string-returns-string-literal</a>: start&quot;</span>/imm32
 <span id="L2083" class="LineNr">2083 </span>    68/push  0xd/imm32
 <span id="L2084" class="LineNr">2084 </span>    <span class="subxS2Comment"># . . push slice-&gt;start - _test-input-stream</span>
 <span id="L2085" class="LineNr">2085 </span>    8b/copy                         0/mod/indirect  1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *ECX to EAX</span>
@@ -1948,7 +1948,7 @@ if ('onhashchange' in window) {
 <span id="L2092" class="LineNr">2092 </span>    <span class="subxComment"># check-ints-equal(slice-&gt;end - _test-input-stream-&gt;data, 12, msg)</span>
 <span id="L2093" class="LineNr">2093 </span>    <span class="subxS1Comment"># . check-ints-equal(slice-&gt;end - _test-input-stream, 24, msg)</span>
 <span id="L2094" class="LineNr">2094 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2095" class="LineNr">2095 </span>    68/push  <span class="Constant">&quot;F - <a href='dquotes.subx.html#L2047'>test-next-word-or-string-returns-whole-string</a>: end&quot;</span>/imm32
+<span id="L2095" class="LineNr">2095 </span>    68/push  <span class="Constant">&quot;F - <a href='dquotes.subx.html#L2047'>test-next-word-or-string-returns-string-literal</a>: end&quot;</span>/imm32
 <span id="L2096" class="LineNr">2096 </span>    68/push  0x18/imm32
 <span id="L2097" class="LineNr">2097 </span>    <span class="subxS2Comment"># . . push slice-&gt;end - _test-input-stream</span>
 <span id="L2098" class="LineNr">2098 </span>    8b/copy                         1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ECX+4) to EAX</span>
@@ -2026,592 +2026,165 @@ if ('onhashchange' in window) {
 <span id="L2170" class="LineNr">2170 </span>    5d/pop-to-EBP
 <span id="L2171" class="LineNr">2171 </span>    c3/return
 <span id="L2172" class="LineNr">2172 </span>
-<span id="L2173" class="LineNr">2173 </span><span class="subxComment"># update line-&gt;read to end of string literal surrounded by double quotes</span>
-<span id="L2174" class="LineNr">2174 </span><span class="subxComment"># line-&gt;read must start out at a double-quote</span>
-<span id="L2175" class="LineNr">2175 </span><span class="subxFunction">skip-string</span>:  <span class="subxComment"># line : (address stream)</span>
-<span id="L2176" class="LineNr">2176 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2177" class="LineNr">2177 </span>    55/push-EBP
-<span id="L2178" class="LineNr">2178 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2179" class="LineNr">2179 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L2180" class="LineNr">2180 </span>    50/push-EAX
-<span id="L2181" class="LineNr">2181 </span>    51/push-ECX
-<span id="L2182" class="LineNr">2182 </span>    52/push-EDX
-<span id="L2183" class="LineNr">2183 </span>    <span class="subxComment"># ECX = line</span>
-<span id="L2184" class="LineNr">2184 </span>    8b/copy                         1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        1/r32/ECX   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(EBP+8) to ECX</span>
-<span id="L2185" class="LineNr">2185 </span>    <span class="subxComment"># EAX = skip-string-in-slice(&amp;line-&gt;data[line-&gt;read], &amp;line-&gt;data[line-&gt;write])</span>
-<span id="L2186" class="LineNr">2186 </span>    <span class="subxS2Comment"># . . push &amp;line-&gt;data[line-&gt;write]</span>
-<span id="L2187" class="LineNr">2187 </span>    8b/copy                         1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        2/r32/EDX   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ECX+8) to EDX</span>
-<span id="L2188" class="LineNr">2188 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    1/base/ECX  2/index/EDX  <span class="Normal"> . </span>          2/r32/EDX   0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># copy ECX+EDX+12 to EDX</span>
-<span id="L2189" class="LineNr">2189 </span>    52/push-EDX
-<span id="L2190" class="LineNr">2190 </span>    <span class="subxS2Comment"># . . push &amp;line-&gt;data[line-&gt;read]</span>
-<span id="L2191" class="LineNr">2191 </span>    8b/copy                         1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        2/r32/EDX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ECX+4) to EDX</span>
-<span id="L2192" class="LineNr">2192 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    1/base/ECX  2/index/EDX  <span class="Normal"> . </span>          2/r32/EDX   0xc/disp8      <span class="Normal"> . </span>                <span class="subxComment"># copy ECX+EDX+12 to EDX</span>
-<span id="L2193" class="LineNr">2193 </span>    52/push-EDX
-<span id="L2194" class="LineNr">2194 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2195" class="LineNr">2195 </span>    e8/call  <a href='dquotes.subx.html#L2416'>skip-string-in-slice</a>/disp32
-<span id="L2196" class="LineNr">2196 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2197" class="LineNr">2197 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2198" class="LineNr">2198 </span>    <span class="subxComment"># line-&gt;read = EAX - line-&gt;data</span>
-<span id="L2199" class="LineNr">2199 </span>    29/subtract                     3/mod/direct    0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># subtract ECX from EAX</span>
-<span id="L2200" class="LineNr">2200 </span>    2d/subtract-from-EAX  0xc/imm32
-<span id="L2201" class="LineNr">2201 </span>    89/copy                         1/mod/*+disp8   1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        0/r32/EAX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX to *(ECX+4)</span>
-<span id="L2202" class="LineNr">2202 </span><span class="Constant">$skip-string:end</span>:
-<span id="L2203" class="LineNr">2203 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L2204" class="LineNr">2204 </span>    5a/pop-to-EDX
-<span id="L2205" class="LineNr">2205 </span>    59/pop-to-ECX
-<span id="L2206" class="LineNr">2206 </span>    58/pop-to-EAX
-<span id="L2207" class="LineNr">2207 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2208" class="LineNr">2208 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2209" class="LineNr">2209 </span>    5d/pop-to-EBP
-<span id="L2210" class="LineNr">2210 </span>    c3/return
-<span id="L2211" class="LineNr">2211 </span>
-<span id="L2212" class="LineNr">2212 </span><span class="subxTest">test-skip-string</span>:
-<span id="L2213" class="LineNr">2213 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2214" class="LineNr">2214 </span>    55/push-EBP
-<span id="L2215" class="LineNr">2215 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2216" class="LineNr">2216 </span>    <span class="subxComment"># setup</span>
-<span id="L2217" class="LineNr">2217 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
-<span id="L2218" class="LineNr">2218 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2219" class="LineNr">2219 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2220" class="LineNr">2220 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2221" class="LineNr">2221 </span>    e8/call  <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
-<span id="L2222" class="LineNr">2222 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2223" class="LineNr">2223 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2224" class="LineNr">2224 </span>    <span class="subxS1Comment"># . write(_test-input-stream, &quot;\&quot;abc\&quot; def&quot;)</span>
-<span id="L2225" class="LineNr">2225 </span>    <span class="subxS1Comment"># .                   indices:  0123 45</span>
-<span id="L2226" class="LineNr">2226 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2227" class="LineNr">2227 </span>    68/push  <span class="Constant">&quot;\&quot;</span>abc\<span class="Constant">&quot; def&quot;</span>/imm32
-<span id="L2228" class="LineNr">2228 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2229" class="LineNr">2229 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2230" class="LineNr">2230 </span>    e8/call  <a href='../057write.subx.html#L24'>write</a>/disp32
-<span id="L2231" class="LineNr">2231 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2232" class="LineNr">2232 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2233" class="LineNr">2233 </span>    <span class="subxComment"># precondition: line-&gt;read == 0</span>
+<span id="L2173" class="LineNr">2173 </span><span class="subxFunction">string-length-at-start-of-slice</span>:  <span class="subxComment"># curr : (address byte), end : (address byte) -&gt; length/EAX</span>
+<span id="L2174" class="LineNr">2174 </span>    <span class="subxS1Comment"># . prolog</span>
+<span id="L2175" class="LineNr">2175 </span>    55/push-EBP
+<span id="L2176" class="LineNr">2176 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
+<span id="L2177" class="LineNr">2177 </span>    <span class="subxS1Comment"># . save registers</span>
+<span id="L2178" class="LineNr">2178 </span>    51/push-ECX
+<span id="L2179" class="LineNr">2179 </span>    52/push-EDX
+<span id="L2180" class="LineNr">2180 </span>    53/push-EBX
+<span id="L2181" class="LineNr">2181 </span>    <span class="subxComment"># ECX = curr</span>
+<span id="L2182" class="LineNr">2182 </span>    8b/copy                         1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        1/r32/ECX   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(EBP+8) to ECX</span>
+<span id="L2183" class="LineNr">2183 </span>    <span class="subxComment"># EDX = end</span>
+<span id="L2184" class="LineNr">2184 </span>    8b/copy                         1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        2/r32/EDX   0xc/disp8        <span class="Normal"> . </span>              <span class="subxComment"># copy *(EBP+12) to EDX</span>
+<span id="L2185" class="LineNr">2185 </span>    <span class="subxComment"># length/EAX = 0</span>
+<span id="L2186" class="LineNr">2186 </span>    31/xor                          3/mod/direct    0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear EAX</span>
+<span id="L2187" class="LineNr">2187 </span>    <span class="subxComment"># EBX = 0</span>
+<span id="L2188" class="LineNr">2188 </span>    31/xor                          3/mod/direct    3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear EBX</span>
+<span id="L2189" class="LineNr">2189 </span>    <span class="subxComment"># skip initial dquote</span>
+<span id="L2190" class="LineNr">2190 </span>    41/increment-ECX
+<span id="L2191" class="LineNr">2191 </span><span class="Constant">$string-length-at-start-of-slice:loop</span>:
+<span id="L2192" class="LineNr">2192 </span>    <span class="subxComment"># if (curr &gt;= end) return length</span>
+<span id="L2193" class="LineNr">2193 </span>    39/compare                      3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/EDX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># compare ECX with EDX</span>
+<span id="L2194" class="LineNr">2194 </span>    73/jump-if-greater-unsigned-or-equal  $string-length-at-start-of-slice:end/disp8
+<span id="L2195" class="LineNr">2195 </span>    <span class="subxComment"># BL = *curr</span>
+<span id="L2196" class="LineNr">2196 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/BL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ECX to BL</span>
+<span id="L2197" class="LineNr">2197 </span><span class="Constant">$string-length-at-start-of-slice:dquote</span>:
+<span id="L2198" class="LineNr">2198 </span>    <span class="subxComment"># if (EBX == '&quot;') break</span>
+<span id="L2199" class="LineNr">2199 </span>    81          7/subop/compare     3/mod/direct    3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x22/imm32/dquote <span class="subxComment"># compare EBX</span>
+<span id="L2200" class="LineNr">2200 </span>    74/jump-if-equal  $string-length-at-start-of-slice:end/disp8
+<span id="L2201" class="LineNr">2201 </span><span class="Constant">$string-length-at-start-of-slice:check-for-escape</span>:
+<span id="L2202" class="LineNr">2202 </span>    <span class="subxComment"># if (EBX == '\') escape next char</span>
+<span id="L2203" class="LineNr">2203 </span>    81          7/subop/compare     3/mod/direct    3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x5c/imm32/backslash <span class="subxComment"># compare EBX</span>
+<span id="L2204" class="LineNr">2204 </span>    75/jump-if-not-equal  $string-length-at-start-of-slice:continue/disp8
+<span id="L2205" class="LineNr">2205 </span><span class="Constant">$string-length-at-start-of-slice:escape</span>:
+<span id="L2206" class="LineNr">2206 </span>    <span class="subxComment"># increment curr but not result</span>
+<span id="L2207" class="LineNr">2207 </span>    41/increment-ECX
+<span id="L2208" class="LineNr">2208 </span><span class="Constant">$string-length-at-start-of-slice:continue</span>:
+<span id="L2209" class="LineNr">2209 </span>    <span class="subxComment"># ++result</span>
+<span id="L2210" class="LineNr">2210 </span>    40/increment-EAX
+<span id="L2211" class="LineNr">2211 </span>    <span class="subxComment"># ++curr</span>
+<span id="L2212" class="LineNr">2212 </span>    41/increment-ECX
+<span id="L2213" class="LineNr">2213 </span>    eb/jump  $string-length-at-start-of-slice:loop/disp8
+<span id="L2214" class="LineNr">2214 </span><span class="Constant">$string-length-at-start-of-slice:end</span>:
+<span id="L2215" class="LineNr">2215 </span>    <span class="subxS1Comment"># . restore registers</span>
+<span id="L2216" class="LineNr">2216 </span>    5b/pop-to-EBX
+<span id="L2217" class="LineNr">2217 </span>    5a/pop-to-EDX
+<span id="L2218" class="LineNr">2218 </span>    59/pop-to-ECX
+<span id="L2219" class="LineNr">2219 </span>    <span class="subxS1Comment"># . epilog</span>
+<span id="L2220" class="LineNr">2220 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
+<span id="L2221" class="LineNr">2221 </span>    5d/pop-to-EBP
+<span id="L2222" class="LineNr">2222 </span>    c3/return
+<span id="L2223" class="LineNr">2223 </span>
+<span id="L2224" class="LineNr">2224 </span><span class="subxTest">test-string-length-at-start-of-slice</span>:
+<span id="L2225" class="LineNr">2225 </span>    <span class="subxS1Comment"># . prolog</span>
+<span id="L2226" class="LineNr">2226 </span>    55/push-EBP
+<span id="L2227" class="LineNr">2227 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
+<span id="L2228" class="LineNr">2228 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;abc\&quot; def&quot;</span>
+<span id="L2229" class="LineNr">2229 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>abc\<span class="Constant">&quot; def&quot;</span>/imm32
+<span id="L2230" class="LineNr">2230 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
+<span id="L2231" class="LineNr">2231 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
+<span id="L2232" class="LineNr">2232 </span>    05/add-to-EAX  4/imm32
+<span id="L2233" class="LineNr">2233 </span>    <span class="subxComment"># EAX = string-length-at-start-of-slice(EAX, ECX)</span>
 <span id="L2234" class="LineNr">2234 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2235" class="LineNr">2235 </span>    68/push  <span class="Constant">&quot;F - <a href='dquotes.subx.html#L2212'>test-skip-string</a>/precondition&quot;</span>/imm32
-<span id="L2236" class="LineNr">2236 </span>    68/push  0/imm32
-<span id="L2237" class="LineNr">2237 </span>    b8/copy-to-EAX  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2238" class="LineNr">2238 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EAX+4)</span>
-<span id="L2239" class="LineNr">2239 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2240" class="LineNr">2240 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2241" class="LineNr">2241 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2242" class="LineNr">2242 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2243" class="LineNr">2243 </span>    <span class="subxComment"># skip-string(_test-input-stream)</span>
-<span id="L2244" class="LineNr">2244 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2245" class="LineNr">2245 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
+<span id="L2235" class="LineNr">2235 </span>    51/push-ECX
+<span id="L2236" class="LineNr">2236 </span>    50/push-EAX
+<span id="L2237" class="LineNr">2237 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L2238" class="LineNr">2238 </span>    e8/call  <a href='dquotes.subx.html#L2173'>string-length-at-start-of-slice</a>/disp32
+<span id="L2239" class="LineNr">2239 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L2240" class="LineNr">2240 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
+<span id="L2241" class="LineNr">2241 </span>    <span class="subxComment"># check-ints-equal(EAX, 3, msg)</span>
+<span id="L2242" class="LineNr">2242 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L2243" class="LineNr">2243 </span>    68/push  <span class="Constant">&quot;F - test-string-length-at-start-of-slice&quot;</span>/imm32
+<span id="L2244" class="LineNr">2244 </span>    68/push  3/imm32
+<span id="L2245" class="LineNr">2245 </span>    50/push-EAX
 <span id="L2246" class="LineNr">2246 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2247" class="LineNr">2247 </span>    e8/call  <a href='dquotes.subx.html#L2175'>skip-string</a>/disp32
+<span id="L2247" class="LineNr">2247 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
 <span id="L2248" class="LineNr">2248 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2249" class="LineNr">2249 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2250" class="LineNr">2250 </span>    <span class="subxComment"># check-ints-equal(line-&gt;read, 5, msg)</span>
-<span id="L2251" class="LineNr">2251 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2252" class="LineNr">2252 </span>    68/push  <span class="Constant">&quot;F - test-skip-string&quot;</span>/imm32
-<span id="L2253" class="LineNr">2253 </span>    68/push  5/imm32
-<span id="L2254" class="LineNr">2254 </span>    b8/copy-to-EAX  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2255" class="LineNr">2255 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EAX+4)</span>
-<span id="L2256" class="LineNr">2256 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2257" class="LineNr">2257 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2258" class="LineNr">2258 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2259" class="LineNr">2259 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2260" class="LineNr">2260 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2261" class="LineNr">2261 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2262" class="LineNr">2262 </span>    5d/pop-to-EBP
-<span id="L2263" class="LineNr">2263 </span>    c3/return
-<span id="L2264" class="LineNr">2264 </span>
-<span id="L2265" class="LineNr">2265 </span><span class="subxTest">test-skip-string-ignores-spaces</span>:
-<span id="L2266" class="LineNr">2266 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2267" class="LineNr">2267 </span>    55/push-EBP
-<span id="L2268" class="LineNr">2268 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2269" class="LineNr">2269 </span>    <span class="subxComment"># setup</span>
-<span id="L2270" class="LineNr">2270 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
-<span id="L2271" class="LineNr">2271 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2272" class="LineNr">2272 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2273" class="LineNr">2273 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2274" class="LineNr">2274 </span>    e8/call  <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
-<span id="L2275" class="LineNr">2275 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2276" class="LineNr">2276 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2277" class="LineNr">2277 </span>    <span class="subxS1Comment"># . write(_test-input-stream, &quot;\&quot;a b\&quot;/yz&quot;)</span>
-<span id="L2278" class="LineNr">2278 </span>    <span class="subxS1Comment"># .                   indices:  0123 45</span>
-<span id="L2279" class="LineNr">2279 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2280" class="LineNr">2280 </span>    68/push  <span class="Constant">&quot;\&quot;</span>a b\<span class="Constant">&quot;/yz&quot;</span>/imm32
-<span id="L2281" class="LineNr">2281 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2282" class="LineNr">2282 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2283" class="LineNr">2283 </span>    e8/call  <a href='../057write.subx.html#L24'>write</a>/disp32
-<span id="L2284" class="LineNr">2284 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2285" class="LineNr">2285 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2286" class="LineNr">2286 </span>    <span class="subxComment"># precondition: line-&gt;read == 0</span>
-<span id="L2287" class="LineNr">2287 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2288" class="LineNr">2288 </span>    68/push  <span class="Constant">&quot;F - <a href='dquotes.subx.html#L2265'>test-skip-string-ignores-spaces</a>/precondition&quot;</span>/imm32
-<span id="L2289" class="LineNr">2289 </span>    68/push  0/imm32
-<span id="L2290" class="LineNr">2290 </span>    b8/copy-to-EAX  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2291" class="LineNr">2291 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EAX+4)</span>
-<span id="L2292" class="LineNr">2292 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2293" class="LineNr">2293 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2294" class="LineNr">2294 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2295" class="LineNr">2295 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2296" class="LineNr">2296 </span>    <span class="subxComment"># skip-string(_test-input-stream)</span>
-<span id="L2297" class="LineNr">2297 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2298" class="LineNr">2298 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2299" class="LineNr">2299 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2300" class="LineNr">2300 </span>    e8/call  <a href='dquotes.subx.html#L2175'>skip-string</a>/disp32
-<span id="L2301" class="LineNr">2301 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2302" class="LineNr">2302 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2303" class="LineNr">2303 </span>    <span class="subxComment"># check-ints-equal(line-&gt;read, 5, msg)</span>
-<span id="L2304" class="LineNr">2304 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2305" class="LineNr">2305 </span>    68/push  <span class="Constant">&quot;F - test-skip-string-ignores-spaces&quot;</span>/imm32
-<span id="L2306" class="LineNr">2306 </span>    68/push  5/imm32
-<span id="L2307" class="LineNr">2307 </span>    b8/copy-to-EAX  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2308" class="LineNr">2308 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EAX+4)</span>
-<span id="L2309" class="LineNr">2309 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2310" class="LineNr">2310 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2311" class="LineNr">2311 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2312" class="LineNr">2312 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2313" class="LineNr">2313 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2314" class="LineNr">2314 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2315" class="LineNr">2315 </span>    5d/pop-to-EBP
-<span id="L2316" class="LineNr">2316 </span>    c3/return
+<span id="L2249" class="LineNr">2249 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
+<span id="L2250" class="LineNr">2250 </span>    <span class="subxS1Comment"># . epilog</span>
+<span id="L2251" class="LineNr">2251 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
+<span id="L2252" class="LineNr">2252 </span>    5d/pop-to-EBP
+<span id="L2253" class="LineNr">2253 </span>    c3/return
+<span id="L2254" class="LineNr">2254 </span>
+<span id="L2255" class="LineNr">2255 </span><span class="subxTest">test-string-length-at-start-of-slice-escaped</span>:
+<span id="L2256" class="LineNr">2256 </span>    <span class="subxS1Comment"># . prolog</span>
+<span id="L2257" class="LineNr">2257 </span>    55/push-EBP
+<span id="L2258" class="LineNr">2258 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
+<span id="L2259" class="LineNr">2259 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;ab\\c\&quot; def&quot;</span>
+<span id="L2260" class="LineNr">2260 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>ab\\c\<span class="Constant">&quot; def&quot;</span>/imm32
+<span id="L2261" class="LineNr">2261 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
+<span id="L2262" class="LineNr">2262 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
+<span id="L2263" class="LineNr">2263 </span>    05/add-to-EAX  4/imm32
+<span id="L2264" class="LineNr">2264 </span>    <span class="subxComment"># EAX = string-length-at-start-of-slice(EAX, ECX)</span>
+<span id="L2265" class="LineNr">2265 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L2266" class="LineNr">2266 </span>    51/push-ECX
+<span id="L2267" class="LineNr">2267 </span>    50/push-EAX
+<span id="L2268" class="LineNr">2268 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L2269" class="LineNr">2269 </span>    e8/call  <a href='dquotes.subx.html#L2173'>string-length-at-start-of-slice</a>/disp32
+<span id="L2270" class="LineNr">2270 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L2271" class="LineNr">2271 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
+<span id="L2272" class="LineNr">2272 </span>    <span class="subxComment"># check-ints-equal(EAX, 3, msg)</span>
+<span id="L2273" class="LineNr">2273 </span>    <span class="subxS2Comment"># . . push args</span>
+<span id="L2274" class="LineNr">2274 </span>    68/push  <span class="Constant">&quot;F - test-string-length-at-start-of-slice-escaped&quot;</span>/imm32
+<span id="L2275" class="LineNr">2275 </span>    68/push  3/imm32
+<span id="L2276" class="LineNr">2276 </span>    50/push-EAX
+<span id="L2277" class="LineNr">2277 </span>    <span class="subxS2Comment"># . . call</span>
+<span id="L2278" class="LineNr">2278 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
+<span id="L2279" class="LineNr">2279 </span>    <span class="subxS2Comment"># . . discard args</span>
+<span id="L2280" class="LineNr">2280 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
+<span id="L2281" class="LineNr">2281 </span>    <span class="subxS1Comment"># . epilog</span>
+<span id="L2282" class="LineNr">2282 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
+<span id="L2283" class="LineNr">2283 </span>    5d/pop-to-EBP
+<span id="L2284" class="LineNr">2284 </span>    c3/return
+<span id="L2285" class="LineNr">2285 </span>
+<span id="L2286" class="LineNr">2286 </span>== data
+<span id="L2287" class="LineNr">2287 </span>
+<span id="L2288" class="LineNr">2288 </span><span class="SpecialChar">Next-string-literal</span>:  <span class="subxComment"># tracks the next auto-generated variable name</span>
+<span id="L2289" class="LineNr">2289 </span>  1/imm32
+<span id="L2290" class="LineNr">2290 </span>
+<span id="L2291" class="LineNr">2291 </span><span class="subxComment"># length-prefixed string containing just a single space</span>
+<span id="L2292" class="LineNr">2292 </span><span class="SpecialChar">Space</span>:
+<span id="L2293" class="LineNr">2293 </span>    <span class="subxComment"># size</span>
+<span id="L2294" class="LineNr">2294 </span>    1/imm32
+<span id="L2295" class="LineNr">2295 </span>    <span class="subxComment"># data</span>
+<span id="L2296" class="LineNr">2296 </span>    20/space
+<span id="L2297" class="LineNr">2297 </span>
+<span id="L2298" class="LineNr">2298 </span><span class="subxComment"># length-prefixed string containing just a single slash</span>
+<span id="L2299" class="LineNr">2299 </span><span class="SpecialChar">Slash</span>:
+<span id="L2300" class="LineNr">2300 </span>    <span class="subxComment"># size</span>
+<span id="L2301" class="LineNr">2301 </span>    1/imm32
+<span id="L2302" class="LineNr">2302 </span>    <span class="subxComment"># data</span>
+<span id="L2303" class="LineNr">2303 </span>    2f/slash
+<span id="L2304" class="LineNr">2304 </span>
+<span id="L2305" class="LineNr">2305 </span><span class="subxMinorFunction">_test-slice-abc</span>:
+<span id="L2306" class="LineNr">2306 </span>  22/dquote 61/a 62/b 63/c 22/dquote  <span class="subxComment"># &quot;abc&quot;</span>
+<span id="L2307" class="LineNr">2307 </span>  2f/slash 64/d
+<span id="L2308" class="LineNr">2308 </span><span class="subxMinorFunction">_test-slice-abc-limit</span>:
+<span id="L2309" class="LineNr">2309 </span>
+<span id="L2310" class="LineNr">2310 </span><span class="subxMinorFunction">_test-slice-a-space-b</span>:
+<span id="L2311" class="LineNr">2311 </span>  22/dquote 61/a 20/space 62/b 22/dquote  <span class="subxComment"># &quot;a b&quot;</span>
+<span id="L2312" class="LineNr">2312 </span><span class="subxMinorFunction">_test-slice-a-space-b-limit</span>:
+<span id="L2313" class="LineNr">2313 </span>
+<span id="L2314" class="LineNr">2314 </span><span class="subxMinorFunction">_test-slice-a-dquote-b</span>:
+<span id="L2315" class="LineNr">2315 </span>  22/dquote 61/a 5c/backslash 22/dquote 62/b 22/dquote  <span class="subxComment"># &quot;a\&quot;b&quot;</span>
+<span id="L2316" class="LineNr">2316 </span><span class="subxMinorFunction">_test-slice-a-dquote-b-limit</span>:
 <span id="L2317" class="LineNr">2317 </span>
-<span id="L2318" class="LineNr">2318 </span><span class="subxTest">test-skip-string-ignores-escapes</span>:
-<span id="L2319" class="LineNr">2319 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2320" class="LineNr">2320 </span>    55/push-EBP
-<span id="L2321" class="LineNr">2321 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2322" class="LineNr">2322 </span>    <span class="subxComment"># setup</span>
-<span id="L2323" class="LineNr">2323 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
-<span id="L2324" class="LineNr">2324 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2325" class="LineNr">2325 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2326" class="LineNr">2326 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2327" class="LineNr">2327 </span>    e8/call  <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
-<span id="L2328" class="LineNr">2328 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2329" class="LineNr">2329 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2330" class="LineNr">2330 </span>    <span class="subxS1Comment"># . write(_test-input-stream, &quot;\&quot;a\\\&quot;b\&quot;/yz&quot;)</span>
-<span id="L2331" class="LineNr">2331 </span>    <span class="subxS1Comment"># .                   indices:  01 2 34 56</span>
-<span id="L2332" class="LineNr">2332 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2333" class="LineNr">2333 </span>    68/push  <span class="Constant">&quot;\&quot;</span>a\\\<span class="Constant">&quot;b\&quot;</span>/yz&quot;/imm32
-<span id="L2334" class="LineNr">2334 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2335" class="LineNr">2335 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2336" class="LineNr">2336 </span>    e8/call  <a href='../057write.subx.html#L24'>write</a>/disp32
-<span id="L2337" class="LineNr">2337 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2338" class="LineNr">2338 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2339" class="LineNr">2339 </span>    <span class="subxComment"># precondition: line-&gt;read == 0</span>
-<span id="L2340" class="LineNr">2340 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2341" class="LineNr">2341 </span>    68/push  <span class="Constant">&quot;F - <a href='dquotes.subx.html#L2318'>test-skip-string-ignores-escapes</a>/precondition&quot;</span>/imm32
-<span id="L2342" class="LineNr">2342 </span>    68/push  0/imm32
-<span id="L2343" class="LineNr">2343 </span>    b8/copy-to-EAX  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2344" class="LineNr">2344 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EAX+4)</span>
-<span id="L2345" class="LineNr">2345 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2346" class="LineNr">2346 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2347" class="LineNr">2347 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2348" class="LineNr">2348 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2349" class="LineNr">2349 </span>    <span class="subxComment"># skip-string(_test-input-stream)</span>
-<span id="L2350" class="LineNr">2350 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2351" class="LineNr">2351 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2352" class="LineNr">2352 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2353" class="LineNr">2353 </span>    e8/call  <a href='dquotes.subx.html#L2175'>skip-string</a>/disp32
-<span id="L2354" class="LineNr">2354 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2355" class="LineNr">2355 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2356" class="LineNr">2356 </span>    <span class="subxComment"># check-ints-equal(line-&gt;read, 6, msg)</span>
-<span id="L2357" class="LineNr">2357 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2358" class="LineNr">2358 </span>    68/push  <span class="Constant">&quot;F - test-skip-string-ignores-escapes&quot;</span>/imm32
-<span id="L2359" class="LineNr">2359 </span>    68/push  6/imm32
-<span id="L2360" class="LineNr">2360 </span>    b8/copy-to-EAX  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2361" class="LineNr">2361 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EAX+4)</span>
-<span id="L2362" class="LineNr">2362 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2363" class="LineNr">2363 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2364" class="LineNr">2364 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2365" class="LineNr">2365 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2366" class="LineNr">2366 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2367" class="LineNr">2367 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2368" class="LineNr">2368 </span>    5d/pop-to-EBP
-<span id="L2369" class="LineNr">2369 </span>    c3/return
-<span id="L2370" class="LineNr">2370 </span>
-<span id="L2371" class="LineNr">2371 </span><span class="subxTest">test-skip-string-works-from-mid-stream</span>:
-<span id="L2372" class="LineNr">2372 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2373" class="LineNr">2373 </span>    55/push-EBP
-<span id="L2374" class="LineNr">2374 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2375" class="LineNr">2375 </span>    <span class="subxComment"># setup</span>
-<span id="L2376" class="LineNr">2376 </span>    <span class="subxS1Comment"># . clear-stream(_test-input-stream)</span>
-<span id="L2377" class="LineNr">2377 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2378" class="LineNr">2378 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2379" class="LineNr">2379 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2380" class="LineNr">2380 </span>    e8/call  <a href='../055stream.subx.html#L17'>clear-stream</a>/disp32
-<span id="L2381" class="LineNr">2381 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2382" class="LineNr">2382 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2383" class="LineNr">2383 </span>    <span class="subxS1Comment"># . write(_test-input-stream, &quot;0 \&quot;a\\\&quot;b\&quot;/yz&quot;)</span>
-<span id="L2384" class="LineNr">2384 </span>    <span class="subxS1Comment"># .                   indices:  01 2 34 56</span>
-<span id="L2385" class="LineNr">2385 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2386" class="LineNr">2386 </span>    68/push  <span class="Constant">&quot;0 \&quot;</span>a\\\<span class="Constant">&quot;b\&quot;</span>/yz&quot;/imm32
-<span id="L2387" class="LineNr">2387 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2388" class="LineNr">2388 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2389" class="LineNr">2389 </span>    e8/call  <a href='../057write.subx.html#L24'>write</a>/disp32
-<span id="L2390" class="LineNr">2390 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2391" class="LineNr">2391 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2392" class="LineNr">2392 </span>    <span class="subxComment"># precondition: line-&gt;read == 2</span>
-<span id="L2393" class="LineNr">2393 </span>    c7          0/subop/copy        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8         2/imm32           <span class="subxComment"># copy to *(EAX+4)</span>
-<span id="L2394" class="LineNr">2394 </span>    <span class="subxComment"># skip-string(_test-input-stream)</span>
-<span id="L2395" class="LineNr">2395 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2396" class="LineNr">2396 </span>    68/push  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2397" class="LineNr">2397 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2398" class="LineNr">2398 </span>    e8/call  <a href='dquotes.subx.html#L2175'>skip-string</a>/disp32
-<span id="L2399" class="LineNr">2399 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2400" class="LineNr">2400 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              4/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2401" class="LineNr">2401 </span>    <span class="subxComment"># check-ints-equal(line-&gt;read, 8, msg)</span>
-<span id="L2402" class="LineNr">2402 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2403" class="LineNr">2403 </span>    68/push  <span class="Constant">&quot;F - test-skip-string-works-from-mid-stream&quot;</span>/imm32
-<span id="L2404" class="LineNr">2404 </span>    68/push  8/imm32
-<span id="L2405" class="LineNr">2405 </span>    b8/copy-to-EAX  <a href='../061read-byte.subx.html#L293'>_test-input-stream</a>/imm32
-<span id="L2406" class="LineNr">2406 </span>    ff          6/subop/push        1/mod/*+disp8   0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>          4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># push *(EAX+4)</span>
-<span id="L2407" class="LineNr">2407 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2408" class="LineNr">2408 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2409" class="LineNr">2409 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2410" class="LineNr">2410 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2411" class="LineNr">2411 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2412" class="LineNr">2412 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2413" class="LineNr">2413 </span>    5d/pop-to-EBP
-<span id="L2414" class="LineNr">2414 </span>    c3/return
-<span id="L2415" class="LineNr">2415 </span>
-<span id="L2416" class="LineNr">2416 </span><span class="subxFunction">skip-string-in-slice</span>:  <span class="subxComment"># curr : (address byte), end : (address byte) -&gt; new_curr/EAX</span>
-<span id="L2417" class="LineNr">2417 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2418" class="LineNr">2418 </span>    55/push-EBP
-<span id="L2419" class="LineNr">2419 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2420" class="LineNr">2420 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L2421" class="LineNr">2421 </span>    51/push-ECX
-<span id="L2422" class="LineNr">2422 </span>    52/push-EDX
-<span id="L2423" class="LineNr">2423 </span>    53/push-EBX
-<span id="L2424" class="LineNr">2424 </span>    <span class="subxComment"># ECX = curr</span>
-<span id="L2425" class="LineNr">2425 </span>    8b/copy                         1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        1/r32/ECX   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(EBP+8) to ECX</span>
-<span id="L2426" class="LineNr">2426 </span>    <span class="subxComment"># EDX = end</span>
-<span id="L2427" class="LineNr">2427 </span>    8b/copy                         1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        2/r32/EDX   0xc/disp8        <span class="Normal"> . </span>              <span class="subxComment"># copy *(EBP+12) to EDX</span>
-<span id="L2428" class="LineNr">2428 </span>    <span class="subxComment"># EAX = 0</span>
-<span id="L2429" class="LineNr">2429 </span>    31/xor                          3/mod/direct    0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear EAX</span>
-<span id="L2430" class="LineNr">2430 </span>    <span class="subxComment"># skip initial dquote</span>
-<span id="L2431" class="LineNr">2431 </span>    41/increment-ECX
-<span id="L2432" class="LineNr">2432 </span><span class="Constant">$skip-string-in-slice:loop</span>:
-<span id="L2433" class="LineNr">2433 </span>    <span class="subxComment"># if (curr &gt;= end) return curr</span>
-<span id="L2434" class="LineNr">2434 </span>    39/compare                      3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/EDX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># compare ECX with EDX</span>
-<span id="L2435" class="LineNr">2435 </span>    73/jump-if-greater-unsigned-or-equal  $skip-string-in-slice:return-curr/disp8
-<span id="L2436" class="LineNr">2436 </span>    <span class="subxComment"># AL = *curr</span>
-<span id="L2437" class="LineNr">2437 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/AL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ECX to AL</span>
-<span id="L2438" class="LineNr">2438 </span><span class="Constant">$skip-string-in-slice:dquote</span>:
-<span id="L2439" class="LineNr">2439 </span>    <span class="subxComment"># if (EAX == '&quot;') break</span>
-<span id="L2440" class="LineNr">2440 </span>    3d/compare-EAX-and  0x22/imm32/double-quote
-<span id="L2441" class="LineNr">2441 </span>    74/jump-if-equal  $skip-string-in-slice:break/disp8
-<span id="L2442" class="LineNr">2442 </span><span class="Constant">$skip-string-in-slice:check-for-escape</span>:
-<span id="L2443" class="LineNr">2443 </span>    <span class="subxComment"># if (EAX == '\') escape next char</span>
-<span id="L2444" class="LineNr">2444 </span>    3d/compare-EAX-and  0x5c/imm32/backslash
-<span id="L2445" class="LineNr">2445 </span>    75/jump-if-not-equal  $skip-string-in-slice:continue/disp8
-<span id="L2446" class="LineNr">2446 </span><span class="Constant">$skip-string-in-slice:escape</span>:
-<span id="L2447" class="LineNr">2447 </span>    41/increment-ECX
-<span id="L2448" class="LineNr">2448 </span><span class="Constant">$skip-string-in-slice:continue</span>:
-<span id="L2449" class="LineNr">2449 </span>    <span class="subxComment"># ++curr</span>
-<span id="L2450" class="LineNr">2450 </span>    41/increment-ECX
-<span id="L2451" class="LineNr">2451 </span>    eb/jump  $skip-string-in-slice:loop/disp8
-<span id="L2452" class="LineNr">2452 </span><span class="Constant">$skip-string-in-slice:break</span>:
-<span id="L2453" class="LineNr">2453 </span>    <span class="subxComment"># skip final dquote</span>
-<span id="L2454" class="LineNr">2454 </span>    41/increment-ECX
-<span id="L2455" class="LineNr">2455 </span><span class="Constant">$skip-string-in-slice:return-curr</span>:
-<span id="L2456" class="LineNr">2456 </span>    <span class="subxComment"># return curr</span>
-<span id="L2457" class="LineNr">2457 </span>    89/copy                         3/mod/direct    0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ECX to EAX</span>
-<span id="L2458" class="LineNr">2458 </span><span class="Constant">$skip-string-in-slice:end</span>:
-<span id="L2459" class="LineNr">2459 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L2460" class="LineNr">2460 </span>    5b/pop-to-EBX
-<span id="L2461" class="LineNr">2461 </span>    5a/pop-to-EDX
-<span id="L2462" class="LineNr">2462 </span>    59/pop-to-ECX
-<span id="L2463" class="LineNr">2463 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2464" class="LineNr">2464 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2465" class="LineNr">2465 </span>    5d/pop-to-EBP
-<span id="L2466" class="LineNr">2466 </span>    c3/return
-<span id="L2467" class="LineNr">2467 </span>
-<span id="L2468" class="LineNr">2468 </span><span class="subxTest">test-skip-string-in-slice</span>:
-<span id="L2469" class="LineNr">2469 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2470" class="LineNr">2470 </span>    55/push-EBP
-<span id="L2471" class="LineNr">2471 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2472" class="LineNr">2472 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;abc\&quot; def&quot;</span>
-<span id="L2473" class="LineNr">2473 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>abc\<span class="Constant">&quot; def&quot;</span>/imm32
-<span id="L2474" class="LineNr">2474 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
-<span id="L2475" class="LineNr">2475 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
-<span id="L2476" class="LineNr">2476 </span>    05/add-to-EAX  4/imm32
-<span id="L2477" class="LineNr">2477 </span>    <span class="subxComment"># EAX = skip-string-in-slice(EAX, ECX)</span>
-<span id="L2478" class="LineNr">2478 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2479" class="LineNr">2479 </span>    51/push-ECX
-<span id="L2480" class="LineNr">2480 </span>    50/push-EAX
-<span id="L2481" class="LineNr">2481 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2482" class="LineNr">2482 </span>    e8/call  <a href='dquotes.subx.html#L2416'>skip-string-in-slice</a>/disp32
-<span id="L2483" class="LineNr">2483 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2484" class="LineNr">2484 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2485" class="LineNr">2485 </span>    <span class="subxComment"># check-ints-equal(ECX-EAX, 4, msg)  # number of chars remaining after the string literal</span>
-<span id="L2486" class="LineNr">2486 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2487" class="LineNr">2487 </span>    68/push  <span class="Constant">&quot;F - test-skip-string-in-slice&quot;</span>/imm32
-<span id="L2488" class="LineNr">2488 </span>    68/push  4/imm32
-<span id="L2489" class="LineNr">2489 </span>    <span class="subxS2Comment"># . . push ECX-EAX</span>
-<span id="L2490" class="LineNr">2490 </span>    29/subtract                     3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># subtract EAX from ECX</span>
-<span id="L2491" class="LineNr">2491 </span>    51/push-ECX
-<span id="L2492" class="LineNr">2492 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2493" class="LineNr">2493 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2494" class="LineNr">2494 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2495" class="LineNr">2495 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2496" class="LineNr">2496 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2497" class="LineNr">2497 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2498" class="LineNr">2498 </span>    5d/pop-to-EBP
-<span id="L2499" class="LineNr">2499 </span>    c3/return
-<span id="L2500" class="LineNr">2500 </span>
-<span id="L2501" class="LineNr">2501 </span><span class="subxTest">test-skip-string-in-slice-ignores-spaces</span>:
-<span id="L2502" class="LineNr">2502 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2503" class="LineNr">2503 </span>    55/push-EBP
-<span id="L2504" class="LineNr">2504 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2505" class="LineNr">2505 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;a b\&quot;/yz&quot;</span>
-<span id="L2506" class="LineNr">2506 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>a b\<span class="Constant">&quot;/yz&quot;</span>/imm32
-<span id="L2507" class="LineNr">2507 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
-<span id="L2508" class="LineNr">2508 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
-<span id="L2509" class="LineNr">2509 </span>    05/add-to-EAX  4/imm32
-<span id="L2510" class="LineNr">2510 </span>    <span class="subxComment"># EAX = skip-string-in-slice(EAX, ECX)</span>
-<span id="L2511" class="LineNr">2511 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2512" class="LineNr">2512 </span>    51/push-ECX
-<span id="L2513" class="LineNr">2513 </span>    50/push-EAX
-<span id="L2514" class="LineNr">2514 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2515" class="LineNr">2515 </span>    e8/call  <a href='dquotes.subx.html#L2416'>skip-string-in-slice</a>/disp32
-<span id="L2516" class="LineNr">2516 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2517" class="LineNr">2517 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2518" class="LineNr">2518 </span>    <span class="subxComment"># check-ints-equal(ECX-EAX, 3, msg)  # number of chars remaining after the string literal</span>
-<span id="L2519" class="LineNr">2519 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2520" class="LineNr">2520 </span>    68/push  <span class="Constant">&quot;F - test-skip-string-in-slice-ignores-spaces&quot;</span>/imm32
-<span id="L2521" class="LineNr">2521 </span>    68/push  3/imm32
-<span id="L2522" class="LineNr">2522 </span>    <span class="subxS2Comment"># . . push ECX-EAX</span>
-<span id="L2523" class="LineNr">2523 </span>    29/subtract                     3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># subtract EAX from ECX</span>
-<span id="L2524" class="LineNr">2524 </span>    51/push-ECX
-<span id="L2525" class="LineNr">2525 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2526" class="LineNr">2526 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2527" class="LineNr">2527 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2528" class="LineNr">2528 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2529" class="LineNr">2529 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2530" class="LineNr">2530 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2531" class="LineNr">2531 </span>    5d/pop-to-EBP
-<span id="L2532" class="LineNr">2532 </span>    c3/return
-<span id="L2533" class="LineNr">2533 </span>
-<span id="L2534" class="LineNr">2534 </span><span class="subxTest">test-skip-string-in-slice-ignores-escapes</span>:
-<span id="L2535" class="LineNr">2535 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2536" class="LineNr">2536 </span>    55/push-EBP
-<span id="L2537" class="LineNr">2537 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2538" class="LineNr">2538 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;a\\\&quot;b\&quot;/yz&quot;</span>
-<span id="L2539" class="LineNr">2539 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>a\\\<span class="Constant">&quot;b\&quot;</span>/yz&quot;/imm32
-<span id="L2540" class="LineNr">2540 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
-<span id="L2541" class="LineNr">2541 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
-<span id="L2542" class="LineNr">2542 </span>    05/add-to-EAX  4/imm32
-<span id="L2543" class="LineNr">2543 </span>    <span class="subxComment"># EAX = skip-string-in-slice(EAX, ECX)</span>
-<span id="L2544" class="LineNr">2544 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2545" class="LineNr">2545 </span>    51/push-ECX
-<span id="L2546" class="LineNr">2546 </span>    50/push-EAX
-<span id="L2547" class="LineNr">2547 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2548" class="LineNr">2548 </span>    e8/call  <a href='dquotes.subx.html#L2416'>skip-string-in-slice</a>/disp32
-<span id="L2549" class="LineNr">2549 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2550" class="LineNr">2550 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2551" class="LineNr">2551 </span>    <span class="subxComment"># check-ints-equal(ECX-EAX, 3, msg)  # number of chars remaining after the string literal</span>
-<span id="L2552" class="LineNr">2552 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2553" class="LineNr">2553 </span>    68/push  <span class="Constant">&quot;F - test-skip-string-in-slice-ignores-escapes&quot;</span>/imm32
-<span id="L2554" class="LineNr">2554 </span>    68/push  3/imm32
-<span id="L2555" class="LineNr">2555 </span>    <span class="subxS2Comment"># . . push ECX-EAX</span>
-<span id="L2556" class="LineNr">2556 </span>    29/subtract                     3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># subtract EAX from ECX</span>
-<span id="L2557" class="LineNr">2557 </span>    51/push-ECX
-<span id="L2558" class="LineNr">2558 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2559" class="LineNr">2559 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2560" class="LineNr">2560 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2561" class="LineNr">2561 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2562" class="LineNr">2562 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2563" class="LineNr">2563 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2564" class="LineNr">2564 </span>    5d/pop-to-EBP
-<span id="L2565" class="LineNr">2565 </span>    c3/return
-<span id="L2566" class="LineNr">2566 </span>
-<span id="L2567" class="LineNr">2567 </span><span class="subxTest">test-skip-string-in-slice-stops-at-end</span>:
-<span id="L2568" class="LineNr">2568 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2569" class="LineNr">2569 </span>    55/push-EBP
-<span id="L2570" class="LineNr">2570 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2571" class="LineNr">2571 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;abc&quot;  # unbalanced dquote</span>
-<span id="L2572" class="LineNr">2572 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>abc&quot;/imm32
-<span id="L2573" class="LineNr">2573 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
-<span id="L2574" class="LineNr">2574 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
-<span id="L2575" class="LineNr">2575 </span>    05/add-to-EAX  4/imm32
-<span id="L2576" class="LineNr">2576 </span>    <span class="subxComment"># EAX = skip-string-in-slice(EAX, ECX)</span>
-<span id="L2577" class="LineNr">2577 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2578" class="LineNr">2578 </span>    51/push-ECX
-<span id="L2579" class="LineNr">2579 </span>    50/push-EAX
-<span id="L2580" class="LineNr">2580 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2581" class="LineNr">2581 </span>    e8/call  <a href='dquotes.subx.html#L2416'>skip-string-in-slice</a>/disp32
-<span id="L2582" class="LineNr">2582 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2583" class="LineNr">2583 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2584" class="LineNr">2584 </span>    <span class="subxComment"># check-ints-equal(ECX-EAX, 0, msg)  # skipped to end of slice</span>
-<span id="L2585" class="LineNr">2585 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2586" class="LineNr">2586 </span>    68/push  <span class="Constant">&quot;F - test-skip-string-in-slice-stops-at-end&quot;</span>/imm32
-<span id="L2587" class="LineNr">2587 </span>    68/push  0/imm32
-<span id="L2588" class="LineNr">2588 </span>    <span class="subxS2Comment"># . . push ECX-EAX</span>
-<span id="L2589" class="LineNr">2589 </span>    29/subtract                     3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># subtract EAX from ECX</span>
-<span id="L2590" class="LineNr">2590 </span>    51/push-ECX
-<span id="L2591" class="LineNr">2591 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2592" class="LineNr">2592 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2593" class="LineNr">2593 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2594" class="LineNr">2594 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2595" class="LineNr">2595 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2596" class="LineNr">2596 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2597" class="LineNr">2597 </span>    5d/pop-to-EBP
-<span id="L2598" class="LineNr">2598 </span>    c3/return
-<span id="L2599" class="LineNr">2599 </span>
-<span id="L2600" class="LineNr">2600 </span><span class="subxFunction">string-length-at-start-of-slice</span>:  <span class="subxComment"># curr : (address byte), end : (address byte) -&gt; length/EAX</span>
-<span id="L2601" class="LineNr">2601 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2602" class="LineNr">2602 </span>    55/push-EBP
-<span id="L2603" class="LineNr">2603 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2604" class="LineNr">2604 </span>    <span class="subxS1Comment"># . save registers</span>
-<span id="L2605" class="LineNr">2605 </span>    51/push-ECX
-<span id="L2606" class="LineNr">2606 </span>    52/push-EDX
-<span id="L2607" class="LineNr">2607 </span>    53/push-EBX
-<span id="L2608" class="LineNr">2608 </span>    <span class="subxComment"># ECX = curr</span>
-<span id="L2609" class="LineNr">2609 </span>    8b/copy                         1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        1/r32/ECX   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(EBP+8) to ECX</span>
-<span id="L2610" class="LineNr">2610 </span>    <span class="subxComment"># EDX = end</span>
-<span id="L2611" class="LineNr">2611 </span>    8b/copy                         1/mod/*+disp8   5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>                        2/r32/EDX   0xc/disp8        <span class="Normal"> . </span>              <span class="subxComment"># copy *(EBP+12) to EDX</span>
-<span id="L2612" class="LineNr">2612 </span>    <span class="subxComment"># length/EAX = 0</span>
-<span id="L2613" class="LineNr">2613 </span>    31/xor                          3/mod/direct    0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/EAX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear EAX</span>
-<span id="L2614" class="LineNr">2614 </span>    <span class="subxComment"># EBX = 0</span>
-<span id="L2615" class="LineNr">2615 </span>    31/xor                          3/mod/direct    3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/EBX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># clear EBX</span>
-<span id="L2616" class="LineNr">2616 </span>    <span class="subxComment"># skip initial dquote</span>
-<span id="L2617" class="LineNr">2617 </span>    41/increment-ECX
-<span id="L2618" class="LineNr">2618 </span><span class="Constant">$string-length-at-start-of-slice:loop</span>:
-<span id="L2619" class="LineNr">2619 </span>    <span class="subxComment"># if (curr &gt;= end) return length</span>
-<span id="L2620" class="LineNr">2620 </span>    39/compare                      3/mod/direct    1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          2/r32/EDX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># compare ECX with EDX</span>
-<span id="L2621" class="LineNr">2621 </span>    73/jump-if-greater-unsigned-or-equal  $string-length-at-start-of-slice:end/disp8
-<span id="L2622" class="LineNr">2622 </span>    <span class="subxComment"># BL = *curr</span>
-<span id="L2623" class="LineNr">2623 </span>    8a/copy-byte                    0/mod/indirect  1/rm32/ECX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          3/r32/BL   <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy byte at *ECX to BL</span>
-<span id="L2624" class="LineNr">2624 </span><span class="Constant">$string-length-at-start-of-slice:dquote</span>:
-<span id="L2625" class="LineNr">2625 </span>    <span class="subxComment"># if (EBX == '&quot;') break</span>
-<span id="L2626" class="LineNr">2626 </span>    81          7/subop/compare     3/mod/direct    3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x22/imm32/dquote <span class="subxComment"># compare EBX</span>
-<span id="L2627" class="LineNr">2627 </span>    74/jump-if-equal  $string-length-at-start-of-slice:end/disp8
-<span id="L2628" class="LineNr">2628 </span><span class="Constant">$string-length-at-start-of-slice:check-for-escape</span>:
-<span id="L2629" class="LineNr">2629 </span>    <span class="subxComment"># if (EBX == '\') escape next char</span>
-<span id="L2630" class="LineNr">2630 </span>    81          7/subop/compare     3/mod/direct    3/rm32/EBX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0x5c/imm32/backslash <span class="subxComment"># compare EBX</span>
-<span id="L2631" class="LineNr">2631 </span>    75/jump-if-not-equal  $string-length-at-start-of-slice:continue/disp8
-<span id="L2632" class="LineNr">2632 </span><span class="Constant">$string-length-at-start-of-slice:escape</span>:
-<span id="L2633" class="LineNr">2633 </span>    <span class="subxComment"># increment curr but not result</span>
-<span id="L2634" class="LineNr">2634 </span>    41/increment-ECX
-<span id="L2635" class="LineNr">2635 </span><span class="Constant">$string-length-at-start-of-slice:continue</span>:
-<span id="L2636" class="LineNr">2636 </span>    <span class="subxComment"># ++result</span>
-<span id="L2637" class="LineNr">2637 </span>    40/increment-EAX
-<span id="L2638" class="LineNr">2638 </span>    <span class="subxComment"># ++curr</span>
-<span id="L2639" class="LineNr">2639 </span>    41/increment-ECX
-<span id="L2640" class="LineNr">2640 </span>    eb/jump  $string-length-at-start-of-slice:loop/disp8
-<span id="L2641" class="LineNr">2641 </span><span class="Constant">$string-length-at-start-of-slice:end</span>:
-<span id="L2642" class="LineNr">2642 </span>    <span class="subxS1Comment"># . restore registers</span>
-<span id="L2643" class="LineNr">2643 </span>    5b/pop-to-EBX
-<span id="L2644" class="LineNr">2644 </span>    5a/pop-to-EDX
-<span id="L2645" class="LineNr">2645 </span>    59/pop-to-ECX
-<span id="L2646" class="LineNr">2646 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2647" class="LineNr">2647 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2648" class="LineNr">2648 </span>    5d/pop-to-EBP
-<span id="L2649" class="LineNr">2649 </span>    c3/return
-<span id="L2650" class="LineNr">2650 </span>
-<span id="L2651" class="LineNr">2651 </span><span class="subxTest">test-string-length-at-start-of-slice</span>:
-<span id="L2652" class="LineNr">2652 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2653" class="LineNr">2653 </span>    55/push-EBP
-<span id="L2654" class="LineNr">2654 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2655" class="LineNr">2655 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;abc\&quot; def&quot;</span>
-<span id="L2656" class="LineNr">2656 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>abc\<span class="Constant">&quot; def&quot;</span>/imm32
-<span id="L2657" class="LineNr">2657 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
-<span id="L2658" class="LineNr">2658 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
-<span id="L2659" class="LineNr">2659 </span>    05/add-to-EAX  4/imm32
-<span id="L2660" class="LineNr">2660 </span>    <span class="subxComment"># EAX = string-length-at-start-of-slice(EAX, ECX)</span>
-<span id="L2661" class="LineNr">2661 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2662" class="LineNr">2662 </span>    51/push-ECX
-<span id="L2663" class="LineNr">2663 </span>    50/push-EAX
-<span id="L2664" class="LineNr">2664 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2665" class="LineNr">2665 </span>    e8/call  <a href='dquotes.subx.html#L2600'>string-length-at-start-of-slice</a>/disp32
-<span id="L2666" class="LineNr">2666 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2667" class="LineNr">2667 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2668" class="LineNr">2668 </span>    <span class="subxComment"># check-ints-equal(EAX, 3, msg)</span>
-<span id="L2669" class="LineNr">2669 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2670" class="LineNr">2670 </span>    68/push  <span class="Constant">&quot;F - test-string-length-at-start-of-slice&quot;</span>/imm32
-<span id="L2671" class="LineNr">2671 </span>    68/push  3/imm32
-<span id="L2672" class="LineNr">2672 </span>    50/push-EAX
-<span id="L2673" class="LineNr">2673 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2674" class="LineNr">2674 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2675" class="LineNr">2675 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2676" class="LineNr">2676 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2677" class="LineNr">2677 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2678" class="LineNr">2678 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2679" class="LineNr">2679 </span>    5d/pop-to-EBP
-<span id="L2680" class="LineNr">2680 </span>    c3/return
-<span id="L2681" class="LineNr">2681 </span>
-<span id="L2682" class="LineNr">2682 </span><span class="subxTest">test-string-length-at-start-of-slice-escaped</span>:
-<span id="L2683" class="LineNr">2683 </span>    <span class="subxS1Comment"># . prolog</span>
-<span id="L2684" class="LineNr">2684 </span>    55/push-EBP
-<span id="L2685" class="LineNr">2685 </span>    89/copy                         3/mod/direct    5/rm32/EBP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          4/r32/ESP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy ESP to EBP</span>
-<span id="L2686" class="LineNr">2686 </span>    <span class="subxComment"># setup: (EAX..ECX) = &quot;\&quot;ab\\c\&quot; def&quot;</span>
-<span id="L2687" class="LineNr">2687 </span>    b8/copy-to-EAX  <span class="Constant">&quot;\&quot;</span>ab\\c\<span class="Constant">&quot; def&quot;</span>/imm32
-<span id="L2688" class="LineNr">2688 </span>    8b/copy                         0/mod/indirect  0/rm32/EAX   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          1/r32/ECX  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *EAX to ECX</span>
-<span id="L2689" class="LineNr">2689 </span>    8d/copy-address                 1/mod/*+disp8   4/rm32/sib    0/base/EAX  1/index/ECX  <span class="Normal"> . </span>          1/r32/ECX   4/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy EAX+ECX+4 to ECX</span>
-<span id="L2690" class="LineNr">2690 </span>    05/add-to-EAX  4/imm32
-<span id="L2691" class="LineNr">2691 </span>    <span class="subxComment"># EAX = string-length-at-start-of-slice(EAX, ECX)</span>
-<span id="L2692" class="LineNr">2692 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2693" class="LineNr">2693 </span>    51/push-ECX
-<span id="L2694" class="LineNr">2694 </span>    50/push-EAX
-<span id="L2695" class="LineNr">2695 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2696" class="LineNr">2696 </span>    e8/call  <a href='dquotes.subx.html#L2600'>string-length-at-start-of-slice</a>/disp32
-<span id="L2697" class="LineNr">2697 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2698" class="LineNr">2698 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              8/imm32           <span class="subxComment"># add to ESP</span>
-<span id="L2699" class="LineNr">2699 </span>    <span class="subxComment"># check-ints-equal(EAX, 3, msg)</span>
-<span id="L2700" class="LineNr">2700 </span>    <span class="subxS2Comment"># . . push args</span>
-<span id="L2701" class="LineNr">2701 </span>    68/push  <span class="Constant">&quot;F - test-string-length-at-start-of-slice-escaped&quot;</span>/imm32
-<span id="L2702" class="LineNr">2702 </span>    68/push  3/imm32
-<span id="L2703" class="LineNr">2703 </span>    50/push-EAX
-<span id="L2704" class="LineNr">2704 </span>    <span class="subxS2Comment"># . . call</span>
-<span id="L2705" class="LineNr">2705 </span>    e8/call  <a href='../051test.subx.html#L24'>check-ints-equal</a>/disp32
-<span id="L2706" class="LineNr">2706 </span>    <span class="subxS2Comment"># . . discard args</span>
-<span id="L2707" class="LineNr">2707 </span>    81          0/subop/add         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xc/imm32         <span class="subxComment"># add to ESP</span>
-<span id="L2708" class="LineNr">2708 </span>    <span class="subxS1Comment"># . epilog</span>
-<span id="L2709" class="LineNr">2709 </span>    89/copy                         3/mod/direct    4/rm32/ESP   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          5/r32/EBP  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy EBP to ESP</span>
-<span id="L2710" class="LineNr">2710 </span>    5d/pop-to-EBP
-<span id="L2711" class="LineNr">2711 </span>    c3/return
-<span id="L2712" class="LineNr">2712 </span>
-<span id="L2713" class="LineNr">2713 </span>== data
-<span id="L2714" class="LineNr">2714 </span>
-<span id="L2715" class="LineNr">2715 </span><span class="SpecialChar">Next-string-literal</span>:  <span class="subxComment"># tracks the next auto-generated variable name</span>
-<span id="L2716" class="LineNr">2716 </span>  1/imm32
-<span id="L2717" class="LineNr">2717 </span>
-<span id="L2718" class="LineNr">2718 </span><span class="subxComment"># length-prefixed string containing just a single space</span>
-<span id="L2719" class="LineNr">2719 </span><span class="SpecialChar">Space</span>:
-<span id="L2720" class="LineNr">2720 </span>    <span class="subxComment"># size</span>
-<span id="L2721" class="LineNr">2721 </span>    1/imm32
-<span id="L2722" class="LineNr">2722 </span>    <span class="subxComment"># data</span>
-<span id="L2723" class="LineNr">2723 </span>    20/space
-<span id="L2724" class="LineNr">2724 </span>
-<span id="L2725" class="LineNr">2725 </span><span class="subxComment"># length-prefixed string containing just a single slash</span>
-<span id="L2726" class="LineNr">2726 </span><span class="SpecialChar">Slash</span>:
-<span id="L2727" class="LineNr">2727 </span>    <span class="subxComment"># size</span>
-<span id="L2728" class="LineNr">2728 </span>    1/imm32
-<span id="L2729" class="LineNr">2729 </span>    <span class="subxComment"># data</span>
-<span id="L2730" class="LineNr">2730 </span>    2f/slash
-<span id="L2731" class="LineNr">2731 </span>
-<span id="L2732" class="LineNr">2732 </span><span class="subxMinorFunction">_test-slice-abc</span>:
-<span id="L2733" class="LineNr">2733 </span>  22/dquote 61/a 62/b 63/c 22/dquote  <span class="subxComment"># &quot;abc&quot;</span>
-<span id="L2734" class="LineNr">2734 </span>  2f/slash 64/d
-<span id="L2735" class="LineNr">2735 </span><span class="subxMinorFunction">_test-slice-abc-limit</span>:
-<span id="L2736" class="LineNr">2736 </span>
-<span id="L2737" class="LineNr">2737 </span><span class="subxMinorFunction">_test-slice-a-space-b</span>:
-<span id="L2738" class="LineNr">2738 </span>  22/dquote 61/a 20/space 62/b 22/dquote  <span class="subxComment"># &quot;a b&quot;</span>
-<span id="L2739" class="LineNr">2739 </span><span class="subxMinorFunction">_test-slice-a-space-b-limit</span>:
-<span id="L2740" class="LineNr">2740 </span>
-<span id="L2741" class="LineNr">2741 </span><span class="subxMinorFunction">_test-slice-a-dquote-b</span>:
-<span id="L2742" class="LineNr">2742 </span>  22/dquote 61/a 5c/backslash 22/dquote 62/b 22/dquote  <span class="subxComment"># &quot;a\&quot;b&quot;</span>
-<span id="L2743" class="LineNr">2743 </span><span class="subxMinorFunction">_test-slice-a-dquote-b-limit</span>:
-<span id="L2744" class="LineNr">2744 </span>
-<span id="L2745" class="LineNr">2745 </span><span class="subxMinorFunction">_test-slice-a-newline-b</span>:
-<span id="L2746" class="LineNr">2746 </span>  22/dquote 61/a 5c/backslash 6e/n 62/b 22/dquote  <span class="subxComment"># &quot;a\nb&quot;</span>
-<span id="L2747" class="LineNr">2747 </span><span class="subxMinorFunction">_test-slice-a-newline-b-limit</span>:
-<span id="L2748" class="LineNr">2748 </span>
-<span id="L2749" class="LineNr">2749 </span><span class="subxComment"># &quot;abc/def&quot;/ghi</span>
-<span id="L2750" class="LineNr">2750 </span><span class="subxMinorFunction">_test-slice-literal-string</span>:
-<span id="L2751" class="LineNr">2751 </span>  22/dquote
-<span id="L2752" class="LineNr">2752 </span>  61/a 62/b 63/c  <span class="subxComment"># abc</span>
-<span id="L2753" class="LineNr">2753 </span>  2f/slash 64/d 65/e 66/f  <span class="subxComment"># /def</span>
-<span id="L2754" class="LineNr">2754 </span>  22/dquote
-<span id="L2755" class="LineNr">2755 </span>  2f/slash 67/g 68/h 69/i  <span class="subxComment"># /ghi</span>
-<span id="L2756" class="LineNr">2756 </span><span class="subxMinorFunction">_test-slice-literal-string-with-limit</span>:
-<span id="L2757" class="LineNr">2757 </span>
-<span id="L2758" class="LineNr">2758 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
+<span id="L2318" class="LineNr">2318 </span><span class="subxMinorFunction">_test-slice-a-newline-b</span>:
+<span id="L2319" class="LineNr">2319 </span>  22/dquote 61/a 5c/backslash 6e/n 62/b 22/dquote  <span class="subxComment"># &quot;a\nb&quot;</span>
+<span id="L2320" class="LineNr">2320 </span><span class="subxMinorFunction">_test-slice-a-newline-b-limit</span>:
+<span id="L2321" class="LineNr">2321 </span>
+<span id="L2322" class="LineNr">2322 </span><span class="subxComment"># &quot;abc/def&quot;/ghi</span>
+<span id="L2323" class="LineNr">2323 </span><span class="subxMinorFunction">_test-slice-literal-string</span>:
+<span id="L2324" class="LineNr">2324 </span>  22/dquote
+<span id="L2325" class="LineNr">2325 </span>  61/a 62/b 63/c  <span class="subxComment"># abc</span>
+<span id="L2326" class="LineNr">2326 </span>  2f/slash 64/d 65/e 66/f  <span class="subxComment"># /def</span>
+<span id="L2327" class="LineNr">2327 </span>  22/dquote
+<span id="L2328" class="LineNr">2328 </span>  2f/slash 67/g 68/h 69/i  <span class="subxComment"># /ghi</span>
+<span id="L2329" class="LineNr">2329 </span><span class="subxMinorFunction">_test-slice-literal-string-with-limit</span>:
+<span id="L2330" class="LineNr">2330 </span>
+<span id="L2331" class="LineNr">2331 </span><span class="subxS2Comment"># . . vim&#0058;nowrap:textwidth=0</span>
 </pre>
 </body>
 </html>