Write a (kindof) proper init, at least with the capabilities we have right now

This commit is contained in:
apio 2022-10-01 15:54:42 +02:00
parent ba4806f9d3
commit 96f53922c9

View File

@ -1,24 +1,65 @@
section .text section .text
global _start global _start
_start: _start:
mov rax, 1 mov rdi, welcome_label
int 42h ; sys_yield call print
mov rdi, HelloLabel call next_line
mov rsi, 17 mov rdi, 1000
mov rax, 3 call sleep
int 42h ; sys_write mov rdi, version_label
mov rdi, 4000 call print
call next_line
mov rdi, 2000
call sleep
mov rdi, end_label
call print
call exit
sleep:
mov rax, 2 mov rax, 2
int 42h ; sys_sleep int 42h
mov rdi, ExitLabel ret
mov rsi, 26
strlen:
push rbx
push rcx
mov rbx, rdi
xor al, al
mov rcx, 0xffffffff
repne scasb
sub rdi, rbx
mov rax, rdi
pop rcx
pop rbx
dec rax
ret
print: ; string: rdi
push rdi
call strlen
mov rsi, rax
mov rax, 3 mov rax, 3
int 42h ; sys_write pop rdi
int 42h
ret
next_line:
mov rdi, newline
mov rsi, 1
mov rax, 3
int 42h
ret
exit:
mov rax, 0 mov rax, 0
int 42h ; sys_exit int 42h
section .rodata section .rodata
HelloLabel: version_label:
db "Hello from init!", 0xA db "You are running Luna version v0.7-beta", 0xA, 0
ExitLabel: welcome_label:
db "Well, bye. (init exiting)", 0xA db "Welcome to Luna!", 0xA, 0
end_label:
db "Press any key to restart.", 0xA, 0
newline:
db 0xA