76 lines
991 B
Plaintext
76 lines
991 B
Plaintext
import stdlib/stdlib.sl
|
|
import stdlib/io.sl
|
|
|
|
word strconcat
|
|
0 pick 3 pick +
|
|
dup
|
|
>r >r >r >r >r >r
|
|
5 rpick
|
|
alloc
|
|
r> r>
|
|
dup >r
|
|
strcpy
|
|
swap
|
|
r> dup -rot +
|
|
r> r>
|
|
strcpy
|
|
swap
|
|
3 pick
|
|
-
|
|
swap
|
|
drop
|
|
swap
|
|
0 rpick
|
|
nip
|
|
rot
|
|
drop
|
|
rdrop rdrop rdrop
|
|
end
|
|
|
|
word alloc
|
|
0 # addr hint (NULL)
|
|
swap # size
|
|
3 # prot (PROT_READ | PROT_WRITE)
|
|
34 # flags (MAP_PRIVATE | MAP_ANON)
|
|
-1 # fd
|
|
0 # offset
|
|
mmap
|
|
end
|
|
|
|
word free
|
|
munmap drop
|
|
end
|
|
|
|
word strcpy #(dst_addr src_addr len -- dst_addr len)
|
|
dup
|
|
>r
|
|
swap
|
|
dup c@
|
|
3 pick swap
|
|
c!
|
|
drop
|
|
swap
|
|
for
|
|
1 + dup
|
|
c@
|
|
swap
|
|
-rot
|
|
swap
|
|
1 +
|
|
dup
|
|
rot
|
|
c!
|
|
drop
|
|
swap
|
|
end
|
|
swap
|
|
nip
|
|
r> dup -rot - swap
|
|
end
|
|
|
|
word main
|
|
"hello world hello world hello " "world hello world hello world"
|
|
strconcat
|
|
puts
|
|
end
|