added the option to customize _start

This commit is contained in:
igor
2026-02-25 16:58:31 +01:00
parent 1fed85bc0a
commit c5cdd5a7fd
3 changed files with 211 additions and 41 deletions

View File

@@ -0,0 +1,2 @@
hello world
24

44
tests/start_override.sl Normal file
View File

@@ -0,0 +1,44 @@
import stdlib.sl
:asm _start {
mov rdi, [rsp]
lea rsi, [rsp+8]
mov [rel sys_argc], rdi
mov [rel sys_argv], rsi
lea r12, [rel dstack_top]
mov r15, r12
lea r13, [rel rstack_top]
; print "hello world\n" before calling main using runtime `print_buf`
mov byte [rel print_buf], 'h'
mov byte [rel print_buf + 1], 'e'
mov byte [rel print_buf + 2], 'l'
mov byte [rel print_buf + 3], 'l'
mov byte [rel print_buf + 4], 'o'
mov byte [rel print_buf + 5], ' '
mov byte [rel print_buf + 6], 'w'
mov byte [rel print_buf + 7], 'o'
mov byte [rel print_buf + 8], 'r'
mov byte [rel print_buf + 9], 'l'
mov byte [rel print_buf + 10], 'd'
mov byte [rel print_buf + 11], 10
lea rsi, [rel print_buf]
mov rdx, 12
mov rax, 1
mov rdi, 1
syscall
call main
mov rax, 0
cmp r12, r15
je .no_exit_value
mov rax, [r12]
add r12, 8
.no_exit_value:
mov rdi, rax
mov rax, 60
syscall
};
word main
24 puti cr
end