Files
l2/tests/start_override.sl

44 lines
1020 B
Plaintext
Raw Permalink Normal View History

2026-02-25 16:58:31 +01:00
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