removed useless strlen from stdlib.sl

This commit is contained in:
IgorCielniak
2025-12-18 12:03:49 +01:00
parent 50451840b7
commit f684e56a70
14 changed files with 226 additions and 78 deletions

View File

@@ -18,17 +18,30 @@ _start:
mov rdi, rax
mov rax, 60
syscall
word_c_40:
mov rax, [r12]
movzx rax, byte [rax]
mov [r12], rax
ret
ret
word_c_21:
mov rax, [r12]
add r12, 8
mov rbx, [r12]
mov [rbx], al
ret
ret
word_r_40:
mov rax, [r13]
sub r12, 8
mov [r12], rax
ret
ret
word_strlen:
mov rsi, [r12] ; addr
mov rcx, 0
strlen_loop:
mov al, [rsi + rcx]
cmp al, 0
je strlen_done
inc rcx
jmp strlen_loop
strlen_done:
mov [r12], rcx ; len
mov rax, [r12] ; addr
mov rcx, [r12 + 8] ; len
add r12, 16 ; pop len and addr
mov [r12], rcx ; push len
ret
ret
word_puts:
@@ -113,6 +126,15 @@ word_dup:
sub r12, 8
mov [r12], rax
ret
word_write_buf:
mov rdx, [r12] ; len
mov rsi, [r12 + 8] ; addr
add r12, 16 ; pop len + addr
mov rax, 1 ; syscall: write
mov rdi, 1 ; fd = stdout
syscall
ret
ret
word_drop:
add r12, 8
ret
@@ -284,20 +306,22 @@ word__21:
add r12, 8
ret
word_mmap:
mov r9, [r12]
add r12, 8
mov r8, [r12]
add r12, 8
mov r10, [r12]
add r12, 8
mov rdx, [r12]
add r12, 8
mov rsi, [r12]
add r12, 8
mov rdi, [r12]
mov rax, 9
syscall
mov [r12], rax
; Save rsp and align to 16 bytes for syscall ABI
mov rax, rsp
and rsp, -16
mov rdi, [r12+40] ; addr
mov rsi, [r12+32] ; length
mov rdx, [r12+24] ; prot
mov r10, [r12+16] ; flags
mov r8, [r12+8] ; fd
mov r9, [r12] ; offset
add r12, 48 ; pop 6 args
mov rax, 9 ; syscall: mmap
syscall
mov rsp, rax ; restore rsp
sub r12, 8
mov [r12], rax ; push result
ret
ret
word_munmap:
mov rsi, [r12]