From 9922f43d213bb2f710f90cb5165a7580ef0326cd Mon Sep 17 00:00:00 2001 From: Irene Knapp Date: Sat, 16 May 2026 00:43:24 -0700 Subject: it's much closer, most of the labels work correctly now Force-Push: yes Change-Id: I45662e60c0035758a2cd57d971031eb0562eccb7 --- execution.e | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'execution.e') 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 -- cgit 1.4.1