summaryrefslogtreecommitdiff
path: root/jefs.s
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-03-09 02:18:50 +1100
committerkitty <nepeta@canaglie.net>2026-03-09 02:18:50 +1100
commit10f306c2305bd71f547ee4e539f971142acbb1af (patch)
tree730eea9e59fccf6d346bb72590db9d1b0f839f6d /jefs.s
parente3ac597f1c6034ee461c77d9589ba67a1524318d (diff)
s=
Diffstat (limited to 'jefs.s')
-rw-r--r--jefs.s27
1 files changed, 26 insertions, 1 deletions
diff --git a/jefs.s b/jefs.s
index 30c6aa0..25f932b 100644
--- a/jefs.s
+++ b/jefs.s
@@ -388,7 +388,7 @@ defword "find", find, 0
add rsi, 2
mov rdi, r11
mov rcx, r10
- repz cmpsb
+ repe cmpsb
jnz .no
sub r13, 9
pspush r13
@@ -969,6 +969,31 @@ defword "0>=", zero_greatereq, 0
neg r11
pspush r11
ret
+
+; different from COMPARE, is a normal strncpy, no lt/ge/prefix match
+defword "s=", compare, 0 ; ( a1 u1 a2 u2 -- ? )
+ pspop r11 ; u2
+ pspop r12 ; a2
+ pspop r13 ; u1
+ pspop r15 ; a1
+
+ cmp r11, r13
+ jne .no
+
+ mov rsi, r15
+ mov rdi, r12
+ mov rcx, r11
+ repe cmpsb
+ jne .no
+
+ mov r11, true
+ pspush r11
+ ret
+
+.no:
+ mov r11, false
+ pspush r11
+ ret
; }}}
defword "[", lbrac, immediate_mask