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

📄 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                        | Default entry point	      .globl   _start                       | Default entry point	      .globl   M68Kvec                      | Vector Table	      .globl   _M68Kvec                     | Vector Tablestart:_start:M68Kvec:                               | standard location for vectors_M68Kvec:                               | standard location for vectors        nop                             | for linkers with problem                                        |   using location zero as entry        jmp      around        .space   4088                   | to avoid initial intr stack                                        |   from 135BUG on MVME13? as entry                                        |   and start code at 0x4000around:         move.w  %sr,initial_sr          | save initial values        movec   %isp,%a0        movel   %a0,initial_isp        movec   %usp,%a0        movel   %a0,initial_usp        movec   %msp,%a0        movel   %a0,initial_msp        oriw    #0x0700,%sr             | INTERRUPTS OFF!!!                |        | zero out uninitialized data area        |zerobss:        moveal  #end,%a0                | find end of .bss         moveal  #_bss_start,%a1         | find beginning of .bss         movel   #0,%d0loop:   movel   #0,%a1@+                | to zero out uninitialized        cmpal   %a0,%a1        jlt     loop                    | loop until _end reached         movel   #heap_size,__C_heap_size | set ___C_heap_size        movel   #heap_memory,__C_heap_start | set ___C_heap_start        moveal  #interrupt_stack_end,%a0 | set interrupt stack pointer        movec   %a0,%isp        moveal  #stack_end,%a0          | set master stack pointer        movec   %a0,%msp        moveal  #stack_end,%a6          | set base pointer        movw    #0x3000,%sr             | SUPV MODE,INTERRUPTS ON!!!#ifdef NEED_UNDERSCORES        jsr     __Board_Initialize      | initialize the board #else        jsr     _Board_Initialize       | initialize the board #endif        move.l  #0,%sp@-                | envp = NULL         move.l  #0,%sp@-                | argv = NULL         move.l  #0,%sp@-                | argc = NULL #ifdef NEED_UNDERSCORES        jsr     ___libc_init            | initialize the library and                                        |   call main#else        jsr     __libc_init             | initialize the library and                                        |   call main#endif        add.l   #12,%sp         move.l  #0,%sp@-                | argc = NULL         jsr     __exit                  | call the Board specific exit        addq.l  #4,%sp        move.l  initial_isp,%a0         | if __exit returns then we can        movec   %a0,%isp                |   restore the initial values        move.l  initial_usp,%a0        movec   %a0,%usp        move.l  initial_msp,%a0        movec   %a0,%msp        move.w  initial_sr,%sr        rts        .bss/* *  So initial stack registers and status register can be saved. */#define DECLARE_SPACE(_name,_space,_align) \          .globl   _name ; \          .align   _align ; \_name##:  .space _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)DECLARE_U32(initial_isp)DECLARE_U32(initial_msp)DECLARE_U32(initial_usp)DECLARE_U16(initial_sr)/* *  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)DECLARE_SPACE(interrupt_stack_memory,0x1000,4)DECLARE_LABEL(interrupt_stack_end)

⌨️ 快捷键说明

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