⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crt0.c

📁 Newlib 嵌入式 C库 标准实现代码
💻 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 + -