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

📄 start.s

📁 一个C源代码分析器
💻 S
字号:
/* Copyright (C) 1994 Free Software Foundation, Inc.   Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil),     On-Line Applications Research Corporation. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/ormodify it under the terms of the GNU Library General Public License aspublished by the Free Software Foundation; either version 2 of theLicense, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNULibrary General Public License for more details. You should have received a copy of the GNU Library General PublicLicense along with the GNU C Library; see the file COPYING.LIB.  Ifnot, write to the Free Software Foundation, Inc., 675 Mass Ave,Cambridge, MA 02139, USA.  *//*  entry.s * *  This file contains the entry point for the application. *  The name of this entry point is compiler dependent. *  It jumps to the BSP which is responsible for performing *  all initialization. * */         .text         .globl  start                  # GNU960 default entry pointstart:        mov     3, r12        modpc   r12, r12, r12         # enable tracing/trace faults        mov     g5, g5                # NOP        mov     0, g14                # initialize constant for C        /*         * zero out uninitialized data area         */zerobss:        lda     _end, r4        /* find end of .bss */        lda     _bss_start, r5  /* find beginning of .bss */        ldconst 0, r6loop:   st      r6, (r5)        /* to zero out uninitialized */        addo    4, r5, r5       /* data area                 */        cmpobl  r5, r4, loop    /* loop until _end reached   */        lda     heap_memory, r12      /* tell C lib where heap is */        st      r12,___C_heap_start        lda     heap_size, r12        /* tell C lib how big heap is */        st      r12,___C_heap_size        lda     stack_memory,r12      /* set up stack pointer: */        mov     r12, sp        mov     0, g14           /* initialize constant for C */        call    init_frames        ret                      /* return to monitor */init_frames:        ldconst 0x3b001000, g0        ldconst 0x00009107, g1        modac   g1, g0, g0       /* set AC controls */        /*         * Call application mainline.         *      Someday, real values of argc and argv will be set up.         *      For now, they are set to 0.         */        callx   __Board_Initialize    /* Initialize the board */        ldconst 0,g0        ldconst 0,g1        ldconst 0,g2        callx   ___libc_init          /* initialize the library and */                                      /*   call main */        /*         * if we return from main, we have "fallen" off the end         * of the program, therefore status is 0         * so move 0 to g0 (exit parameter)         */        mov     0, g0        callx   __exit        ret/* *  Data Declarations.  Start with a macro which helps declare space. */#define DECLARE_SPACE(_name,_space,_align) \          .globl   _name ; \          .align   _align ; \.comm     _name##,_space#define DECLARE_LABEL(_name) \          .globl   _name ; \_name##:  #define DECLARE_PTR(_name) DECLARE_SPACE(_name,4,2)#define DECLARE_U32(_name) DECLARE_SPACE(_name,4,2)#define DECLARE_U16(_name) DECLARE_SPACE(_name,2,1)/* *  Require environment stuff */DECLARE_LABEL(_environ)DECLARE_PTR(environ)DECLARE_LABEL(_errno)DECLARE_U32(errno)/* *  Stack Size and Space */        .set stack_size, 0x20000DECLARE_SPACE(stack_memory,stack_size,4)DECLARE_LABEL(stack_end)/* *  Heap Size and Space */        .set heap_size, 0x20000DECLARE_SPACE(heap_memory,heap_size,4)DECLARE_LABEL(heap_end)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -