summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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