17 lines
646 B
Zig
17 lines
646 B
Zig
|
|
||
|
// TODO conditionally compile this differently for non-ELF
|
||
|
#attribute("naked")
|
||
|
export fn _start() -> unreachable {
|
||
|
// TODO conditionally compile this differently for other architectures and other OSes
|
||
|
asm volatile ("
|
||
|
mov (%%rsp), %%rdi // first parameter is argc
|
||
|
lea 0x8(%%rsp), %%rsi // second parameter is argv
|
||
|
lea 0x10(%%rsp,%%rdi,8), %%rdx // third paremeter is env
|
||
|
callq main
|
||
|
mov %%rax, %%rdi // return value is the parameter to exit syscall
|
||
|
mov $60, %%rax // 60 is exit syscall number
|
||
|
syscall
|
||
|
");
|
||
|
unreachable
|
||
|
}
|