From e2b136889925cfbcd07946e85381ae62a1f9ce07 Mon Sep 17 00:00:00 2001 From: IgorCielniak Date: Thu, 25 Dec 2025 12:20:11 +0100 Subject: [PATCH] added neg and bitnot to the stdlib and made a fib.sl example --- fib.sl | 16 ++++++++++++++++ stdlib/stdlib.sl | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 fib.sl diff --git a/fib.sl b/fib.sl new file mode 100644 index 0000000..54760f6 --- /dev/null +++ b/fib.sl @@ -0,0 +1,16 @@ +import stdlib/stdlib.sl +import stdlib/io.sl + +: main + 1 1 2dup 2dup puti cr puti cr + + + dup puti cr + rot + 22 dup >r for + 2dup + dup puti cr + rot + next + "-------" puts + r> 3 + puti + " numbers printed from the fibonaci sequence" puts +; diff --git a/stdlib/stdlib.sl b/stdlib/stdlib.sl index aea5c84..fe3ca5e 100644 --- a/stdlib/stdlib.sl +++ b/stdlib/stdlib.sl @@ -413,3 +413,19 @@ mov [r12], rax ; push value } ; + +# : neg ( x -- -x ) +:asm neg { + mov rax, [r12] ; get value + neg rax ; arithmetic negation + mov [r12], rax ; store result +} +; + +# : bitnot ( 0|1 -- 1|0 ) +:asm bitnot { + mov rax, [r12] ; get value + xor rax, 1 ; flip lowest bit + mov [r12], rax ; store result +} +;