simple implementation of alloc and free testes with structs
This commit is contained in:
36
mem.sl
Normal file
36
mem.sl
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import stdlib/stdlib.sl
|
||||||
|
import stdlib/io.sl
|
||||||
|
|
||||||
|
: alloc
|
||||||
|
0 # addr hint (NULL)
|
||||||
|
swap # size
|
||||||
|
3 # prot (PROT_READ | PROT_WRITE)
|
||||||
|
34 # flags (MAP_PRIVATE | MAP_ANON)
|
||||||
|
-1 # fd
|
||||||
|
0 # offset
|
||||||
|
mmap
|
||||||
|
;
|
||||||
|
|
||||||
|
: free
|
||||||
|
munmap drop
|
||||||
|
;
|
||||||
|
|
||||||
|
: test-mem-alloc
|
||||||
|
4096 alloc dup 1337 swap ! # allocate 4096 bytes, store 1337 at start
|
||||||
|
dup @ puti cr # print value at start
|
||||||
|
4096 free # free the memory
|
||||||
|
;
|
||||||
|
|
||||||
|
struct: Point
|
||||||
|
field x 8
|
||||||
|
field y 8
|
||||||
|
;struct
|
||||||
|
|
||||||
|
: main
|
||||||
|
32 alloc # allocate 32 bytes (enough for a Point struct)
|
||||||
|
dup 111 swap Point.x!
|
||||||
|
dup 222 swap Point.y!
|
||||||
|
dup Point.x@ puti cr
|
||||||
|
Point.y@ puti cr
|
||||||
|
32 free # free the memory
|
||||||
|
;
|
||||||
Reference in New Issue
Block a user