AsciiCam/C/lib/nl_start.c

15 lines
495 B
C
Raw Permalink Normal View History

2026-06-08 13:36:51 +05:30
extern int main(int argc, char *argv[]);
__attribute__((naked)) void _start(void) {
__asm__ volatile(
"xor %%rbp, %%rbp \n"
2026-06-19 13:07:18 +05:30
"pop %%rdi \n" // rdi = argc
"mov %%rsp, %%rsi \n" // rsi = argv
"and $-16, %%rsp \n" // 16-byte align stack
2026-06-08 13:36:51 +05:30
"call main \n"
2026-06-19 13:07:18 +05:30
"mov %%rax, %%rdi \n" // exit code = return value of main()
"mov $231, %%rax \n" // SYS_exit_group
2026-06-08 13:36:51 +05:30
"syscall \n" ::
: "memory");
}