about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-08-31 23:56:24 -0700
committerKartik Agaram <vc@akkartik.com>2019-08-31 23:58:19 -0700
commit075354cd175fdf0c778fdf09b0d26fae5c8e959a (patch)
tree0e4b71e8ebc1d9e772a54eb08b828b042921b871
parent282681c729857026e3713d45e9027fdfccda0880 (diff)
downloadmu-075354cd175fdf0c778fdf09b0d26fae5c8e959a.tar.gz
5601
-rw-r--r--apps/sigils.subx136
-rw-r--r--html/apps/sigils.subx.html136
2 files changed, 136 insertions, 136 deletions
diff --git a/apps/sigils.subx b/apps/sigils.subx
index 53452f1e..94bc643d 100644
--- a/apps/sigils.subx
+++ b/apps/sigils.subx
@@ -1272,19 +1272,19 @@ test-convert-register-indirect-mode-with-sib-byte-negative-displacement:
     5d/pop-to-ebp
     c3/return
 
-# BEWARE: modifies 'word'
-emit-direct-mode:  # word : (address slice), out : (address buffered-file)
+# BEWARE: modifies 'word-slice'
+emit-direct-mode:  # word-slice : (address slice), out : (address buffered-file)
     # . prolog
     55/push-ebp
     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
     # . save registers
     50/push-eax
-    # ++word->start
-    # . eax = word
+    # ++word-slice->start
+    # . eax = word-slice
     8b/copy                         1/mod/*+disp8   5/rm32/ebp    .           .             .           0/r32/eax   8/disp8         .                 # copy *(ebp+8) to eax
     # . ++(*eax)
     ff          0/subop/increment   0/mod/indirect  0/rm32/eax    .           .             .           .           .               .                 # increment *eax
-    # word = next-token-from-slice(word->start, word->end, "/")
+    # word-slice = next-token-from-slice(word-slice->start, word-slice->end, "/")
     # . . push args
     50/push-eax
     68/push  0x2f/imm32/slash
@@ -1294,7 +1294,7 @@ emit-direct-mode:  # word : (address slice), out : (address buffered-file)
     e8/call  next-token-from-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0x10/imm32        # add to esp
-    # reg-num/eax = get-slice(Registers, word, row-size=8)
+    # reg-num/eax = get-slice(Registers, word-slice, row-size=8)
     # . . push args
     68/push  "Registers"/imm32
     68/push  8/imm32/row-size
@@ -2105,52 +2105,52 @@ test-next-word-or-expression-returns-whole-expression:
 #   *(reg1+reg2<<s+disp)    -> 2/mod 4/rm32 reg1/base reg2/index s/scale disp/disp32
 # Intermediate structure: base, index, scale, disp
 # Default values: base: 0, index: 4 (none), scale: 0, disp: 0
-# BEWARE: modifies 'word'
-parse-effective-address:  # word : (address slice) -> base/eax, index/ecx, scale/edx, disp/ebx
+# BEWARE: modifies 'word-slice'
+parse-effective-address:  # word-slice : (address slice) -> base/eax, index/ecx, scale/edx, disp/ebx
     # pseudocode:
-    #   ++word->start to skip '*'
+    #   ++word-slice->start to skip '*'
     #   initialize defaults: base=0, index=4, scale=0, disp=0
-    #   if (*word->start != '(') {
-    #     word = next-token-from-slice(word->start, word->end, "/")
-    #     base = get-slice(Registers, word, row-size=8)
+    #   if (*word-slice->start != '(') {
+    #     word-slice = next-token-from-slice(word-slice->start, word-slice->end, "/")
+    #     base = get-slice(Registers, word-slice, row-size=8)
     #     return
     #   }
     #   # compound expressions
     #   skip whitespace
     #   read register into base
     #   skip whitespace
-    #   if (*word->start == ')') goto end
-    #   if (*word->start == '-') goto displacement
-    #   if (*word->start != '+') goto error1
-    #   ++word->start to skip '+'
+    #   if (*word-slice->start == ')') goto end
+    #   if (*word-slice->start == '-') goto displacement
+    #   if (*word-slice->start != '+') goto error1
+    #   ++word-slice->start to skip '+'
     #   skip whitespace
     #   if next 3 characters don't make a register, goto displacement
     #   read register into index
     #   skip whitespace
-    #   if (*word->start == ')') goto end
-    #   if (*word->start == '<') {
-    #     ++word->start to skip '<'
-    #     if (*word->start != '<') goto error2
-    #     ++word->start to skip '<'
+    #   if (*word-slice->start == ')') goto end
+    #   if (*word-slice->start == '<') {
+    #     ++word-slice->start to skip '<'
+    #     if (*word-slice->start != '<') goto error2
+    #     ++word-slice->start to skip '<'
     #     skip whitespace
     #     read integer into scale
     #     skip whitespace
-    #     if (*word->start == ')') goto end
+    #     if (*word-slice->start == ')') goto end
     #   }
-    #   if (*word->start not in '+' '-') goto error3
+    #   if (*word-slice->start not in '+' '-') goto error3
     # displacement:
     #   read integer into disp
     #   skip whitespace
-    #   if (*word->start != ')') goto error4
+    #   if (*word-slice->start != ')') goto error4
     # . prolog
     55/push-ebp
     89/copy                         3/mod/direct    5/rm32/ebp    .           .             .           4/r32/esp   .               .                 # copy esp to ebp
     # . save registers
     56/push-esi
     57/push-edi
-    # esi = word
+    # esi = word-slice
     8b/copy                         1/mod/*+disp8   5/rm32/ebp    .           .             .           6/r32/esi   8/disp8         .                 # copy *(ebp+8) to esi
-    # ++word->start to skip '*'
+    # ++word-slice->start to skip '*'
     ff          0/subop/increment   0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # increment *esi
     # initialize defaults
     # base is in edi; we'll move it to eax just before we return
@@ -2159,14 +2159,14 @@ parse-effective-address:  # word : (address slice) -> base/eax, index/ecx, scale
     ba/copy-to-edx  0/imm32/.scale
     bb/copy-to-ebx  0/imm32/disp
 $parse-effective-address:check-for-simple-register:
-    # if (*word->start == '(') goto compound expression
+    # if (*word-slice->start == '(') goto compound expression
     8b/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy *esi to eax
     8a/copy-byte                    0/mod/indirect  0/rm32/eax    .           .             .           0/r32/AL    .               .                 # copy byte at *eax to AL
     81          4/subop/and         3/mod/direct    0/rm32/eax    .           .             .           .           .               0xff/imm32        # bitwise and of eax
     3d/compare-eax-and  0x28/imm32/open-paren
     74/jump-if-equal  $parse-effective-address:compound-expression/disp8
 $parse-effective-address:simple-register:
-    # word = next-token-from-slice(word->start, word->end, "/")
+    # word-slice = next-token-from-slice(word-slice->start, word-slice->end, "/")
     # . . push args
     56/push-esi
     68/push  0x2f/imm32/slash
@@ -2176,8 +2176,8 @@ $parse-effective-address:simple-register:
     e8/call  next-token-from-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0x10/imm32        # add to esp
-    # base = get-slice(Registers, word, row-size=8)
-    # . eax = get-slice(Registers, word, row-size=8)
+    # base = get-slice(Registers, word-slice, row-size=8)
+    # . eax = get-slice(Registers, word-slice, row-size=8)
     # . . push args
     68/push  "Registers"/imm32
     68/push  8/imm32/row-size
@@ -2192,10 +2192,10 @@ $parse-effective-address:simple-register:
     # return
     e9/jump  $parse-effective-address:end/disp32
 $parse-effective-address:compound-expression:
-    # ++word->start to skip '('
+    # ++word-slice->start to skip '('
     ff          0/subop/increment   0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # increment *esi
     # skip whitespace
-    # . eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # . eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
     ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
@@ -2203,10 +2203,10 @@ $parse-effective-address:compound-expression:
     e8/call  skip-chars-matching-whitespace-in-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-    # . word->start = eax
+    # . word-slice->start = eax
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to *esi
     # read register into base
-    # . eax = next-register(word)
+    # . eax = next-register(word-slice)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   5/rm32/ebp    .           .             .           .           8/disp8         .                 # push *(ebp+8)
     # . . call
@@ -2216,7 +2216,7 @@ $parse-effective-address:compound-expression:
     # . edi = *eax
     8b/copy                         0/mod/indirect  0/rm32/eax    .           .             .           7/r32/edi   .               .                 # copy *eax to edi
     # skip whitespace
-    # . eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # . eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
     ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
@@ -2224,24 +2224,24 @@ $parse-effective-address:compound-expression:
     e8/call  skip-chars-matching-whitespace-in-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-    # . word->start = eax
+    # . word-slice->start = eax
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to *esi
-    # if (*word->start == ')') goto end
+    # if (*word-slice->start == ')') goto end
     8a/copy-byte                    0/mod/indirect  0/rm32/eax    .           .             .           0/r32/AL    .               .                 # copy byte at *eax to AL
     81          4/subop/and         3/mod/direct    0/rm32/eax    .           .             .           .           .               0xff/imm32        # bitwise and of eax
     3d/compare-eax-and  0x29/imm32/close-paren
     0f 84/jump-if-equal  $parse-effective-address:end/disp32
-    # if (*word->start == '-') goto displacement
+    # if (*word-slice->start == '-') goto displacement
     3d/compare-eax-and  0x2d/imm32/minus
     0f 84/jump-if-equal  $parse-effective-address:displacement/disp32
-    # if (*word->start != '+') goto error1
+    # if (*word-slice->start != '+') goto error1
     3d/compare-eax-and  0x2b/imm32/plus
     0f 85/jump-if-not-equal  $parse-effective-address:error1/disp32
 $parse-effective-address:check-for-index:
-    # ++word->start to skip '+'
+    # ++word-slice->start to skip '+'
     ff          0/subop/increment   0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # increment *esi
     # skip whitespace
-    # . eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # . eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
     ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
@@ -2249,16 +2249,16 @@ $parse-effective-address:check-for-index:
     e8/call  skip-chars-matching-whitespace-in-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-    # . word->start = eax
+    # . word-slice->start = eax
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to *esi
 $parse-effective-address:resolve-ambiguity:
     # if next 3 characters don't make a register, goto displacement
     # . spill ecx
     51/push-ecx
-    # . var tmp/ecx = {word->start, word->start+3}
-    # . . ecx = word->start
+    # . var tmp/ecx = {word-slice->start, word-slice->start+3}
+    # . . ecx = word-slice->start
     89/copy                         3/mod/direct    1/rm32/ecx    .           .             .           0/r32/eax   .               .                 # copy eax to ecx
-    # . . eax = word->start+3
+    # . . eax = word-slice->start+3
     05/add-to-eax  3/imm32
     # . . push
     50/push-eax
@@ -2283,7 +2283,7 @@ $parse-effective-address:resolve-ambiguity:
     0f 84/jump-if-equal  $parse-effective-address:displacement/disp32
 $parse-effective-address:index:
     # read register into index
-    # . eax = next-register(word)
+    # . eax = next-register(word-slice)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   5/rm32/ebp    .           .             .           .           8/disp8         .                 # push *(ebp+8)
     # . . call
@@ -2293,7 +2293,7 @@ $parse-effective-address:index:
     # . ecx = *eax
     8b/copy                         0/mod/indirect  0/rm32/eax    .           .             .           1/r32/ecx   .               .                 # copy *eax to ecx
     # skip whitespace
-    # . eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # . eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
     ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
@@ -2301,29 +2301,29 @@ $parse-effective-address:index:
     e8/call  skip-chars-matching-whitespace-in-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-    # . word->start = eax
+    # . word-slice->start = eax
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to *esi
-    # if (*word->start == ')') goto end
+    # if (*word-slice->start == ')') goto end
     8a/copy-byte                    0/mod/indirect  0/rm32/eax    .           .             .           0/r32/AL    .               .                 # copy byte at *eax to AL
     81          4/subop/and         3/mod/direct    0/rm32/eax    .           .             .           .           .               0xff/imm32        # bitwise and of eax
     3d/compare-eax-and  0x29/imm32/close-paren
     0f 84/jump-if-equal  $parse-effective-address:end/disp32
 $parse-effective-address:check-for-scale:
-    # if (*word->start != '<') goto next check
+    # if (*word-slice->start != '<') goto next check
     3d/compare-eax-and  0x3c/imm32/less-than
     75/jump-if-not-equal  $parse-effective-address:check-for-displacement/disp8
-    # ++word->start to skip '<'
+    # ++word-slice->start to skip '<'
     ff          0/subop/increment   0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # increment *esi
-    # if (*word->start != '<') goto error2
+    # if (*word-slice->start != '<') goto error2
     8b/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy *esi to eax
     8a/copy-byte                    0/mod/indirect  0/rm32/eax    .           .             .           0/r32/AL    .               .                 # copy byte at *eax to AL
     81          4/subop/and         3/mod/direct    0/rm32/eax    .           .             .           .           .               0xff/imm32        # bitwise and of eax
     3d/compare-eax-and  0x3c/imm32/less-than
     0f 85/jump-if-not-equal  $parse-effective-address:error2/disp32
-    # ++word->start to skip '<'
+    # ++word-slice->start to skip '<'
     ff          0/subop/increment   0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # increment *esi
     # skip whitespace
-    # . eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # . eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
     ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
@@ -2331,11 +2331,11 @@ $parse-effective-address:check-for-scale:
     e8/call  skip-chars-matching-whitespace-in-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-    # . word->start = eax
+    # . word-slice->start = eax
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to *esi
 $parse-effective-address:scale:
     # read positive integer into scale
-    # . eax = next-positive-hex-int(word)
+    # . eax = next-positive-hex-int(word-slice)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   5/rm32/ebp    .           .             .           .           8/disp8         .                 # push *(ebp+8)
     # . . call
@@ -2345,7 +2345,7 @@ $parse-effective-address:scale:
     # . edx = eax
     89/copy                         3/mod/direct    2/rm32/edx    .           .             .           0/r32/eax   .               .                 # copy eax to edx
     # skip whitespace
-    # . eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # . eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
     ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
@@ -2353,15 +2353,15 @@ $parse-effective-address:scale:
     e8/call  skip-chars-matching-whitespace-in-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-    # . word->start = eax
+    # . word-slice->start = eax
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to *esi
-    # if (*word->start == ')') goto end
+    # if (*word-slice->start == ')') goto end
     8a/copy-byte                    0/mod/indirect  0/rm32/eax    .           .             .           0/r32/AL    .               .                 # copy byte at *eax to AL
     81          4/subop/and         3/mod/direct    0/rm32/eax    .           .             .           .           .               0xff/imm32        # bitwise and of eax
     3d/compare-eax-and  0x29/imm32/close-paren
     74/jump-if-equal  $parse-effective-address:end/disp8
 $parse-effective-address:check-for-displacement:
-    # if (*word->start not in '+' '-') goto error3
+    # if (*word-slice->start not in '+' '-') goto error3
     3d/compare-eax-and  0x2b/imm32/plus
     74/jump-if-equal  $parse-effective-address:displacement/disp8
     3d/compare-eax-and  0x2d/imm32/minus
@@ -2369,7 +2369,7 @@ $parse-effective-address:check-for-displacement:
     e9/jump  $parse-effective-address:error3/disp32
 $parse-effective-address:displacement:
     # read integer into disp
-    # . eax = next-hex-int(word)
+    # . eax = next-hex-int(word-slice)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   5/rm32/ebp    .           .             .           .           8/disp8         .                 # push *(ebp+8)
     # . . call
@@ -2379,7 +2379,7 @@ $parse-effective-address:displacement:
     # . ebx = eax
     89/copy                         3/mod/direct    3/rm32/ebx    .           .             .           0/r32/eax   .               .                 # copy eax to ebx
     # skip whitespace
-    # . eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # . eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
     ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
@@ -2387,9 +2387,9 @@ $parse-effective-address:displacement:
     e8/call  skip-chars-matching-whitespace-in-slice/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-    # . word->start = eax
+    # . word-slice->start = eax
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to *esi
-    # if (*word->start != ')') goto error4
+    # if (*word-slice->start != ')') goto error4
     8a/copy-byte                    0/mod/indirect  0/rm32/eax    .           .             .           0/r32/AL    .               .                 # copy byte at *eax to AL
     81          4/subop/and         3/mod/direct    0/rm32/eax    .           .             .           .           .               0xff/imm32        # bitwise and of eax
     3d/compare-eax-and  0x29/imm32/close-paren
@@ -2580,7 +2580,7 @@ next-register:  # in : (address slice) -> reg/eax : int
     89/copy                         3/mod/direct    1/rm32/ecx    .           .             .           4/r32/esp   .               .                 # copy esp to ecx
     # in->start += 3
     81          0/subop/add         0/mod/indirect  6/rm32/esi    .           .             .           .           .               3/imm32           # add to *esi
-    # eax = get-slice(Registers, word, row-size=8)
+    # eax = get-slice(Registers, reg-slice, row-size=8)
     # . . push args
     68/push  "next-register"/imm32
     68/push  8/imm32/row-size
@@ -4138,7 +4138,7 @@ $next-hex-int:need-to-negate:
 $next-hex-int:skip-whitespace:
     # spill eax
     50/push-eax
-    # eax = skip-chars-matching-whitespace-in-slice(word->start, word->end)
+    # eax = skip-chars-matching-whitespace-in-slice(word-slice->start, word-slice->end)
     # . . push args
     52/push-edx
     51/push-ecx
@@ -4204,7 +4204,7 @@ $next-hex-int:break:
 $next-hex-int:negate:
     f7          3/subop/negate      3/mod/direct    7/rm32/edi    .           .             .           .           .               .                 # negate edi
 $next-hex-int:end:
-    # word->start = curr
+    # word-slice->start = curr
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           1/r32/ecx   .               .                 # copy ecx to *esi
     # return edi
     89/copy                         3/mod/direct    0/rm32/eax    .           .             .           7/r32/edi   .               .                 # copy edi to eax
@@ -4583,7 +4583,7 @@ $next-positive-hex-int:loop:
     # loop
     eb/jump  $next-positive-hex-int:loop/disp8
 $next-positive-hex-int:end:
-    # word->start = curr
+    # word-slice->start = curr
     89/copy                         0/mod/indirect  6/rm32/esi    .           .             .           1/r32/ecx   .               .                 # copy ecx to *esi
     # return edi
     89/copy                         3/mod/direct    0/rm32/eax    .           .             .           7/r32/edi   .               .                 # copy edi to eax
diff --git a/html/apps/sigils.subx.html b/html/apps/sigils.subx.html
index f16c8ee1..80e936c6 100644
--- a/html/apps/sigils.subx.html
+++ b/html/apps/sigils.subx.html
@@ -1114,19 +1114,19 @@ if ('onhashchange' in window) {
 <span id="L1272" class="LineNr">1272 </span>    5d/pop-to-ebp
 <span id="L1273" class="LineNr">1273 </span>    c3/return
 <span id="L1274" class="LineNr">1274 </span>
-<span id="L1275" class="LineNr">1275 </span><span class="subxComment"># BEWARE: modifies 'word'</span>
-<span id="L1276" class="LineNr">1276 </span><span class="subxFunction">emit-direct-mode</span>:  <span class="subxComment"># word : (address slice), out : (address buffered-file)</span>
+<span id="L1275" class="LineNr">1275 </span><span class="subxComment"># BEWARE: modifies 'word-slice'</span>
+<span id="L1276" class="LineNr">1276 </span><span class="subxFunction">emit-direct-mode</span>:  <span class="subxComment"># word-slice : (address slice), out : (address buffered-file)</span>
 <span id="L1277" class="LineNr">1277 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L1278" class="LineNr">1278 </span>    55/push-ebp
 <span id="L1279" class="LineNr">1279 </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="L1280" class="LineNr">1280 </span>    <span class="subxS1Comment"># . save registers</span>
 <span id="L1281" class="LineNr">1281 </span>    50/push-eax
-<span id="L1282" class="LineNr">1282 </span>    <span class="subxComment"># ++word-&gt;start</span>
-<span id="L1283" class="LineNr">1283 </span>    <span class="subxS1Comment"># . eax = word</span>
+<span id="L1282" class="LineNr">1282 </span>    <span class="subxComment"># ++word-slice-&gt;start</span>
+<span id="L1283" class="LineNr">1283 </span>    <span class="subxS1Comment"># . eax = word-slice</span>
 <span id="L1284" class="LineNr">1284 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          0/r32/eax   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to eax</span>
 <span id="L1285" class="LineNr">1285 </span>    <span class="subxS1Comment"># . ++(*eax)</span>
 <span id="L1286" class="LineNr">1286 </span>    ff          0/subop/increment   0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># increment *eax</span>
-<span id="L1287" class="LineNr">1287 </span>    <span class="subxComment"># word = next-token-from-slice(word-&gt;start, word-&gt;end, &quot;/&quot;)</span>
+<span id="L1287" class="LineNr">1287 </span>    <span class="subxComment"># word-slice = next-token-from-slice(word-slice-&gt;start, word-slice-&gt;end, &quot;/&quot;)</span>
 <span id="L1288" class="LineNr">1288 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1289" class="LineNr">1289 </span>    50/push-eax
 <span id="L1290" class="LineNr">1290 </span>    68/push  0x2f/imm32/slash
@@ -1136,7 +1136,7 @@ if ('onhashchange' in window) {
 <span id="L1294" class="LineNr">1294 </span>    e8/call  <a href='../073next-token.subx.html#L163'>next-token-from-slice</a>/disp32
 <span id="L1295" class="LineNr">1295 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L1296" class="LineNr">1296 </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>              0x10/imm32        <span class="subxComment"># add to esp</span>
-<span id="L1297" class="LineNr">1297 </span>    <span class="subxComment"># reg-num/eax = get-slice(Registers, word, row-size=8)</span>
+<span id="L1297" class="LineNr">1297 </span>    <span class="subxComment"># reg-num/eax = get-slice(Registers, word-slice, row-size=8)</span>
 <span id="L1298" class="LineNr">1298 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L1299" class="LineNr">1299 </span>    68/push  <span class="Constant">&quot;Registers&quot;</span>/imm32
 <span id="L1300" class="LineNr">1300 </span>    68/push  8/imm32/row-size
@@ -1897,52 +1897,52 @@ if ('onhashchange' in window) {
 <span id="L2105" class="LineNr">2105 </span><span class="subxComment">#   *(reg1+reg2&lt;&lt;s+disp)    -&gt; 2/mod 4/rm32 reg1/base reg2/index s/scale disp/disp32</span>
 <span id="L2106" class="LineNr">2106 </span><span class="subxComment"># Intermediate structure: base, index, scale, disp</span>
 <span id="L2107" class="LineNr">2107 </span><span class="subxComment"># Default values: base: 0, index: 4 (none), scale: 0, disp: 0</span>
-<span id="L2108" class="LineNr">2108 </span><span class="subxComment"># BEWARE: modifies 'word'</span>
-<span id="L2109" class="LineNr">2109 </span><span class="subxFunction">parse-effective-address</span>:  <span class="subxComment"># word : (address slice) -&gt; base/eax, index/ecx, scale/edx, disp/ebx</span>
+<span id="L2108" class="LineNr">2108 </span><span class="subxComment"># BEWARE: modifies 'word-slice'</span>
+<span id="L2109" class="LineNr">2109 </span><span class="subxFunction">parse-effective-address</span>:  <span class="subxComment"># word-slice : (address slice) -&gt; base/eax, index/ecx, scale/edx, disp/ebx</span>
 <span id="L2110" class="LineNr">2110 </span>    <span class="subxComment"># pseudocode:</span>
-<span id="L2111" class="LineNr">2111 </span>    <span class="subxComment">#   ++word-&gt;start to skip '*'</span>
+<span id="L2111" class="LineNr">2111 </span>    <span class="subxComment">#   ++word-slice-&gt;start to skip '*'</span>
 <span id="L2112" class="LineNr">2112 </span>    <span class="subxComment">#   initialize defaults: base=0, index=4, scale=0, disp=0</span>
-<span id="L2113" class="LineNr">2113 </span>    <span class="subxComment">#   if (*word-&gt;start != '(') {</span>
-<span id="L2114" class="LineNr">2114 </span>    <span class="subxComment">#     word = next-token-from-slice(word-&gt;start, word-&gt;end, &quot;/&quot;)</span>
-<span id="L2115" class="LineNr">2115 </span>    <span class="subxComment">#     base = get-slice(Registers, word, row-size=8)</span>
+<span id="L2113" class="LineNr">2113 </span>    <span class="subxComment">#   if (*word-slice-&gt;start != '(') {</span>
+<span id="L2114" class="LineNr">2114 </span>    <span class="subxComment">#     word-slice = next-token-from-slice(word-slice-&gt;start, word-slice-&gt;end, &quot;/&quot;)</span>
+<span id="L2115" class="LineNr">2115 </span>    <span class="subxComment">#     base = get-slice(Registers, word-slice, row-size=8)</span>
 <span id="L2116" class="LineNr">2116 </span>    <span class="subxComment">#     return</span>
 <span id="L2117" class="LineNr">2117 </span>    <span class="subxComment">#   }</span>
 <span id="L2118" class="LineNr">2118 </span>    <span class="subxComment">#   # compound expressions</span>
 <span id="L2119" class="LineNr">2119 </span>    <span class="subxComment">#   skip whitespace</span>
 <span id="L2120" class="LineNr">2120 </span>    <span class="subxComment">#   read register into base</span>
 <span id="L2121" class="LineNr">2121 </span>    <span class="subxComment">#   skip whitespace</span>
-<span id="L2122" class="LineNr">2122 </span>    <span class="subxComment">#   if (*word-&gt;start == ')') goto end</span>
-<span id="L2123" class="LineNr">2123 </span>    <span class="subxComment">#   if (*word-&gt;start == '-') goto displacement</span>
-<span id="L2124" class="LineNr">2124 </span>    <span class="subxComment">#   if (*word-&gt;start != '+') goto error1</span>
-<span id="L2125" class="LineNr">2125 </span>    <span class="subxComment">#   ++word-&gt;start to skip '+'</span>
+<span id="L2122" class="LineNr">2122 </span>    <span class="subxComment">#   if (*word-slice-&gt;start == ')') goto end</span>
+<span id="L2123" class="LineNr">2123 </span>    <span class="subxComment">#   if (*word-slice-&gt;start == '-') goto displacement</span>
+<span id="L2124" class="LineNr">2124 </span>    <span class="subxComment">#   if (*word-slice-&gt;start != '+') goto error1</span>
+<span id="L2125" class="LineNr">2125 </span>    <span class="subxComment">#   ++word-slice-&gt;start to skip '+'</span>
 <span id="L2126" class="LineNr">2126 </span>    <span class="subxComment">#   skip whitespace</span>
 <span id="L2127" class="LineNr">2127 </span>    <span class="subxComment">#   if next 3 characters don't make a register, goto displacement</span>
 <span id="L2128" class="LineNr">2128 </span>    <span class="subxComment">#   read register into index</span>
 <span id="L2129" class="LineNr">2129 </span>    <span class="subxComment">#   skip whitespace</span>
-<span id="L2130" class="LineNr">2130 </span>    <span class="subxComment">#   if (*word-&gt;start == ')') goto end</span>
-<span id="L2131" class="LineNr">2131 </span>    <span class="subxComment">#   if (*word-&gt;start == '&lt;') {</span>
-<span id="L2132" class="LineNr">2132 </span>    <span class="subxComment">#     ++word-&gt;start to skip '&lt;'</span>
-<span id="L2133" class="LineNr">2133 </span>    <span class="subxComment">#     if (*word-&gt;start != '&lt;') goto error2</span>
-<span id="L2134" class="LineNr">2134 </span>    <span class="subxComment">#     ++word-&gt;start to skip '&lt;'</span>
+<span id="L2130" class="LineNr">2130 </span>    <span class="subxComment">#   if (*word-slice-&gt;start == ')') goto end</span>
+<span id="L2131" class="LineNr">2131 </span>    <span class="subxComment">#   if (*word-slice-&gt;start == '&lt;') {</span>
+<span id="L2132" class="LineNr">2132 </span>    <span class="subxComment">#     ++word-slice-&gt;start to skip '&lt;'</span>
+<span id="L2133" class="LineNr">2133 </span>    <span class="subxComment">#     if (*word-slice-&gt;start != '&lt;') goto error2</span>
+<span id="L2134" class="LineNr">2134 </span>    <span class="subxComment">#     ++word-slice-&gt;start to skip '&lt;'</span>
 <span id="L2135" class="LineNr">2135 </span>    <span class="subxComment">#     skip whitespace</span>
 <span id="L2136" class="LineNr">2136 </span>    <span class="subxComment">#     read integer into scale</span>
 <span id="L2137" class="LineNr">2137 </span>    <span class="subxComment">#     skip whitespace</span>
-<span id="L2138" class="LineNr">2138 </span>    <span class="subxComment">#     if (*word-&gt;start == ')') goto end</span>
+<span id="L2138" class="LineNr">2138 </span>    <span class="subxComment">#     if (*word-slice-&gt;start == ')') goto end</span>
 <span id="L2139" class="LineNr">2139 </span>    <span class="subxComment">#   }</span>
-<span id="L2140" class="LineNr">2140 </span>    <span class="subxComment">#   if (*word-&gt;start not in '+' '-') goto error3</span>
+<span id="L2140" class="LineNr">2140 </span>    <span class="subxComment">#   if (*word-slice-&gt;start not in '+' '-') goto error3</span>
 <span id="L2141" class="LineNr">2141 </span>    <span class="subxComment"># displacement:</span>
 <span id="L2142" class="LineNr">2142 </span>    <span class="subxComment">#   read integer into disp</span>
 <span id="L2143" class="LineNr">2143 </span>    <span class="subxComment">#   skip whitespace</span>
-<span id="L2144" class="LineNr">2144 </span>    <span class="subxComment">#   if (*word-&gt;start != ')') goto error4</span>
+<span id="L2144" class="LineNr">2144 </span>    <span class="subxComment">#   if (*word-slice-&gt;start != ')') goto error4</span>
 <span id="L2145" class="LineNr">2145 </span>    <span class="subxS1Comment"># . prolog</span>
 <span id="L2146" class="LineNr">2146 </span>    55/push-ebp
 <span id="L2147" class="LineNr">2147 </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="L2148" class="LineNr">2148 </span>    <span class="subxS1Comment"># . save registers</span>
 <span id="L2149" class="LineNr">2149 </span>    56/push-esi
 <span id="L2150" class="LineNr">2150 </span>    57/push-edi
-<span id="L2151" class="LineNr">2151 </span>    <span class="subxComment"># esi = word</span>
+<span id="L2151" class="LineNr">2151 </span>    <span class="subxComment"># esi = word-slice</span>
 <span id="L2152" class="LineNr">2152 </span>    8b/copy                         1/mod/*+disp8   5/rm32/ebp   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          6/r32/esi   8/disp8        <span class="Normal"> . </span>                <span class="subxComment"># copy *(ebp+8) to esi</span>
-<span id="L2153" class="LineNr">2153 </span>    <span class="subxComment"># ++word-&gt;start to skip '*'</span>
+<span id="L2153" class="LineNr">2153 </span>    <span class="subxComment"># ++word-slice-&gt;start to skip '*'</span>
 <span id="L2154" class="LineNr">2154 </span>    ff          0/subop/increment   0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># increment *esi</span>
 <span id="L2155" class="LineNr">2155 </span>    <span class="subxComment"># initialize defaults</span>
 <span id="L2156" class="LineNr">2156 </span>    <span class="subxComment"># base is in edi; we'll move it to eax just before we return</span>
@@ -1951,14 +1951,14 @@ if ('onhashchange' in window) {
 <span id="L2159" class="LineNr">2159 </span>    ba/copy-to-edx  0/imm32/.scale
 <span id="L2160" class="LineNr">2160 </span>    bb/copy-to-ebx  0/imm32/disp
 <span id="L2161" class="LineNr">2161 </span><span class="Constant">$parse-effective-address:check-for-simple-register</span>:
-<span id="L2162" class="LineNr">2162 </span>    <span class="subxComment"># if (*word-&gt;start == '(') goto compound expression</span>
+<span id="L2162" class="LineNr">2162 </span>    <span class="subxComment"># if (*word-slice-&gt;start == '(') goto compound expression</span>
 <span id="L2163" class="LineNr">2163 </span>    8b/copy                         0/mod/indirect  6/rm32/esi   <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 *esi to eax</span>
 <span id="L2164" class="LineNr">2164 </span>    8a/copy-byte                    0/mod/indirect  0/rm32/eax   <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 *eax to AL</span>
 <span id="L2165" class="LineNr">2165 </span>    81          4/subop/and         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xff/imm32        <span class="subxComment"># bitwise and of eax</span>
 <span id="L2166" class="LineNr">2166 </span>    3d/compare-eax-and  0x28/imm32/open-paren
 <span id="L2167" class="LineNr">2167 </span>    74/jump-if-equal  $parse-effective-address:compound-expression/disp8
 <span id="L2168" class="LineNr">2168 </span><span class="Constant">$parse-effective-address:simple-register</span>:
-<span id="L2169" class="LineNr">2169 </span>    <span class="subxComment"># word = next-token-from-slice(word-&gt;start, word-&gt;end, &quot;/&quot;)</span>
+<span id="L2169" class="LineNr">2169 </span>    <span class="subxComment"># word-slice = next-token-from-slice(word-slice-&gt;start, word-slice-&gt;end, &quot;/&quot;)</span>
 <span id="L2170" class="LineNr">2170 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2171" class="LineNr">2171 </span>    56/push-esi
 <span id="L2172" class="LineNr">2172 </span>    68/push  0x2f/imm32/slash
@@ -1968,8 +1968,8 @@ if ('onhashchange' in window) {
 <span id="L2176" class="LineNr">2176 </span>    e8/call  <a href='../073next-token.subx.html#L163'>next-token-from-slice</a>/disp32
 <span id="L2177" class="LineNr">2177 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L2178" class="LineNr">2178 </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>              0x10/imm32        <span class="subxComment"># add to esp</span>
-<span id="L2179" class="LineNr">2179 </span>    <span class="subxComment"># base = get-slice(Registers, word, row-size=8)</span>
-<span id="L2180" class="LineNr">2180 </span>    <span class="subxS1Comment"># . eax = get-slice(Registers, word, row-size=8)</span>
+<span id="L2179" class="LineNr">2179 </span>    <span class="subxComment"># base = get-slice(Registers, word-slice, row-size=8)</span>
+<span id="L2180" class="LineNr">2180 </span>    <span class="subxS1Comment"># . eax = get-slice(Registers, word-slice, row-size=8)</span>
 <span id="L2181" class="LineNr">2181 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2182" class="LineNr">2182 </span>    68/push  <span class="Constant">&quot;Registers&quot;</span>/imm32
 <span id="L2183" class="LineNr">2183 </span>    68/push  8/imm32/row-size
@@ -1984,10 +1984,10 @@ if ('onhashchange' in window) {
 <span id="L2192" class="LineNr">2192 </span>    <span class="subxComment"># return</span>
 <span id="L2193" class="LineNr">2193 </span>    e9/jump  $parse-effective-address:end/disp32
 <span id="L2194" class="LineNr">2194 </span><span class="Constant">$parse-effective-address:compound-expression</span>:
-<span id="L2195" class="LineNr">2195 </span>    <span class="subxComment"># ++word-&gt;start to skip '('</span>
+<span id="L2195" class="LineNr">2195 </span>    <span class="subxComment"># ++word-slice-&gt;start to skip '('</span>
 <span id="L2196" class="LineNr">2196 </span>    ff          0/subop/increment   0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># increment *esi</span>
 <span id="L2197" class="LineNr">2197 </span>    <span class="subxComment"># skip whitespace</span>
-<span id="L2198" class="LineNr">2198 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L2198" class="LineNr">2198 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L2199" class="LineNr">2199 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2200" class="LineNr">2200 </span>    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi   <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 *(esi+4)</span>
 <span id="L2201" class="LineNr">2201 </span>    ff          6/subop/push        0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># push *esi</span>
@@ -1995,10 +1995,10 @@ if ('onhashchange' in window) {
 <span id="L2203" class="LineNr">2203 </span>    e8/call  <a href='../073next-token.subx.html#L899'>skip-chars-matching-whitespace-in-slice</a>/disp32
 <span id="L2204" class="LineNr">2204 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L2205" class="LineNr">2205 </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="L2206" class="LineNr">2206 </span>    <span class="subxS1Comment"># . word-&gt;start = eax</span>
+<span id="L2206" class="LineNr">2206 </span>    <span class="subxS1Comment"># . word-slice-&gt;start = eax</span>
 <span id="L2207" class="LineNr">2207 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 eax to *esi</span>
 <span id="L2208" class="LineNr">2208 </span>    <span class="subxComment"># read register into base</span>
-<span id="L2209" class="LineNr">2209 </span>    <span class="subxS1Comment"># . eax = next-register(word)</span>
+<span id="L2209" class="LineNr">2209 </span>    <span class="subxS1Comment"># . eax = next-register(word-slice)</span>
 <span id="L2210" class="LineNr">2210 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2211" class="LineNr">2211 </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="L2212" class="LineNr">2212 </span>    <span class="subxS2Comment"># . . call</span>
@@ -2008,7 +2008,7 @@ if ('onhashchange' in window) {
 <span id="L2216" class="LineNr">2216 </span>    <span class="subxS1Comment"># . edi = *eax</span>
 <span id="L2217" class="LineNr">2217 </span>    8b/copy                         0/mod/indirect  0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          7/r32/edi  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy *eax to edi</span>
 <span id="L2218" class="LineNr">2218 </span>    <span class="subxComment"># skip whitespace</span>
-<span id="L2219" class="LineNr">2219 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L2219" class="LineNr">2219 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L2220" class="LineNr">2220 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2221" class="LineNr">2221 </span>    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi   <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 *(esi+4)</span>
 <span id="L2222" class="LineNr">2222 </span>    ff          6/subop/push        0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># push *esi</span>
@@ -2016,24 +2016,24 @@ if ('onhashchange' in window) {
 <span id="L2224" class="LineNr">2224 </span>    e8/call  <a href='../073next-token.subx.html#L899'>skip-chars-matching-whitespace-in-slice</a>/disp32
 <span id="L2225" class="LineNr">2225 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L2226" class="LineNr">2226 </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="L2227" class="LineNr">2227 </span>    <span class="subxS1Comment"># . word-&gt;start = eax</span>
+<span id="L2227" class="LineNr">2227 </span>    <span class="subxS1Comment"># . word-slice-&gt;start = eax</span>
 <span id="L2228" class="LineNr">2228 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 eax to *esi</span>
-<span id="L2229" class="LineNr">2229 </span>    <span class="subxComment"># if (*word-&gt;start == ')') goto end</span>
+<span id="L2229" class="LineNr">2229 </span>    <span class="subxComment"># if (*word-slice-&gt;start == ')') goto end</span>
 <span id="L2230" class="LineNr">2230 </span>    8a/copy-byte                    0/mod/indirect  0/rm32/eax   <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 *eax to AL</span>
 <span id="L2231" class="LineNr">2231 </span>    81          4/subop/and         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xff/imm32        <span class="subxComment"># bitwise and of eax</span>
 <span id="L2232" class="LineNr">2232 </span>    3d/compare-eax-and  0x29/imm32/close-paren
 <span id="L2233" class="LineNr">2233 </span>    0f 84/jump-if-equal  $parse-effective-address:end/disp32
-<span id="L2234" class="LineNr">2234 </span>    <span class="subxComment"># if (*word-&gt;start == '-') goto displacement</span>
+<span id="L2234" class="LineNr">2234 </span>    <span class="subxComment"># if (*word-slice-&gt;start == '-') goto displacement</span>
 <span id="L2235" class="LineNr">2235 </span>    3d/compare-eax-and  0x2d/imm32/minus
 <span id="L2236" class="LineNr">2236 </span>    0f 84/jump-if-equal  $parse-effective-address:displacement/disp32
-<span id="L2237" class="LineNr">2237 </span>    <span class="subxComment"># if (*word-&gt;start != '+') goto error1</span>
+<span id="L2237" class="LineNr">2237 </span>    <span class="subxComment"># if (*word-slice-&gt;start != '+') goto error1</span>
 <span id="L2238" class="LineNr">2238 </span>    3d/compare-eax-and  0x2b/imm32/plus
 <span id="L2239" class="LineNr">2239 </span>    0f 85/jump-if-not-equal  $parse-effective-address:error1/disp32
 <span id="L2240" class="LineNr">2240 </span><span class="Constant">$parse-effective-address:check-for-index</span>:
-<span id="L2241" class="LineNr">2241 </span>    <span class="subxComment"># ++word-&gt;start to skip '+'</span>
+<span id="L2241" class="LineNr">2241 </span>    <span class="subxComment"># ++word-slice-&gt;start to skip '+'</span>
 <span id="L2242" class="LineNr">2242 </span>    ff          0/subop/increment   0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># increment *esi</span>
 <span id="L2243" class="LineNr">2243 </span>    <span class="subxComment"># skip whitespace</span>
-<span id="L2244" class="LineNr">2244 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L2244" class="LineNr">2244 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L2245" class="LineNr">2245 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2246" class="LineNr">2246 </span>    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi   <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 *(esi+4)</span>
 <span id="L2247" class="LineNr">2247 </span>    ff          6/subop/push        0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># push *esi</span>
@@ -2041,16 +2041,16 @@ if ('onhashchange' in window) {
 <span id="L2249" class="LineNr">2249 </span>    e8/call  <a href='../073next-token.subx.html#L899'>skip-chars-matching-whitespace-in-slice</a>/disp32
 <span id="L2250" class="LineNr">2250 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L2251" class="LineNr">2251 </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="L2252" class="LineNr">2252 </span>    <span class="subxS1Comment"># . word-&gt;start = eax</span>
+<span id="L2252" class="LineNr">2252 </span>    <span class="subxS1Comment"># . word-slice-&gt;start = eax</span>
 <span id="L2253" class="LineNr">2253 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 eax to *esi</span>
 <span id="L2254" class="LineNr">2254 </span><span class="Constant">$parse-effective-address:resolve-ambiguity</span>:
 <span id="L2255" class="LineNr">2255 </span>    <span class="subxComment"># if next 3 characters don't make a register, goto displacement</span>
 <span id="L2256" class="LineNr">2256 </span>    <span class="subxS1Comment"># . spill ecx</span>
 <span id="L2257" class="LineNr">2257 </span>    51/push-ecx
-<span id="L2258" class="LineNr">2258 </span>    <span class="subxS1Comment"># . var tmp/ecx = {word-&gt;start, word-&gt;start+3}</span>
-<span id="L2259" class="LineNr">2259 </span>    <span class="subxS2Comment"># . . ecx = word-&gt;start</span>
+<span id="L2258" class="LineNr">2258 </span>    <span class="subxS1Comment"># . var tmp/ecx = {word-slice-&gt;start, word-slice-&gt;start+3}</span>
+<span id="L2259" class="LineNr">2259 </span>    <span class="subxS2Comment"># . . ecx = word-slice-&gt;start</span>
 <span id="L2260" class="LineNr">2260 </span>    89/copy                         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"># copy eax to ecx</span>
-<span id="L2261" class="LineNr">2261 </span>    <span class="subxS2Comment"># . . eax = word-&gt;start+3</span>
+<span id="L2261" class="LineNr">2261 </span>    <span class="subxS2Comment"># . . eax = word-slice-&gt;start+3</span>
 <span id="L2262" class="LineNr">2262 </span>    05/add-to-eax  3/imm32
 <span id="L2263" class="LineNr">2263 </span>    <span class="subxS2Comment"># . . push</span>
 <span id="L2264" class="LineNr">2264 </span>    50/push-eax
@@ -2075,7 +2075,7 @@ if ('onhashchange' in window) {
 <span id="L2283" class="LineNr">2283 </span>    0f 84/jump-if-equal  $parse-effective-address:displacement/disp32
 <span id="L2284" class="LineNr">2284 </span><span class="Constant">$parse-effective-address:index</span>:
 <span id="L2285" class="LineNr">2285 </span>    <span class="subxComment"># read register into index</span>
-<span id="L2286" class="LineNr">2286 </span>    <span class="subxS1Comment"># . eax = next-register(word)</span>
+<span id="L2286" class="LineNr">2286 </span>    <span class="subxS1Comment"># . eax = next-register(word-slice)</span>
 <span id="L2287" class="LineNr">2287 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2288" class="LineNr">2288 </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="L2289" class="LineNr">2289 </span>    <span class="subxS2Comment"># . . call</span>
@@ -2085,7 +2085,7 @@ if ('onhashchange' in window) {
 <span id="L2293" class="LineNr">2293 </span>    <span class="subxS1Comment"># . ecx = *eax</span>
 <span id="L2294" class="LineNr">2294 </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="L2295" class="LineNr">2295 </span>    <span class="subxComment"># skip whitespace</span>
-<span id="L2296" class="LineNr">2296 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L2296" class="LineNr">2296 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L2297" class="LineNr">2297 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2298" class="LineNr">2298 </span>    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi   <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 *(esi+4)</span>
 <span id="L2299" class="LineNr">2299 </span>    ff          6/subop/push        0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># push *esi</span>
@@ -2093,29 +2093,29 @@ if ('onhashchange' in window) {
 <span id="L2301" class="LineNr">2301 </span>    e8/call  <a href='../073next-token.subx.html#L899'>skip-chars-matching-whitespace-in-slice</a>/disp32
 <span id="L2302" class="LineNr">2302 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L2303" class="LineNr">2303 </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="L2304" class="LineNr">2304 </span>    <span class="subxS1Comment"># . word-&gt;start = eax</span>
+<span id="L2304" class="LineNr">2304 </span>    <span class="subxS1Comment"># . word-slice-&gt;start = eax</span>
 <span id="L2305" class="LineNr">2305 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 eax to *esi</span>
-<span id="L2306" class="LineNr">2306 </span>    <span class="subxComment"># if (*word-&gt;start == ')') goto end</span>
+<span id="L2306" class="LineNr">2306 </span>    <span class="subxComment"># if (*word-slice-&gt;start == ')') goto end</span>
 <span id="L2307" class="LineNr">2307 </span>    8a/copy-byte                    0/mod/indirect  0/rm32/eax   <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 *eax to AL</span>
 <span id="L2308" class="LineNr">2308 </span>    81          4/subop/and         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xff/imm32        <span class="subxComment"># bitwise and of eax</span>
 <span id="L2309" class="LineNr">2309 </span>    3d/compare-eax-and  0x29/imm32/close-paren
 <span id="L2310" class="LineNr">2310 </span>    0f 84/jump-if-equal  $parse-effective-address:end/disp32
 <span id="L2311" class="LineNr">2311 </span><span class="Constant">$parse-effective-address:check-for-scale</span>:
-<span id="L2312" class="LineNr">2312 </span>    <span class="subxComment"># if (*word-&gt;start != '&lt;') goto next check</span>
+<span id="L2312" class="LineNr">2312 </span>    <span class="subxComment"># if (*word-slice-&gt;start != '&lt;') goto next check</span>
 <span id="L2313" class="LineNr">2313 </span>    3d/compare-eax-and  0x3c/imm32/less-than
 <span id="L2314" class="LineNr">2314 </span>    75/jump-if-not-equal  $parse-effective-address:check-for-displacement/disp8
-<span id="L2315" class="LineNr">2315 </span>    <span class="subxComment"># ++word-&gt;start to skip '&lt;'</span>
+<span id="L2315" class="LineNr">2315 </span>    <span class="subxComment"># ++word-slice-&gt;start to skip '&lt;'</span>
 <span id="L2316" class="LineNr">2316 </span>    ff          0/subop/increment   0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># increment *esi</span>
-<span id="L2317" class="LineNr">2317 </span>    <span class="subxComment"># if (*word-&gt;start != '&lt;') goto error2</span>
+<span id="L2317" class="LineNr">2317 </span>    <span class="subxComment"># if (*word-slice-&gt;start != '&lt;') goto error2</span>
 <span id="L2318" class="LineNr">2318 </span>    8b/copy                         0/mod/indirect  6/rm32/esi   <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 *esi to eax</span>
 <span id="L2319" class="LineNr">2319 </span>    8a/copy-byte                    0/mod/indirect  0/rm32/eax   <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 *eax to AL</span>
 <span id="L2320" class="LineNr">2320 </span>    81          4/subop/and         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xff/imm32        <span class="subxComment"># bitwise and of eax</span>
 <span id="L2321" class="LineNr">2321 </span>    3d/compare-eax-and  0x3c/imm32/less-than
 <span id="L2322" class="LineNr">2322 </span>    0f 85/jump-if-not-equal  $parse-effective-address:error2/disp32
-<span id="L2323" class="LineNr">2323 </span>    <span class="subxComment"># ++word-&gt;start to skip '&lt;'</span>
+<span id="L2323" class="LineNr">2323 </span>    <span class="subxComment"># ++word-slice-&gt;start to skip '&lt;'</span>
 <span id="L2324" class="LineNr">2324 </span>    ff          0/subop/increment   0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># increment *esi</span>
 <span id="L2325" class="LineNr">2325 </span>    <span class="subxComment"># skip whitespace</span>
-<span id="L2326" class="LineNr">2326 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L2326" class="LineNr">2326 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L2327" class="LineNr">2327 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2328" class="LineNr">2328 </span>    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi   <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 *(esi+4)</span>
 <span id="L2329" class="LineNr">2329 </span>    ff          6/subop/push        0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># push *esi</span>
@@ -2123,11 +2123,11 @@ if ('onhashchange' in window) {
 <span id="L2331" class="LineNr">2331 </span>    e8/call  <a href='../073next-token.subx.html#L899'>skip-chars-matching-whitespace-in-slice</a>/disp32
 <span id="L2332" class="LineNr">2332 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L2333" class="LineNr">2333 </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="L2334" class="LineNr">2334 </span>    <span class="subxS1Comment"># . word-&gt;start = eax</span>
+<span id="L2334" class="LineNr">2334 </span>    <span class="subxS1Comment"># . word-slice-&gt;start = eax</span>
 <span id="L2335" class="LineNr">2335 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 eax to *esi</span>
 <span id="L2336" class="LineNr">2336 </span><span class="Constant">$parse-effective-address:scale</span>:
 <span id="L2337" class="LineNr">2337 </span>    <span class="subxComment"># read positive integer into scale</span>
-<span id="L2338" class="LineNr">2338 </span>    <span class="subxS1Comment"># . eax = next-positive-hex-int(word)</span>
+<span id="L2338" class="LineNr">2338 </span>    <span class="subxS1Comment"># . eax = next-positive-hex-int(word-slice)</span>
 <span id="L2339" class="LineNr">2339 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2340" class="LineNr">2340 </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="L2341" class="LineNr">2341 </span>    <span class="subxS2Comment"># . . call</span>
@@ -2137,7 +2137,7 @@ if ('onhashchange' in window) {
 <span id="L2345" class="LineNr">2345 </span>    <span class="subxS1Comment"># . edx = eax</span>
 <span id="L2346" class="LineNr">2346 </span>    89/copy                         3/mod/direct    2/rm32/edx   <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 eax to edx</span>
 <span id="L2347" class="LineNr">2347 </span>    <span class="subxComment"># skip whitespace</span>
-<span id="L2348" class="LineNr">2348 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L2348" class="LineNr">2348 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L2349" class="LineNr">2349 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2350" class="LineNr">2350 </span>    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi   <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 *(esi+4)</span>
 <span id="L2351" class="LineNr">2351 </span>    ff          6/subop/push        0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># push *esi</span>
@@ -2145,15 +2145,15 @@ if ('onhashchange' in window) {
 <span id="L2353" class="LineNr">2353 </span>    e8/call  <a href='../073next-token.subx.html#L899'>skip-chars-matching-whitespace-in-slice</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>              8/imm32           <span class="subxComment"># add to esp</span>
-<span id="L2356" class="LineNr">2356 </span>    <span class="subxS1Comment"># . word-&gt;start = eax</span>
+<span id="L2356" class="LineNr">2356 </span>    <span class="subxS1Comment"># . word-slice-&gt;start = eax</span>
 <span id="L2357" class="LineNr">2357 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 eax to *esi</span>
-<span id="L2358" class="LineNr">2358 </span>    <span class="subxComment"># if (*word-&gt;start == ')') goto end</span>
+<span id="L2358" class="LineNr">2358 </span>    <span class="subxComment"># if (*word-slice-&gt;start == ')') goto end</span>
 <span id="L2359" class="LineNr">2359 </span>    8a/copy-byte                    0/mod/indirect  0/rm32/eax   <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 *eax to AL</span>
 <span id="L2360" class="LineNr">2360 </span>    81          4/subop/and         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xff/imm32        <span class="subxComment"># bitwise and of eax</span>
 <span id="L2361" class="LineNr">2361 </span>    3d/compare-eax-and  0x29/imm32/close-paren
 <span id="L2362" class="LineNr">2362 </span>    74/jump-if-equal  $parse-effective-address:end/disp8
 <span id="L2363" class="LineNr">2363 </span><span class="Constant">$parse-effective-address:check-for-displacement</span>:
-<span id="L2364" class="LineNr">2364 </span>    <span class="subxComment"># if (*word-&gt;start not in '+' '-') goto error3</span>
+<span id="L2364" class="LineNr">2364 </span>    <span class="subxComment"># if (*word-slice-&gt;start not in '+' '-') goto error3</span>
 <span id="L2365" class="LineNr">2365 </span>    3d/compare-eax-and  0x2b/imm32/plus
 <span id="L2366" class="LineNr">2366 </span>    74/jump-if-equal  $parse-effective-address:displacement/disp8
 <span id="L2367" class="LineNr">2367 </span>    3d/compare-eax-and  0x2d/imm32/minus
@@ -2161,7 +2161,7 @@ if ('onhashchange' in window) {
 <span id="L2369" class="LineNr">2369 </span>    e9/jump  $parse-effective-address:error3/disp32
 <span id="L2370" class="LineNr">2370 </span><span class="Constant">$parse-effective-address:displacement</span>:
 <span id="L2371" class="LineNr">2371 </span>    <span class="subxComment"># read integer into disp</span>
-<span id="L2372" class="LineNr">2372 </span>    <span class="subxS1Comment"># . eax = next-hex-int(word)</span>
+<span id="L2372" class="LineNr">2372 </span>    <span class="subxS1Comment"># . eax = next-hex-int(word-slice)</span>
 <span id="L2373" class="LineNr">2373 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2374" class="LineNr">2374 </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="L2375" class="LineNr">2375 </span>    <span class="subxS2Comment"># . . call</span>
@@ -2171,7 +2171,7 @@ if ('onhashchange' in window) {
 <span id="L2379" class="LineNr">2379 </span>    <span class="subxS1Comment"># . ebx = eax</span>
 <span id="L2380" class="LineNr">2380 </span>    89/copy                         3/mod/direct    3/rm32/ebx   <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 eax to ebx</span>
 <span id="L2381" class="LineNr">2381 </span>    <span class="subxComment"># skip whitespace</span>
-<span id="L2382" class="LineNr">2382 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L2382" class="LineNr">2382 </span>    <span class="subxS1Comment"># . eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L2383" class="LineNr">2383 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2384" class="LineNr">2384 </span>    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi   <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 *(esi+4)</span>
 <span id="L2385" class="LineNr">2385 </span>    ff          6/subop/push        0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># push *esi</span>
@@ -2179,9 +2179,9 @@ if ('onhashchange' in window) {
 <span id="L2387" class="LineNr">2387 </span>    e8/call  <a href='../073next-token.subx.html#L899'>skip-chars-matching-whitespace-in-slice</a>/disp32
 <span id="L2388" class="LineNr">2388 </span>    <span class="subxS2Comment"># . . discard args</span>
 <span id="L2389" class="LineNr">2389 </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="L2390" class="LineNr">2390 </span>    <span class="subxS1Comment"># . word-&gt;start = eax</span>
+<span id="L2390" class="LineNr">2390 </span>    <span class="subxS1Comment"># . word-slice-&gt;start = eax</span>
 <span id="L2391" class="LineNr">2391 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 eax to *esi</span>
-<span id="L2392" class="LineNr">2392 </span>    <span class="subxComment"># if (*word-&gt;start != ')') goto error4</span>
+<span id="L2392" class="LineNr">2392 </span>    <span class="subxComment"># if (*word-slice-&gt;start != ')') goto error4</span>
 <span id="L2393" class="LineNr">2393 </span>    8a/copy-byte                    0/mod/indirect  0/rm32/eax   <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 *eax to AL</span>
 <span id="L2394" class="LineNr">2394 </span>    81          4/subop/and         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              0xff/imm32        <span class="subxComment"># bitwise and of eax</span>
 <span id="L2395" class="LineNr">2395 </span>    3d/compare-eax-and  0x29/imm32/close-paren
@@ -2372,7 +2372,7 @@ if ('onhashchange' in window) {
 <span id="L2580" class="LineNr">2580 </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="L2581" class="LineNr">2581 </span>    <span class="subxComment"># in-&gt;start += 3</span>
 <span id="L2582" class="LineNr">2582 </span>    81          0/subop/add         0/mod/indirect  6/rm32/esi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>              3/imm32           <span class="subxComment"># add to *esi</span>
-<span id="L2583" class="LineNr">2583 </span>    <span class="subxComment"># eax = get-slice(Registers, word, row-size=8)</span>
+<span id="L2583" class="LineNr">2583 </span>    <span class="subxComment"># eax = get-slice(Registers, reg-slice, row-size=8)</span>
 <span id="L2584" class="LineNr">2584 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L2585" class="LineNr">2585 </span>    68/push  <span class="Constant">&quot;next-register&quot;</span>/imm32
 <span id="L2586" class="LineNr">2586 </span>    68/push  8/imm32/row-size
@@ -3755,7 +3755,7 @@ if ('onhashchange' in window) {
 <span id="L4138" class="LineNr">4138 </span><span class="Constant">$next-hex-int:skip-whitespace</span>:
 <span id="L4139" class="LineNr">4139 </span>    <span class="subxComment"># spill eax</span>
 <span id="L4140" class="LineNr">4140 </span>    50/push-eax
-<span id="L4141" class="LineNr">4141 </span>    <span class="subxComment"># eax = skip-chars-matching-whitespace-in-slice(word-&gt;start, word-&gt;end)</span>
+<span id="L4141" class="LineNr">4141 </span>    <span class="subxComment"># eax = skip-chars-matching-whitespace-in-slice(word-slice-&gt;start, word-slice-&gt;end)</span>
 <span id="L4142" class="LineNr">4142 </span>    <span class="subxS2Comment"># . . push args</span>
 <span id="L4143" class="LineNr">4143 </span>    52/push-edx
 <span id="L4144" class="LineNr">4144 </span>    51/push-ecx
@@ -3821,7 +3821,7 @@ if ('onhashchange' in window) {
 <span id="L4204" class="LineNr">4204 </span><span class="Constant">$next-hex-int:negate</span>:
 <span id="L4205" class="LineNr">4205 </span>    f7          3/subop/negate      3/mod/direct    7/rm32/edi   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>         <span class="Normal"> . </span>         <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># negate edi</span>
 <span id="L4206" class="LineNr">4206 </span><span class="Constant">$next-hex-int:end</span>:
-<span id="L4207" class="LineNr">4207 </span>    <span class="subxComment"># word-&gt;start = curr</span>
+<span id="L4207" class="LineNr">4207 </span>    <span class="subxComment"># word-slice-&gt;start = curr</span>
 <span id="L4208" class="LineNr">4208 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 *esi</span>
 <span id="L4209" class="LineNr">4209 </span>    <span class="subxComment"># return edi</span>
 <span id="L4210" class="LineNr">4210 </span>    89/copy                         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          7/r32/edi  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy edi to eax</span>
@@ -4200,7 +4200,7 @@ if ('onhashchange' in window) {
 <span id="L4583" class="LineNr">4583 </span>    <span class="subxComment"># loop</span>
 <span id="L4584" class="LineNr">4584 </span>    eb/jump  $next-positive-hex-int:loop/disp8
 <span id="L4585" class="LineNr">4585 </span><span class="Constant">$next-positive-hex-int:end</span>:
-<span id="L4586" class="LineNr">4586 </span>    <span class="subxComment"># word-&gt;start = curr</span>
+<span id="L4586" class="LineNr">4586 </span>    <span class="subxComment"># word-slice-&gt;start = curr</span>
 <span id="L4587" class="LineNr">4587 </span>    89/copy                         0/mod/indirect  6/rm32/esi   <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 *esi</span>
 <span id="L4588" class="LineNr">4588 </span>    <span class="subxComment"># return edi</span>
 <span id="L4589" class="LineNr">4589 </span>    89/copy                         3/mod/direct    0/rm32/eax   <span class="Normal"> . </span>         <span class="Normal"> . </span>           <span class="Normal"> . </span>          7/r32/edi  <span class="Normal"> . </span>             <span class="Normal"> . </span>                <span class="subxComment"># copy edi to eax</span>