From 8afcd437c0b2b02c255d83d87e63a88b240d27a1 Mon Sep 17 00:00:00 2001 From: kitty Date: Tue, 24 Feb 2026 21:22:25 +1100 Subject: wtf moving the stack after the user memory has entirely fixed the problem i dont understand --- jefs.fs | 13 +++---------- jefs.s | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/jefs.fs b/jefs.fs index e056cf7..cd605c1 100644 --- a/jefs.fs +++ b/jefs.fs @@ -154,23 +154,16 @@ variable hld : .qword (.qword) say space ; : ? @ . ; -: .s sp 8 + ( skip sp itself ) begin dup s0 @ > while dup @ .qword 8 + repeat drop cr ; +: .s sp 8 + ( skip sp itself ) begin dup s0 @ >= while dup @ .qword 8 + repeat drop cr ; : bytes-allocated hend @ h0 @ - ; : bytes-used here @ h0 @ - ; : bytes-free bytes-allocated bytes-used - ; -\ there is some issue with ." that causes a segfault. strange -\ it seems to happen if multiple strings appear. -\ purrhaps something isn't being reset?? -\ it only seems to happen if the called word is a builtin or a number????? -\ : .free bytes-free u. ." of " bytes-allocated u. ." bytes free (used " bytes-used (.) say ." )" cr ; \ segfaults +: .free bytes-free u. ." of " bytes-allocated u. ." bytes free (used " bytes-used (.) say ." )" cr ; : >nfa ( lfa -- nfa ) 9 + ; : >ffa ( lfa -- ffa ) 8 + ; : (words) ( lfa -- ) >nfa dup w@ swap 2 + swap say 2 spaces ; : words latest @ begin ?dup 0<> while dup (words) @ repeat cr ; -\ .free bye -\ : t s" eue eu eo o eu" ; \ s" eue " [ HEREDUMP ] ; - -\ words +.free bye diff --git a/jefs.s b/jefs.s index f3900f8..f5032a7 100644 --- a/jefs.s +++ b/jefs.s @@ -12,12 +12,12 @@ %macro pspop 1 mov %1, qword [r14] lea r14, [r14+8] - cmp r14, wstack - jle %%ok - mov qword [error], 1 - mov r8, qword [handler] - call r8 - %%ok: + ; cmp r14, wstack + ; jle %%ok + ; mov qword [error], 1 + ; mov r8, qword [handler] + ; call r8 + ; %%ok: %endmacro ;;; dictionary macros {{{ @@ -70,12 +70,13 @@ ;; }}} section .bss exec -wstack_b: resq 2047 -wstack: resq 2 umem: resb 0x9c400 umem_e: +wstack_b: resq 2047 +wstack: + section .text global _start _start: @@ -1121,7 +1122,7 @@ defvar "#tib", num_tib, 0, initlen defvar ">in", to_in, 0, 0 defvar "state", state, 0, interpreting defvar "here", here, 0, umem -defvar "s0", s0, 0, wstack +defvar "s0", s0, 0, wstack + 16 defvar "h0", h0, 0, umem ; beginning of user memory area defvar "hend", hend, 0, umem_e ; ending of user memory area defvar "base", base, 0, 10 -- cgit v1.2.3