diff options
-rwxr-xr-x | apps/sigils | bin | 51875 -> 51875 bytes | |||
-rw-r--r-- | apps/sigils.subx | 24 | ||||
-rw-r--r-- | html/apps/sigils.subx.html | 30 |
3 files changed, 27 insertions, 27 deletions
diff --git a/apps/sigils b/apps/sigils index c6089ec5..6c3405a5 100755 --- a/apps/sigils +++ b/apps/sigils Binary files differdiff --git a/apps/sigils.subx b/apps/sigils.subx index 9772e5ad..abc5fcd3 100644 --- a/apps/sigils.subx +++ b/apps/sigils.subx @@ -112,7 +112,7 @@ convert: # in : (address buffered-file), out : (address buffered-file) -> <void # if slice-starts-with?(word-slice, "#") # comment # continue # if slice-starts-with?(word-slice, '%') # direct mode - # emit-direct-mode(word-slice, out) + # emit-direct-mode(out, word-slice) # else if slice-starts-with?(word-slice, '*') # indirect mode # base, index, scale, disp = parse-effective-address(word-slice) # emit-indirect-mode(out, base, index, scale, disp) @@ -244,10 +244,10 @@ $convert:direct-mode: #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # }}} - # emit-direct-mode(word-slice, out) + # emit-direct-mode(out, word-slice) # . . push args - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 52/push-edx + ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) # . . call e8/call emit-direct-mode/disp32 # . . discard args @@ -1272,14 +1272,14 @@ test-convert-register-indirect-mode-with-sib-byte-negative-displacement: 5d/pop-to-ebp c3/return -emit-direct-mode: # word-slice : (address slice), out : (address buffered-file) +emit-direct-mode: # out : (address buffered-file), word-slice : (address slice) # . prolog 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers 50/push-eax # var local-slice/eax : (address slice) = {word-slice->start, word-slice->end} - 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 8/disp8 . # copy *(ebp+8) to eax + 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax ff 6/subop/push 1/mod/*+disp8 0/rm32/eax . . . . 4/disp8 . # push *(eax+4) ff 6/subop/push 0/mod/indirect 0/rm32/eax . . . . . . # push *eax 89/copy 3/mod/direct 0/rm32/eax . . . 4/r32/esp . . # copy esp to eax @@ -1309,7 +1309,7 @@ emit-direct-mode: # word-slice : (address slice), out : (address buffered-file) # write-buffered(out, "3/mod/direct ") # . . push args 68/push "3/mod/direct "/imm32 - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) + ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call write-buffered/disp32 # . . discard args @@ -1317,7 +1317,7 @@ emit-direct-mode: # word-slice : (address slice), out : (address buffered-file) # print-int32-buffered(out, *eax) # . . push args ff 6/subop/push 0/mod/indirect 0/rm32/eax . . . . . . # push *eax - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) + ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call print-int32-buffered/disp32 # . . discard args @@ -1325,7 +1325,7 @@ emit-direct-mode: # word-slice : (address slice), out : (address buffered-file) # write-buffered(out, "/rm32") # . . push args 68/push "/rm32"/imm32 - ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) + ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call write-buffered/disp32 # . . discard args @@ -1370,10 +1370,10 @@ test-emit-direct-mode: 51/push-ecx 50/push-eax 89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx - # emit-direct-mode(str, _test-output-buffered-file) + # emit-direct-mode(_test-output-buffered-file, str) # . . push args - 68/push _test-output-buffered-file/imm32 51/push-ecx + 68/push _test-output-buffered-file/imm32 # . . call e8/call emit-direct-mode/disp32 # . . discard args @@ -1455,10 +1455,10 @@ test-emit-direct-mode-2: 51/push-ecx 50/push-eax 89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx - # emit-direct-mode(str/ecx, _test-output-buffered-file) + # emit-direct-mode(_test-output-buffered-file, str/ecx) # . . push args - 68/push _test-output-buffered-file/imm32 51/push-ecx + 68/push _test-output-buffered-file/imm32 # . . call e8/call emit-direct-mode/disp32 # . . discard args diff --git a/html/apps/sigils.subx.html b/html/apps/sigils.subx.html index d2de9dfa..6f38678b 100644 --- a/html/apps/sigils.subx.html +++ b/html/apps/sigils.subx.html @@ -174,7 +174,7 @@ if ('onhashchange' in window) { <span id="L112" class="LineNr"> 112 </span> <span class="subxComment"># if slice-starts-with?(word-slice, "#") # comment</span> <span id="L113" class="LineNr"> 113 </span> <span class="subxComment"># continue</span> <span id="L114" class="LineNr"> 114 </span> <span class="subxComment"># if slice-starts-with?(word-slice, '%') # direct mode</span> -<span id="L115" class="LineNr"> 115 </span> <span class="subxComment"># emit-direct-mode(word-slice, out)</span> +<span id="L115" class="LineNr"> 115 </span> <span class="subxComment"># emit-direct-mode(out, word-slice)</span> <span id="L116" class="LineNr"> 116 </span> <span class="subxComment"># else if slice-starts-with?(word-slice, '*') # indirect mode</span> <span id="L117" class="LineNr"> 117 </span> <span class="subxComment"># base, index, scale, disp = parse-effective-address(word-slice)</span> <span id="L118" class="LineNr"> 118 </span> <span class="subxComment"># emit-indirect-mode(out, base, index, scale, disp)</span> @@ -261,10 +261,10 @@ if ('onhashchange' in window) { <span id="L199" class="LineNr"> 199 </span> 75/jump-if-not-equal $convert:check-for-indirect-mode/disp8 <span id="L200" class="LineNr"> 200 </span><span class="Constant">$convert:direct-mode</span>: <span id="L201" class="Folded"> 201 </span><span class="Folded">+-- 46 lines: #? # dump word-slice -----------------------------------------------------------------------------------------------------------------------</span> -<span id="L247" class="LineNr"> 247 </span> <span class="subxComment"># emit-direct-mode(word-slice, out)</span> +<span id="L247" class="LineNr"> 247 </span> <span class="subxComment"># emit-direct-mode(out, word-slice)</span> <span id="L248" class="LineNr"> 248 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L249" class="LineNr"> 249 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> -<span id="L250" class="LineNr"> 250 </span> 52/push-edx +<span id="L249" class="LineNr"> 249 </span> 52/push-edx +<span id="L250" class="LineNr"> 250 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> <span id="L251" class="LineNr"> 251 </span> <span class="subxS2Comment"># . . call</span> <span id="L252" class="LineNr"> 252 </span> e8/call <a href='sigils.subx.html#L1275'>emit-direct-mode</a>/disp32 <span id="L253" class="LineNr"> 253 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1114,14 +1114,14 @@ 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="subxFunction">emit-direct-mode</span>: <span class="subxComment"># word-slice : (address slice), out : (address buffered-file)</span> +<span id="L1275" class="LineNr">1275 </span><span class="subxFunction">emit-direct-mode</span>: <span class="subxComment"># out : (address buffered-file), word-slice : (address slice)</span> <span id="L1276" class="LineNr">1276 </span> <span class="subxS1Comment"># . prolog</span> <span id="L1277" class="LineNr">1277 </span> 55/push-ebp <span id="L1278" class="LineNr">1278 </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="L1279" class="LineNr">1279 </span> <span class="subxS1Comment"># . save registers</span> <span id="L1280" class="LineNr">1280 </span> 50/push-eax <span id="L1281" class="LineNr">1281 </span> <span class="subxComment"># var local-slice/eax : (address slice) = {word-slice->start, word-slice->end}</span> -<span id="L1282" class="LineNr">1282 </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="L1282" class="LineNr">1282 </span> 8b/copy 1/mod/*+disp8 5/rm32/ebp <span class="Normal"> . </span> <span class="Normal"> . </span> <span class="Normal"> . </span> 0/r32/eax 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># copy *(ebp+12) to eax</span> <span id="L1283" class="LineNr">1283 </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="L1284" class="LineNr">1284 </span> ff 6/subop/push 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"># push *eax</span> <span id="L1285" class="LineNr">1285 </span> 89/copy 3/mod/direct 0/rm32/eax <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 eax</span> @@ -1151,7 +1151,7 @@ if ('onhashchange' in window) { <span id="L1309" class="LineNr">1309 </span> <span class="subxComment"># write-buffered(out, "3/mod/direct ")</span> <span id="L1310" class="LineNr">1310 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1311" class="LineNr">1311 </span> 68/push <span class="Constant">"3/mod/direct "</span>/imm32 -<span id="L1312" class="LineNr">1312 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> +<span id="L1312" class="LineNr">1312 </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="L1313" class="LineNr">1313 </span> <span class="subxS2Comment"># . . call</span> <span id="L1314" class="LineNr">1314 </span> e8/call <a href='../065write-buffered.subx.html#L8'>write-buffered</a>/disp32 <span id="L1315" class="LineNr">1315 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1159,7 +1159,7 @@ if ('onhashchange' in window) { <span id="L1317" class="LineNr">1317 </span> <span class="subxComment"># print-int32-buffered(out, *eax)</span> <span id="L1318" class="LineNr">1318 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1319" class="LineNr">1319 </span> ff 6/subop/push 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"># push *eax</span> -<span id="L1320" class="LineNr">1320 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> +<span id="L1320" class="LineNr">1320 </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="L1321" class="LineNr">1321 </span> <span class="subxS2Comment"># . . call</span> <span id="L1322" class="LineNr">1322 </span> e8/call <a href='../066print-int.subx.html#L267'>print-int32-buffered</a>/disp32 <span id="L1323" class="LineNr">1323 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1167,7 +1167,7 @@ if ('onhashchange' in window) { <span id="L1325" class="LineNr">1325 </span> <span class="subxComment"># write-buffered(out, "/rm32")</span> <span id="L1326" class="LineNr">1326 </span> <span class="subxS2Comment"># . . push args</span> <span id="L1327" class="LineNr">1327 </span> 68/push <span class="Constant">"/rm32"</span>/imm32 -<span id="L1328" class="LineNr">1328 </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> 0xc/disp8 <span class="Normal"> . </span> <span class="subxComment"># push *(ebp+12)</span> +<span id="L1328" class="LineNr">1328 </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="L1329" class="LineNr">1329 </span> <span class="subxS2Comment"># . . call</span> <span id="L1330" class="LineNr">1330 </span> e8/call <a href='../065write-buffered.subx.html#L8'>write-buffered</a>/disp32 <span id="L1331" class="LineNr">1331 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1212,10 +1212,10 @@ if ('onhashchange' in window) { <span id="L1370" class="LineNr">1370 </span> 51/push-ecx <span id="L1371" class="LineNr">1371 </span> 50/push-eax <span id="L1372" class="LineNr">1372 </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="L1373" class="LineNr">1373 </span> <span class="subxComment"># emit-direct-mode(str, _test-output-buffered-file)</span> +<span id="L1373" class="LineNr">1373 </span> <span class="subxComment"># emit-direct-mode(_test-output-buffered-file, str)</span> <span id="L1374" class="LineNr">1374 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L1375" class="LineNr">1375 </span> 68/push <a href='../064write-byte.subx.html#L332'>_test-output-buffered-file</a>/imm32 -<span id="L1376" class="LineNr">1376 </span> 51/push-ecx +<span id="L1375" class="LineNr">1375 </span> 51/push-ecx +<span id="L1376" class="LineNr">1376 </span> 68/push <a href='../064write-byte.subx.html#L332'>_test-output-buffered-file</a>/imm32 <span id="L1377" class="LineNr">1377 </span> <span class="subxS2Comment"># . . call</span> <span id="L1378" class="LineNr">1378 </span> e8/call <a href='sigils.subx.html#L1275'>emit-direct-mode</a>/disp32 <span id="L1379" class="LineNr">1379 </span> <span class="subxS2Comment"># . . discard args</span> @@ -1272,10 +1272,10 @@ if ('onhashchange' in window) { <span id="L1455" class="LineNr">1455 </span> 51/push-ecx <span id="L1456" class="LineNr">1456 </span> 50/push-eax <span id="L1457" class="LineNr">1457 </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="L1458" class="LineNr">1458 </span> <span class="subxComment"># emit-direct-mode(str/ecx, _test-output-buffered-file)</span> +<span id="L1458" class="LineNr">1458 </span> <span class="subxComment"># emit-direct-mode(_test-output-buffered-file, str/ecx)</span> <span id="L1459" class="LineNr">1459 </span> <span class="subxS2Comment"># . . push args</span> -<span id="L1460" class="LineNr">1460 </span> 68/push <a href='../064write-byte.subx.html#L332'>_test-output-buffered-file</a>/imm32 -<span id="L1461" class="LineNr">1461 </span> 51/push-ecx +<span id="L1460" class="LineNr">1460 </span> 51/push-ecx +<span id="L1461" class="LineNr">1461 </span> 68/push <a href='../064write-byte.subx.html#L332'>_test-output-buffered-file</a>/imm32 <span id="L1462" class="LineNr">1462 </span> <span class="subxS2Comment"># . . call</span> <span id="L1463" class="LineNr">1463 </span> e8/call <a href='sigils.subx.html#L1275'>emit-direct-mode</a>/disp32 <span id="L1464" class="LineNr">1464 </span> <span class="subxS2Comment"># . . discard args</span> |