2026-01-08 13:15:27 +01:00
|
|
|
import stdlib.sl
|
|
|
|
|
|
2026-02-05 21:36:03 +01:00
|
|
|
#alloc [* | size] -> [* | addr]
|
2026-01-08 15:28:10 +01:00
|
|
|
word alloc
|
2026-01-08 13:15:27 +01:00
|
|
|
0 # addr hint (NULL)
|
|
|
|
|
swap # size
|
|
|
|
|
3 # prot (PROT_READ | PROT_WRITE)
|
|
|
|
|
34 # flags (MAP_PRIVATE | MAP_ANON)
|
|
|
|
|
-1 # fd
|
|
|
|
|
0 # offset
|
|
|
|
|
mmap
|
2026-03-09 14:04:45 +01:00
|
|
|
nip
|
2026-01-08 15:28:10 +01:00
|
|
|
end
|
2026-01-08 13:15:27 +01:00
|
|
|
|
2026-02-05 21:36:03 +01:00
|
|
|
#free [*, addr | size] -> [*]
|
2026-01-08 15:28:10 +01:00
|
|
|
word free
|
2026-01-08 13:15:27 +01:00
|
|
|
munmap drop
|
2026-01-11 19:26:39 +01:00
|
|
|
end
|
|
|
|
|
|
2026-02-05 21:36:03 +01:00
|
|
|
#memcpy [*, dst_addr, src_addr | len] -> [*, dst_addr | len]
|
|
|
|
|
word memcpy
|
2026-01-11 19:26:39 +01:00
|
|
|
dup
|
|
|
|
|
>r
|
|
|
|
|
swap
|
|
|
|
|
dup c@
|
|
|
|
|
3 pick swap
|
|
|
|
|
c!
|
|
|
|
|
swap
|
|
|
|
|
for
|
|
|
|
|
1 + dup
|
|
|
|
|
c@
|
|
|
|
|
swap
|
|
|
|
|
-rot
|
|
|
|
|
swap
|
|
|
|
|
1 +
|
|
|
|
|
dup
|
|
|
|
|
rot
|
|
|
|
|
c!
|
|
|
|
|
swap
|
|
|
|
|
end
|
2026-03-09 14:04:45 +01:00
|
|
|
drop
|
2026-01-11 19:26:39 +01:00
|
|
|
r> dup -rot - swap
|
2026-02-02 15:51:58 +01:00
|
|
|
end
|
|
|
|
|
|
2026-02-05 21:36:03 +01:00
|
|
|
#memset [*, value, len | addr] -> [*]
|
|
|
|
|
word memset
|
2026-02-02 15:51:58 +01:00
|
|
|
swap
|
|
|
|
|
0 swap for
|
|
|
|
|
-rot swap 2 pick + 2dup swap ! 1 + -rot swap
|
|
|
|
|
end
|
|
|
|
|
2drop drop
|
|
|
|
|
end
|
|
|
|
|
|
2026-02-05 21:36:03 +01:00
|
|
|
#memdump [*, len | addr] -> [* | addr]
|
|
|
|
|
word memdump
|
2026-02-02 15:51:58 +01:00
|
|
|
for
|
2026-02-10 11:31:39 +01:00
|
|
|
dup @ puti cr 8 +
|
2026-02-02 15:51:58 +01:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2026-03-18 15:27:01 +01:00
|
|
|
#memdump_bytes [*, len | addr] -> [* | addr]
|
|
|
|
|
word memdump_bytes
|
|
|
|
|
for
|
|
|
|
|
dup c@ puti cr 1 +
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2026-02-05 21:36:03 +01:00
|
|
|
#realloc [*, addr, old_len | new_len] -> [* | new_addr]
|
|
|
|
|
word realloc
|
2026-02-02 15:51:58 +01:00
|
|
|
2 pick swap alloc
|
|
|
|
|
rot rot swap
|
|
|
|
|
memcpy
|
|
|
|
|
swap -rot free
|
2026-02-05 21:36:03 +01:00
|
|
|
end
|