implement our own readdir and strtol, syscall builtin

This commit is contained in:
2025-11-22 18:04:25 +01:00
parent 7cffd73406
commit ce54d1b560
2 changed files with 86 additions and 39 deletions

View File

@@ -106,7 +106,7 @@ section .text
);
// take that rustfmt
for name in "syscall,malloc,realloc,free,snprintf,strtol,system,opendir,readdir,closedir,gettimeofday,send,write,read,close,getchar,gethostbyname".split(",")
for name in "malloc,realloc,free,snprintf,system,gettimeofday,send,write,read,close,getchar,gethostbyname".split(",")
{
emit!(&mut self.output, "extern {}", name);
emit!(&mut self.output, "c.{} equ {}", name, name);
@@ -121,6 +121,12 @@ _builtin_read8:
mov al, byte [rdi]
ret
section .text._builtin_read16
_builtin_read16:
xor rax, rax
mov ax, word [rdi]
ret
section .text._builtin_read32
_builtin_read32:
mov eax, dword [rdi]
@@ -140,6 +146,18 @@ section .text._builtin_set64
_builtin_set64:
mov [rdi], rsi
ret
section .text._builtin_syscall
_builtin_syscall:
mov rax, rdi
mov rdi, rsi
mov rsi, rdx
mov rdx, rcx
mov r10, r8
mov r8, r9
mov r9, [rsp+8]
syscall
ret
"
);
Ok(())