2025-12-06 16:30:58 +01:00
|
|
|
import stdlib.sl
|
|
|
|
|
|
2025-12-06 17:24:30 +01:00
|
|
|
:asm mem-slot {
|
|
|
|
|
lea rax, [rel print_buf]
|
|
|
|
|
sub r12, 8
|
|
|
|
|
mov [r12], rax
|
|
|
|
|
}
|
|
|
|
|
;
|
|
|
|
|
|
2025-12-06 16:30:58 +01:00
|
|
|
: test-add
|
|
|
|
|
5 7 + puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
: test-sub
|
|
|
|
|
10 3 - puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
: test-mul
|
|
|
|
|
6 7 * puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
: test-div
|
|
|
|
|
84 7 / puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
: test-mod
|
|
|
|
|
85 7 % puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
: test-drop
|
|
|
|
|
10 20 drop puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
: test-dup
|
|
|
|
|
11 dup + puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
: test-swap
|
|
|
|
|
2 5 swap - puts
|
|
|
|
|
;
|
|
|
|
|
|
2025-12-06 17:24:30 +01:00
|
|
|
: test-store
|
|
|
|
|
mem-slot dup
|
|
|
|
|
123 swap !
|
|
|
|
|
@ puts
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
: test-mmap
|
|
|
|
|
0 # addr hint (NULL)
|
|
|
|
|
4096 # length (page)
|
|
|
|
|
3 # prot (PROT_READ | PROT_WRITE)
|
|
|
|
|
34 # flags (MAP_PRIVATE | MAP_ANON)
|
|
|
|
|
-1 # fd (ignored for MAP_ANON)
|
|
|
|
|
0 # offset
|
|
|
|
|
mmap
|
|
|
|
|
dup
|
|
|
|
|
1337 swap !
|
|
|
|
|
dup
|
|
|
|
|
@ puts
|
|
|
|
|
4096 munmap drop
|
|
|
|
|
;
|
|
|
|
|
|
2025-12-06 16:30:58 +01:00
|
|
|
: main
|
|
|
|
|
test-add
|
|
|
|
|
test-sub
|
|
|
|
|
test-mul
|
|
|
|
|
test-div
|
|
|
|
|
test-mod
|
|
|
|
|
test-drop
|
|
|
|
|
test-dup
|
|
|
|
|
test-swap
|
2025-12-06 17:24:30 +01:00
|
|
|
test-store
|
|
|
|
|
test-mmap
|
2025-12-06 16:30:58 +01:00
|
|
|
0
|
|
|
|
|
;
|