Files
l2/strconcat.sl

76 lines
991 B
Plaintext
Raw Normal View History

2025-12-24 23:19:08 +01:00
import stdlib/stdlib.sl
import stdlib/io.sl
word strconcat
2025-12-24 23:19:08 +01:00
0 pick 3 pick +
dup
>r >r >r >r >r >r
5 rpick
alloc
2025-12-24 23:19:08 +01:00
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
2025-12-24 23:19:08 +01:00
word alloc
2025-12-24 23:19:08 +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
end
2025-12-24 23:19:08 +01:00
word free
2025-12-24 23:19:08 +01:00
munmap drop
end
2025-12-24 23:19:08 +01:00
word strcpy #(dst_addr src_addr len -- dst_addr len)
2025-12-24 23:19:08 +01:00
dup
>r
swap
dup c@
3 pick swap
c!
drop
swap
for
1 + dup
c@
swap
-rot
swap
1 +
dup
rot
c!
drop
swap
2026-01-03 09:04:50 +00:00
end
2025-12-24 23:19:08 +01:00
swap
nip
r> dup -rot - swap
end
2025-12-24 23:19:08 +01:00
word main
"hello world hello world hello " "world hello world hello world"
2025-12-24 23:19:08 +01:00
strconcat
puts
end