added a buffer of 64 bytes for some easily accesible persistent storage accesable via p@ and p!

This commit is contained in:
IgorCielniak
2025-12-26 15:50:37 +01:00
parent 7d6c1fb0d3
commit 357434991e
3 changed files with 38 additions and 0 deletions

View File

@@ -1,3 +1,30 @@
# Reserve 64 bytes in .bss
# persistent: resb 64
# : p@ ( offset -- n )
:asm p@ {
mov rax, [r12] ; offset
lea rbx, [rel persistent]
add rax, rbx ; address = persistent + offset
mov rax, [rax] ; load value
mov [r12], rax ; store on stack
ret
}
;
# : p! ( value offset -- )
:asm p! {
mov rbx, [r12] ; offset
add r12, 8
mov rax, [r12] ; value
lea rcx, [rel persistent]
add rcx, rbx ; address = persistent + offset
mov [rcx], rax ; store value
add r12, 8 ; pop value
ret
}
;
# : strlen ( addr -- len )
# for null terminated strings