summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-02-14 13:37:52 +1100
committerkitty <nepeta@canaglie.net>2026-02-14 13:37:52 +1100
commitcbc149e32ca7e14ba025c61d28357f9640933dc0 (patch)
tree1206772b3f9dfb6047a15ba8e2d97ffd2d43940d
parent61bd086db6080e9c9c1c8230964fca69d1f201b2 (diff)
immediate, /mod, *
-rw-r--r--jefs.fs3
-rw-r--r--jefs.s20
2 files changed, 22 insertions, 1 deletions
diff --git a/jefs.fs b/jefs.fs
index 3e206fa..345d31a 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -1,3 +1,6 @@
+: / /mod swap drop ;
+: mod /mod drop ;
+
: syswrite ( u c-addr fd -- n ) 1 syscall3 ;
: say ( c-addr u -- ) swap 1 syswrite drop ;
TESTSTR say bye
diff --git a/jefs.s b/jefs.s
index b464077..71854b4 100644
--- a/jefs.s
+++ b/jefs.s
@@ -547,13 +547,22 @@ defword "-", minus, 0
pspush r11
ret
-defword "*", timess, 0
+defword "*", _times, 0
pspop r11
pspop r12
imul r11, r12
pspush r11
ret
+defword "/mod", divmod, 0
+ xor rdx, rdx
+ pspop r11
+ pspop rax
+ idiv r11
+ pspush rdx
+ pspush rax
+ ret
+
defword "[", lbrac, immediate_mask
mov qword [state], interpreting
ret
@@ -598,6 +607,15 @@ defword "(", bracket, immediate_mask
mov qword [to_in], r13
ret
+defword "immediate", immediate, 0
+ mov r12, [latest]
+ add r12, 8
+ mov r13b, [r12]
+ mov r15b, immediate_mask
+ or r13b, r15b
+ mov byte [r12], r13b
+ ret
+
; TEMPORARY HORRIBLE DEBUGGING BULLSHIT {{{
; debugging word; outputs raw bytes so needs to be piped through `x(x)d`
; terrible and awful