diff options
| -rw-r--r-- | jefs.fs | 3 | ||||
| -rw-r--r-- | jefs.s | 20 |
2 files changed, 22 insertions, 1 deletions
@@ -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 @@ -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 |
