📄 crt0.c
字号:
/* libc/sys/linux/crt0.c - Run-time initialization *//* FIXME: This should be rewritten in assembler and placed in a subdirectory specific to a platform. There should also be calls to run constructors. *//* Written 2000 by Werner Almesberger */#include <stdlib.h>#include <time.h>#include <string.h>extern char **environ;extern int main(int argc,char **argv,char **envp);extern char _end;extern char __bss_start;void _start(int args){ /* * The argument block begins above the current stack frame, because we * have no return address. The calculation assumes that sizeof(int) == * sizeof(void *). This is okay for i386 user space, but may be invalid in * other cases. */ int *params = &args-1; int argc = *params; char **argv = (char **) (params+1); environ = argv+argc+1; /* Note: do not clear the .bss section. When running with shared * libraries, certain data items such __mb_cur_max or environ * may get placed in the .bss, even though they are initialized * to non-zero values. Clearing the .bss will end up zeroing * out their initial values. The .bss is already initialized * by this time by Linux. */ tzset(); /* initialize timezone info */ exit(main(argc,argv,environ));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -