diff options
Diffstat (limited to 'evoke.e')
| -rw-r--r-- | evoke.e | 52 |
1 files changed, 5 insertions, 47 deletions
diff --git a/evoke.e b/evoke.e index 1d545b1..fa9ccb0 100644 --- a/evoke.e +++ b/evoke.e @@ -1,57 +1,15 @@ ~ (cat labels.e elf.e transform.e execution.e \ -~ echo 131072 read-to-buffer; \ +~ echo 262144 read-to-buffer; \ ~ cat core.e core-plus.e linux.e output.e \ ~ amd64.e execution-support.e log-load.e; \ -~ echo pyrzqxgl; \ +~ echo pyrzqxgl 262144 read-to-buffer; \ +~ cat core.e; \ +~ echo 0 sys-exit pyrzqxgl; \ ~ cat evoke.e) \ ~ | ./quine > evoke && chmod 755 evoke && ./evoke -s" source-to-precompile" variable - -1024 read-to-buffer -~ We begin by outputting the actual docol routine, the one that codewords -~ should point to. Note that this is before we've done any word header. -here @ -dup L!' docol-codeword-value -:rsi pack-pushcontrol -8 :rax add-reg64-imm8 -:rax :rsi mov-reg64-reg64 -pack-next -8 packalign -here ! - -~ We can't use colon to create docol, not even the part that's a word, -~ because colon tries to dynamically invoke docol to fill in the codeword. -s" docol" create -here @ -dup 8 + pack64 -L@' docol-codeword-value :rax mov-reg64-imm64 -:rax push-reg64 -pack-next -8 packalign -here ! - -~ Now that we have docol, colon will work and we can define exit the normal -~ way. -: exit - [ here @ - :rsi pack-popcontrol - here ! ] ;asm - -~ Now that we have exit, semicolon will also work and we can define -~ non-assembly words. However, it will be hard to make them do much until we -~ have lit as well. -: lit - [ here @ - lods64 - :rax push-reg64 - here ! ] ;asm - -42 sys-exit - -pyrzqxgl -~ 0 sys-exit s" source-to-copy-to-log" variable +s" source-to-precompile" variable ~ (output memory start, current output point ~ -- output memory start, current output point) |