From bf407e7b05d5459866420b5c05c7338904540263 Mon Sep 17 00:00:00 2001 From: kitty Date: Sat, 28 Feb 2026 23:59:42 +1100 Subject: cmove> --- jefs.fs | 2 ++ jefs.s | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/jefs.fs b/jefs.fs index a1757ca..48a77b9 100644 --- a/jefs.fs +++ b/jefs.fs @@ -1,5 +1,6 @@ \ i think something is going on with the stack. i dunno \ things TODO: +\ read-line (will be slow) \ DO LOOP \ s\" \ add error handling to compiling words @@ -272,6 +273,7 @@ variable hld \ }}} \ USER INPUT {{{ +\ use cmove (not cmove>) for moving stray bytes left when refilling 8192 constant file-buffer-length make file-buffer file-buffer-length allot \ }}} diff --git a/jefs.s b/jefs.s index cc75976..0a45c58 100644 --- a/jefs.s +++ b/jefs.s @@ -221,6 +221,18 @@ defword "cmove,", _cmove_comma, 0 ; ( c-addr u -- ) add r12, r9 mov qword [here], r12 ret + +defword "cmove>", cmove_to, 0 ; ( a1 a2 u -- ) + std + pspop rcx + pspop rdi + add rdi, rcx + pspop rsi + add rsi, rcx + + rep movsb + cld + ret ; }}} ; note: this puts the _address it itself pushes_ on the stack -- cgit v1.2.3