summary refs log tree commit diff
path: root/log-load.e
diff options
context:
space:
mode:
Diffstat (limited to 'log-load.e')
-rw-r--r--log-load.e27
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.