diff options
Diffstat (limited to 'log-load.e')
| -rw-r--r-- | log-load.e | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/log-load.e b/log-load.e index 2c82d9f..f386b26 100644 --- a/log-load.e +++ b/log-load.e @@ -249,11 +249,36 @@ ~ (log address, value, here) @ swap pack64 ~ (log address, updated here value) - 3roll log-load-here swap 3unroll + swap log-load-here swap 3unroll ~ (log address, updated here value, here) ! ; +~ This is the same as `;asm`, from interpret.e, except that it takes the +~ log's address as a parameter rather than hardcoding it, so that it can be +~ used in situations where the normal compilation process isn't yet available. +~ +~ Its two main responsibilities are to call `pack-next`, from +~ execution-support.e, and to overwrite the codeword. It also deals with +~ alignment. +~ (log address) +: log-load-semicolon-assembly + log-load-here @ + ~ (log address, output point) + + pack-next + 8 packalign + ~ (log address, output point) + + swap log-load-here swap 3unroll ! + ~ (log address) + + log-load-latest @ + ~ (log address, entry pointer) + entry-to-execution-token + dup 8 + swap ! ; + + ~ This is the same as "variable", from interpret.e, except that it takes the ~ log's address as a parameter rather than hardcoding it, so that it can be ~ used in situations where the normal compilation process isn't yet available. |