This commit is contained in:
Kartik Agaram 2018-12-28 02:07:11 -08:00
parent efc3c64b0d
commit 044b413021
15 changed files with 56 additions and 56 deletions

View File

@ -196,7 +196,7 @@ if ('onhashchange' in window) {
<span id="L131" class="LineNr">131 </span> <span class="subxComment"># containing function returns we'll need a new exit descriptor.</span>
<span id="L132" class="LineNr">132 </span> <span class="subxComment"># var ed/EAX : (address exit-descriptor)</span>
<span id="L133" class="LineNr">133 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L134" class="LineNr">134 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L134" class="LineNr">134 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L135" class="LineNr">135 </span> <span class="subxComment"># Size the exit-descriptor precisely for the next call below, to _test-stop-1.</span>
<span id="L136" class="LineNr">136 </span> <span class="subxComment"># tailor-exit-descriptor(ed, 4)</span>
<span id="L137" class="LineNr">137 </span> <span class="subxS2Comment"># . . push args</span>

View File

@ -72,7 +72,7 @@ if ('onhashchange' in window) {
<span id="L9" class="LineNr"> 9 </span> <span class="subxComment"># manual test</span>
<span id="L10" class="LineNr"> 10 </span><span class="CommentedCode">#? # . var ed/EAX : exit-descriptor</span>
<span id="L11" class="LineNr"> 11 </span><span class="CommentedCode">#? 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP</span>
<span id="L12" class="LineNr"> 12 </span><span class="CommentedCode">#? 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX</span>
<span id="L12" class="LineNr"> 12 </span><span class="CommentedCode">#? 89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX</span>
<span id="L13" class="LineNr"> 13 </span><span class="CommentedCode">#? # . configure ed to really exit()</span>
<span id="L14" class="LineNr"> 14 </span><span class="CommentedCode">#? # . . ed-&gt;target = 0</span>
<span id="L15" class="LineNr"> 15 </span><span class="CommentedCode">#? c7/copy 0/mod/direct 0/rm32/EAX . . . . . 0/imm32 # copy to *EAX</span>

View File

@ -24,10 +24,10 @@ body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color:
.subxS1Comment { color:#2d8cff; }
.CommentedCode { color: #6c6c6c; }
.Constant { color:#00a0a0; }
.subxFunction { color: #ff8700; }
.subxFunction { color: #af5f00; text-decoration: underline; }
.subxMinorFunction { color: #875f5f; }
.subxTest { color: #5f8700; }
.SpecialChar { color: #ff0000; }
.SpecialChar { color: #d70000; }
.subxH1Comment { color:#00ffff; }
-->
</style>
@ -126,7 +126,7 @@ if ('onhashchange' in window) {
<span id="L60" class="LineNr"> 60 </span> <span class="subxH1Comment"># - otherwise read a program from stdin and emit its translation to stdout</span>
<span id="L61" class="LineNr"> 61 </span> <span class="subxComment"># var ed/EAX : exit-descriptor</span>
<span id="L62" class="LineNr"> 62 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L63" class="LineNr"> 63 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L63" class="LineNr"> 63 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L64" class="LineNr"> 64 </span> <span class="subxComment"># configure ed to really exit()</span>
<span id="L65" class="LineNr"> 65 </span> <span class="subxS1Comment"># . ed-&gt;target = 0</span>
<span id="L66" class="LineNr"> 66 </span> c7/copy 0/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 0/imm32 <span class="subxComment"># copy to *EAX</span>
@ -168,7 +168,7 @@ if ('onhashchange' in window) {
<span id="L102" class="LineNr">102 </span> <span class="subxComment"># Add 12 bytes for 'read', 'write' and 'length' fields, for a total of 19 bytes, or 0x13 in hex.</span>
<span id="L103" class="LineNr">103 </span> <span class="subxComment"># The stack pointer is no longer aligned, so dump_stack() can be misleading past this point.</span>
<span id="L104" class="LineNr">104 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 0x13/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L105" class="LineNr">105 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L105" class="LineNr">105 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L106" class="LineNr">106 </span> <span class="subxComment"># initialize the stream</span>
<span id="L107" class="LineNr">107 </span> <span class="subxS1Comment"># . num-&gt;length = 7</span>
<span id="L108" class="LineNr">108 </span> c7/copy 1/mod/*+disp8 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/disp8 7/imm32 <span class="subxComment"># copy to *(ECX+8)</span>
@ -415,7 +415,7 @@ if ('onhashchange' in window) {
<span id="L349" class="LineNr">349 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'get-num' below</span>
<span id="L350" class="LineNr">350 </span> <span class="subxS1Comment"># . var ed/EAX : exit-descriptor</span>
<span id="L351" class="LineNr">351 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L352" class="LineNr">352 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L352" class="LineNr">352 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L353" class="LineNr">353 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 16)</span>
<span id="L354" class="LineNr">354 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L355" class="LineNr">355 </span> 68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -506,7 +506,7 @@ if ('onhashchange' in window) {
<span id="L440" class="LineNr">440 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'get-num' below</span>
<span id="L441" class="LineNr">441 </span> <span class="subxS1Comment"># . var ed/EAX : (address exit-descriptor)</span>
<span id="L442" class="LineNr">442 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L443" class="LineNr">443 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L443" class="LineNr">443 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L444" class="LineNr">444 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 16)</span>
<span id="L445" class="LineNr">445 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L446" class="LineNr">446 </span> 68/push 0x10/imm32/nbytes-of-args-for-get-num

View File

@ -24,10 +24,10 @@ body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color:
.subxS1Comment { color:#2d8cff; }
.CommentedCode { color: #6c6c6c; }
.Constant { color:#00a0a0; }
.subxFunction { color: #ff8700; }
.subxFunction { color: #af5f00; text-decoration: underline; }
.subxMinorFunction { color: #875f5f; }
.subxTest { color: #5f8700; }
.SpecialChar { color: #ff0000; }
.SpecialChar { color: #d70000; }
.subxH1Comment { color:#00ffff; }
-->
</style>
@ -126,7 +126,7 @@ if ('onhashchange' in window) {
<span id="L60" class="LineNr"> 60 </span> <span class="subxH1Comment"># - otherwise read a program from stdin and emit its translation to stdout</span>
<span id="L61" class="LineNr"> 61 </span> <span class="subxComment"># var ed/EAX : exit-descriptor</span>
<span id="L62" class="LineNr"> 62 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L63" class="LineNr"> 63 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L63" class="LineNr"> 63 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L64" class="LineNr"> 64 </span> <span class="subxComment"># configure ed to really exit()</span>
<span id="L65" class="LineNr"> 65 </span> <span class="subxS1Comment"># . ed-&gt;target = 0</span>
<span id="L66" class="LineNr"> 66 </span> c7/copy 0/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 0/imm32 <span class="subxComment"># copy to *EAX</span>
@ -168,7 +168,7 @@ if ('onhashchange' in window) {
<span id="L102" class="LineNr">102 </span> <span class="subxComment"># Add 12 bytes for 'read', 'write' and 'length' fields, for a total of 19 bytes, or 0x13 in hex.</span>
<span id="L103" class="LineNr">103 </span> <span class="subxComment"># The stack pointer is no longer aligned, so dump_stack() can be misleading past this point.</span>
<span id="L104" class="LineNr">104 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 0x13/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L105" class="LineNr">105 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L105" class="LineNr">105 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L106" class="LineNr">106 </span> <span class="subxComment"># initialize the stream</span>
<span id="L107" class="LineNr">107 </span> <span class="subxS1Comment"># . num-&gt;length = 7</span>
<span id="L108" class="LineNr">108 </span> c7/copy 1/mod/*+disp8 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/disp8 7/imm32 <span class="subxComment"># copy to *(ECX+8)</span>
@ -432,7 +432,7 @@ if ('onhashchange' in window) {
<span id="L366" class="LineNr">366 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'get-num' below</span>
<span id="L367" class="LineNr">367 </span> <span class="subxS1Comment"># . var ed/EAX : exit-descriptor</span>
<span id="L368" class="LineNr">368 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L369" class="LineNr">369 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L369" class="LineNr">369 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L370" class="LineNr">370 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 16)</span>
<span id="L371" class="LineNr">371 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L372" class="LineNr">372 </span> 68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -523,7 +523,7 @@ if ('onhashchange' in window) {
<span id="L457" class="LineNr">457 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'get-num' below</span>
<span id="L458" class="LineNr">458 </span> <span class="subxS1Comment"># . var ed/EAX : (address exit-descriptor)</span>
<span id="L459" class="LineNr">459 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L460" class="LineNr">460 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L460" class="LineNr">460 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L461" class="LineNr">461 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 16)</span>
<span id="L462" class="LineNr">462 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L463" class="LineNr">463 </span> 68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -608,7 +608,7 @@ if ('onhashchange' in window) {
<span id="L542" class="LineNr">542 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'get-num' below</span>
<span id="L543" class="LineNr">543 </span> <span class="subxS1Comment"># . var ed/EAX : (address exit-descriptor)</span>
<span id="L544" class="LineNr">544 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L545" class="LineNr">545 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L545" class="LineNr">545 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L546" class="LineNr">546 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 16)</span>
<span id="L547" class="LineNr">547 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L548" class="LineNr">548 </span> 68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -699,7 +699,7 @@ if ('onhashchange' in window) {
<span id="L633" class="LineNr">633 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'get-num' below</span>
<span id="L634" class="LineNr">634 </span> <span class="subxS1Comment"># . var ed/EAX : (address exit-descriptor)</span>
<span id="L635" class="LineNr">635 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L636" class="LineNr">636 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L636" class="LineNr">636 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L637" class="LineNr">637 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 16)</span>
<span id="L638" class="LineNr">638 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L639" class="LineNr">639 </span> 68/push 0x10/imm32/nbytes-of-args-for-get-num

View File

@ -24,9 +24,9 @@ body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color:
.subxS1Comment { color:#2d8cff; }
.CommentedCode { color: #6c6c6c; }
.Constant { color:#00a0a0; }
.subxFunction { color: #ff8700; }
.subxFunction { color: #af5f00; text-decoration: underline; }
.subxTest { color: #5f8700; }
.SpecialChar { color: #ff0000; }
.SpecialChar { color: #d70000; }
.subxH1Comment { color:#00ffff; }
-->
</style>

View File

@ -24,10 +24,10 @@ body { font-size:12pt; font-family: monospace; color: #aaaaaa; background-color:
.subxS1Comment { color:#2d8cff; }
.CommentedCode { color: #6c6c6c; }
.Constant { color:#00a0a0; }
.subxFunction { color: #ff8700; }
.subxFunction { color: #af5f00; text-decoration: underline; }
.subxMinorFunction { color: #875f5f; }
.subxTest { color: #5f8700; }
.SpecialChar { color: #ff0000; }
.SpecialChar { color: #d70000; }
.subxH1Comment { color:#00ffff; }
-->
</style>
@ -120,7 +120,7 @@ if ('onhashchange' in window) {
<span id="L54" class="LineNr"> 54 </span> <span class="subxH1Comment"># - otherwise convert stdin</span>
<span id="L55" class="LineNr"> 55 </span> <span class="subxComment"># var ed/EAX : exit-descriptor</span>
<span id="L56" class="LineNr"> 56 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L57" class="LineNr"> 57 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 0/r32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L57" class="LineNr"> 57 </span> 89/copy 3/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to EAX</span>
<span id="L58" class="LineNr"> 58 </span> <span class="subxComment"># configure ed to really exit()</span>
<span id="L59" class="LineNr"> 59 </span> <span class="subxS1Comment"># . ed-&gt;target = 0</span>
<span id="L60" class="LineNr"> 60 </span> c7/copy 0/mod/direct 0/rm32/EAX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 0/imm32 <span class="subxComment"># copy to *EAX</span>
@ -317,7 +317,7 @@ if ('onhashchange' in window) {
<span id="L251" class="LineNr"> 251 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below</span>
<span id="L252" class="LineNr"> 252 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L253" class="LineNr"> 253 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L254" class="LineNr"> 254 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L254" class="LineNr"> 254 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L255" class="LineNr"> 255 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L256" class="LineNr"> 256 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L257" class="LineNr"> 257 </span> 68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
@ -411,7 +411,7 @@ if ('onhashchange' in window) {
<span id="L345" class="LineNr"> 345 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below</span>
<span id="L346" class="LineNr"> 346 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L347" class="LineNr"> 347 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L348" class="LineNr"> 348 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L348" class="LineNr"> 348 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L349" class="LineNr"> 349 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L350" class="LineNr"> 350 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L351" class="LineNr"> 351 </span> 68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
@ -513,7 +513,7 @@ if ('onhashchange' in window) {
<span id="L447" class="LineNr"> 447 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below</span>
<span id="L448" class="LineNr"> 448 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L449" class="LineNr"> 449 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L450" class="LineNr"> 450 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L450" class="LineNr"> 450 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L451" class="LineNr"> 451 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L452" class="LineNr"> 452 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L453" class="LineNr"> 453 </span> 68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
@ -686,7 +686,7 @@ if ('onhashchange' in window) {
<span id="L620" class="LineNr"> 620 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L621" class="LineNr"> 621 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L622" class="LineNr"> 622 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L623" class="LineNr"> 623 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L623" class="LineNr"> 623 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L624" class="LineNr"> 624 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L625" class="LineNr"> 625 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L626" class="LineNr"> 626 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -788,7 +788,7 @@ if ('onhashchange' in window) {
<span id="L722" class="LineNr"> 722 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L723" class="LineNr"> 723 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L724" class="LineNr"> 724 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L725" class="LineNr"> 725 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L725" class="LineNr"> 725 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L726" class="LineNr"> 726 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L727" class="LineNr"> 727 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L728" class="LineNr"> 728 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -906,7 +906,7 @@ if ('onhashchange' in window) {
<span id="L840" class="LineNr"> 840 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L841" class="LineNr"> 841 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L842" class="LineNr"> 842 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L843" class="LineNr"> 843 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L843" class="LineNr"> 843 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L844" class="LineNr"> 844 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L845" class="LineNr"> 845 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L846" class="LineNr"> 846 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1024,7 +1024,7 @@ if ('onhashchange' in window) {
<span id="L958" class="LineNr"> 958 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L959" class="LineNr"> 959 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L960" class="LineNr"> 960 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L961" class="LineNr"> 961 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L961" class="LineNr"> 961 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L962" class="LineNr"> 962 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L963" class="LineNr"> 963 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L964" class="LineNr"> 964 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1142,7 +1142,7 @@ if ('onhashchange' in window) {
<span id="L1076" class="LineNr">1076 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L1077" class="LineNr">1077 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L1078" class="LineNr">1078 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L1079" class="LineNr">1079 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1079" class="LineNr">1079 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1080" class="LineNr">1080 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L1081" class="LineNr">1081 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L1082" class="LineNr">1082 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1244,7 +1244,7 @@ if ('onhashchange' in window) {
<span id="L1178" class="LineNr">1178 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L1179" class="LineNr">1179 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L1180" class="LineNr">1180 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L1181" class="LineNr">1181 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1181" class="LineNr">1181 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1182" class="LineNr">1182 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L1183" class="LineNr">1183 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L1184" class="LineNr">1184 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1338,7 +1338,7 @@ if ('onhashchange' in window) {
<span id="L1272" class="LineNr">1272 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L1273" class="LineNr">1273 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L1274" class="LineNr">1274 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L1275" class="LineNr">1275 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1275" class="LineNr">1275 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1276" class="LineNr">1276 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L1277" class="LineNr">1277 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L1278" class="LineNr">1278 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1440,7 +1440,7 @@ if ('onhashchange' in window) {
<span id="L1374" class="LineNr">1374 </span> <span class="subxComment"># initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below</span>
<span id="L1375" class="LineNr">1375 </span> <span class="subxS1Comment"># . var ed/ECX : exit-descriptor</span>
<span id="L1376" class="LineNr">1376 </span> 81 5/subop/subtract 3/mod/direct 4/rm32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 8/imm32 <span class="subxComment"># subtract from ESP</span>
<span id="L1377" class="LineNr">1377 </span> 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none <span class="CommentedCode"> . </span> 1/r32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1377" class="LineNr">1377 </span> 89/copy 3/mod/direct 1/rm32/ECX <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> 4/r32/ESP <span class="CommentedCode"> . </span> <span class="CommentedCode"> . </span> <span class="subxComment"># copy ESP to ECX</span>
<span id="L1378" class="LineNr">1378 </span> <span class="subxS1Comment"># . tailor-exit-descriptor(ed, 12)</span>
<span id="L1379" class="LineNr">1379 </span> <span class="subxS2Comment"># . . push args</span>
<span id="L1380" class="LineNr">1380 </span> 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte

View File

@ -131,7 +131,7 @@ test-stop-skips-returns-on-exit:
# containing function returns we'll need a new exit descriptor.
# var ed/EAX : (address exit-descriptor)
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# Size the exit-descriptor precisely for the next call below, to _test-stop-1.
# tailor-exit-descriptor(ed, 4)
# . . push args

View File

@ -9,7 +9,7 @@
# manual test
#? # . var ed/EAX : exit-descriptor
#? 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
#? 8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
#? 89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
#? # . configure ed to really exit()
#? # . . ed->target = 0
#? c7/copy 0/mod/direct 0/rm32/EAX . . . . . 0/imm32 # copy to *EAX

Binary file not shown.

View File

@ -60,7 +60,7 @@ $run-main:
# - otherwise read a program from stdin and emit its translation to stdout
# var ed/EAX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# configure ed to really exit()
# . ed->target = 0
c7/copy 0/mod/direct 0/rm32/EAX . . . . . 0/imm32 # copy to *EAX
@ -102,7 +102,7 @@ compile: # in : (address buffered-file), out : fd or (address stream), err : fd
# Add 12 bytes for 'read', 'write' and 'length' fields, for a total of 19 bytes, or 0x13 in hex.
# The stack pointer is no longer aligned, so dump_stack() can be misleading past this point.
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 0x13/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# initialize the stream
# . num->length = 7
c7/copy 1/mod/*+disp8 1/rm32/ECX . . . . 8/disp8 7/imm32 # copy to *(ECX+8)
@ -349,7 +349,7 @@ test-get-num-reads-single-digit:
# initialize exit-descriptor 'ed' for the call to 'get-num' below
# . var ed/EAX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# . tailor-exit-descriptor(ed, 16)
# . . push args
68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -440,7 +440,7 @@ test-get-num-aborts-on-non-digit-in-Look:
# initialize exit-descriptor 'ed' for the call to 'get-num' below
# . var ed/EAX : (address exit-descriptor)
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# . tailor-exit-descriptor(ed, 16)
# . . push args
68/push 0x10/imm32/nbytes-of-args-for-get-num

Binary file not shown.

View File

@ -60,7 +60,7 @@ $run-main:
# - otherwise read a program from stdin and emit its translation to stdout
# var ed/EAX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# configure ed to really exit()
# . ed->target = 0
c7/copy 0/mod/direct 0/rm32/EAX . . . . . 0/imm32 # copy to *EAX
@ -102,7 +102,7 @@ compile: # in : (address buffered-file), out : fd or (address stream), err : fd
# Add 12 bytes for 'read', 'write' and 'length' fields, for a total of 19 bytes, or 0x13 in hex.
# The stack pointer is no longer aligned, so dump_stack() can be misleading past this point.
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 0x13/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# initialize the stream
# . num->length = 7
c7/copy 1/mod/*+disp8 1/rm32/ECX . . . . 8/disp8 7/imm32 # copy to *(ECX+8)
@ -366,7 +366,7 @@ test-get-num-reads-single-digit:
# initialize exit-descriptor 'ed' for the call to 'get-num' below
# . var ed/EAX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# . tailor-exit-descriptor(ed, 16)
# . . push args
68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -457,7 +457,7 @@ test-get-num-aborts-on-non-digit-in-Look:
# initialize exit-descriptor 'ed' for the call to 'get-num' below
# . var ed/EAX : (address exit-descriptor)
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# . tailor-exit-descriptor(ed, 16)
# . . push args
68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -542,7 +542,7 @@ test-get-num-reads-multiple-digits:
# initialize exit-descriptor 'ed' for the call to 'get-num' below
# . var ed/EAX : (address exit-descriptor)
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# . tailor-exit-descriptor(ed, 16)
# . . push args
68/push 0x10/imm32/nbytes-of-args-for-get-num
@ -633,7 +633,7 @@ test-get-num-reads-multiple-digits-followed-by-nondigit:
# initialize exit-descriptor 'ed' for the call to 'get-num' below
# . var ed/EAX : (address exit-descriptor)
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# . tailor-exit-descriptor(ed, 16)
# . . push args
68/push 0x10/imm32/nbytes-of-args-for-get-num

Binary file not shown.

Binary file not shown.

View File

@ -54,7 +54,7 @@ $run-main:
# - otherwise convert stdin
# var ed/EAX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 0/r32/EAX . . # copy ESP to EAX
89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . . # copy ESP to EAX
# configure ed to really exit()
# . ed->target = 0
c7/copy 0/mod/direct 0/rm32/EAX . . . . . 0/imm32 # copy to *EAX
@ -251,7 +251,7 @@ test-convert-next-octet:
# initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
@ -345,7 +345,7 @@ test-convert-next-octet-handles-eof:
# initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
@ -447,7 +447,7 @@ test-convert-next-octet-aborts-on-single-hex-byte:
# initialize exit-descriptor 'ed' for the call to 'convert-next-octet' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
@ -620,7 +620,7 @@ test-scan-next-byte:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -722,7 +722,7 @@ test-scan-next-byte-skips-whitespace:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -840,7 +840,7 @@ test-scan-next-byte-skips-comment:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -958,7 +958,7 @@ test-scan-next-byte-skips-comment-and-whitespace:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1076,7 +1076,7 @@ test-scan-next-byte-skips-whitespace-and-comment:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1178,7 +1178,7 @@ test-scan-next-byte-reads-final-byte:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1272,7 +1272,7 @@ test-scan-next-byte-handles-eof:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
@ -1374,7 +1374,7 @@ test-scan-next-byte-aborts-on-invalid-byte:
# initialize exit-descriptor 'ed' for the call to 'scan-next-byte' below
# . var ed/ECX : exit-descriptor
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # subtract from ESP
8d/copy-address 0/mod/indirect 4/rm32/sib 4/base/ESP 4/index/none . 1/r32/ECX . . # copy ESP to ECX
89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . . # copy ESP to ECX
# . tailor-exit-descriptor(ed, 12)
# . . push args
68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte