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

📄 redboot-crt0.s

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 S
字号:
	    .file   "crt0.S"	#define XGLUE(a,b) a##b#define GLUE(a,b) XGLUE(a,b)	#ifdef __USER_LABEL_PREFIX__#define SYM_NAME( name ) GLUE (__USER_LABEL_PREFIX__, name)#else#error __USER_LABEL_PREFIX is not defined#endif    .text     /* Setup the assembly entry point.  */    .code 32    .globl SYM_NAME(start)    .globl SYM_NAME(_start)SYM_NAME(start):SYM_NAME(_start):	mov	fp, #0	/* Null frame pointer.  */	mov	r7, #0	/* Null frame pointer for Thumb.  */	/* Enable interrupts for gdb debugging.  */	mrs    r0, cpsr	bic    r0, r0, #0xC0	msr    cpsr, r0		mov 	a2, #0			/* Second arg: fill value.  */	ldr	a1, .LC1		/* First arg: start of memory block.  */	ldr	a3, .LC2		sub	a3, a3, a1		/* Third arg: length of block.  */#ifdef	GCRT0	/* Zero out the bss without using memset. 	   Using memset is bad because it may be instrumented for	   profiling, but at this point, the profiling data structures	   have not been set up. 	   FIXME: This loop could be a lot more efficient.  */	subs	a3, a3, #0	beq	2f1:	strb	a2, [a1]	subs	a3, a3, #1	add	a1, a1, #1	bne	1b2:		/* Nothing to left to clear.  */#endif#ifdef __thumb__		/* Enter Thumb mode. */	add	a4, pc, #1	/* Get the address of the Thumb block.  */	bx	a4		/* Go there and start Thumb decoding.   */	.code 16	.global __change_mode	.thumb_func__change_mode:	#endif#ifndef	GCRT0	bl	SYM_NAME(memset)#endif	bl	SYM_NAME(__get_memtop)	sub	r0, r0, #32	mov	sp, r0#ifdef __USES_INITFINI__	/* Some arm/elf targets use the .init and .fini sections	   to create constructors and destructors, and for these	   targets we need to call the _init function and arrange	   for _fini to be called at program exit.  */	ldr	r0, .Lfini	bl	SYM_NAME (atexit)	bl	SYM_NAME (_init)#endif		mov 	a1, #0	ldr	a2, .LC3	mov	a3, a2	bl	SYM_NAME(main)    1:	bl	SYM_NAME(exit)	b	1b	.align	2.LC1:	.word	__bss_start__.LC2:	.word	__bss_end__.LC3:	.word	0#ifdef __USES_INITFINI__.Lfini:	.word	SYM_NAME(_fini)#endif#if 0#ifdef __thumb__	.code 16#endif	.global SYM_NAME(__syscall)#ifdef __thumb__        .thumb_func#else	.align  4#endifSYM_NAME(__syscall):	mov	r12, lr#ifdef __thumb__	swi	0x18#else	swi	0x180001#endif	mov	pc, r12#endif

⌨️ 快捷键说明

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