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

📄 mcrt0.s

📁 操作系统SunOS 4.1.3版本的源码
💻 S
字号:
!!	.asciz "@(#)mcrt0.s 1.1 92/07/30 SMI"!! Copyright (c) 1986 by Sun Microsystems, Inc.!!	mcrt0.s for the Sparc Architecture!#include <machine/asm_linkage.h>#ifdef	FIX_ALIGN#include <machine/trap.h>#endif	FIX_ALIGN	.seg	"data"	.global	_environ_environ:	.word	0	.seg	"text"	.global	_on_exit	.global	____Argv!! Start up a C program.! On entry the stack frame looks like:!!	 _______________________  <- USRSTACK!	|	    :		|!	|  arg and env strings	|!	|	    :		|!	|-----------------------|!	|	    0		|!	|-----------------------|!	|	    :		|!	|  ptrs to env strings	|!	|-----------------------|!	|	    0		|!	|-----------------------|!	|	    :		|!	|  ptrs to arg strings  |!	|   (argc = # of wds)	|!	|-----------------------|!	|	   argc		|!	|-----------------------|!	|    window save area	|!	|	 (16 wds)	|!	|_______________________| <- %sp!	.seg	"text"	.align	4	.global	startstart:	mov	0, %fp			! stack frame link 0 in main -- for dbx#ifdef	FIX_ALIGN	ta	ST_FIX_ALIGN		! enable kernel alignment trap handler#endif	FIX_ALIGN	add	%sp, WINDOWSIZE, %l0	! &argc	add	%l0, 4, %l1		! argv	ld	[%l0], %l0		! argc	sethi	%hi(____Argv), %o1	st	%l1, [%o1 + %lo(____Argv)] ! prog name for profiling	sll	%l0, 2, %l2		! argc * sizeof(char *)	add	%l2, 4, %l2		! skip 0 at end of arg ptrs	add	%l1, %l2, %l2		! environment ptr	sethi	%hi(_environ), %o1	st	%l2, [%o1 + %lo(_environ)] ! store in _environ_$eprol:	sethi	%hi(_$eprol), %o0	! lowpc	or	%o0, %lo(_$eprol), %o0	sethi	%hi(_etext), %o1	! highpc	or	%o1, %lo(_etext), %o1!!	before we make this call, we have to:!		force 0 mod 8 %sp alignment,!		and make an arg save area for monstartup, on_exit, and main.!	andn	%sp, 07, %sp		! force 0 mod 8 stack alignment	call	_monstartup		! monstartup(lowpc, highpc)	sub	%sp, SA(ARGPUSHSIZE+4), %sp ! delay slot, leave room to push args	sethi	%hi(stopmon), %o0	or	%o0, %lo(stopmon), %o0	call	_on_exit		! on_exit( stopmon, NULL )	mov	0, %o1			! delay slot	call	start_float		! initialize floating point	nop	mov	%l0, %o0		! argc	mov	%l1, %o1		! argv	mov	%l2, %o2		! envp	sethi	%hi(_environ), %o3	call	_main			! main( argc, argv, environ )	st	%o2, [%o3 + %lo(_environ)] !just in case it got munged	call	_exit			! exit(main(...))	nop				! delay slot	call	__exit			! we should never get here...	nop				! delay slot	.global	stopmonstopmon:	save	%sp, -SA(MINFRAME), %sp	call	_monitor,1	mov	0, %o0			! delay slot	mov	0, %i0	ret	restore

⌨️ 快捷键说明

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