diff options
| author | Irene Knapp <ireneista@irenes.space> | 2026-05-16 00:43:24 -0700 |
|---|---|---|
| committer | Irene Knapp <ireneista@irenes.space> | 2026-05-16 00:43:24 -0700 |
| commit | 9922f43d213bb2f710f90cb5165a7580ef0326cd (patch) | |
| tree | 8efe744025fb1673fa506293f385e96f12d7fb8d /execution.e | |
| parent | 09ae826c2f99b7e21606e01f577b934c1d669bdc (diff) | |
it's much closer, most of the labels work correctly now
Force-Push: yes Change-Id: I45662e60c0035758a2cd57d971031eb0562eccb7
Diffstat (limited to 'execution.e')
| -rw-r--r-- | execution.e | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/execution.e b/execution.e index 48761de..8410678 100644 --- a/execution.e +++ b/execution.e @@ -235,12 +235,12 @@ ~ * rbp points to the top of the control stack. ~ ~ (source register, base address -- new base address) -: pushcontrol +: pack-pushcontrol swap :rbp -8 :rbp lea-reg64-disp8-reg64 swap :rbp 0 mov-disp8-reg64-reg64 ; ~ (target register, base address -- new base address) -: popcontrol +: pack-popcontrol :rbp 0 3roll mov-reg64-disp8-reg64 :rbp 8 :rbp lea-reg64-disp8-reg64 ; @@ -480,6 +480,9 @@ 8 packalign current-offset L!' warm-start + ~ TODO this is tied to the specific example in evoke + over L@' happy-path swap - L@' origin + pack64 + ~ Before handing off to us, cold-start pushed a single value onto the ~ stack, a pointer to the beginning of the heap. Now, we load our entire ~ Forth implementation onto that heap, beginning with the minimal set of |