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

📄 crt0.s

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 S
字号:
/* crt0.S -- startup file for hppa. * * Copyright (c) 1995 Cygnus Support * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */	.VERSION "1.0"	.COPYRIGHT "crt0.o for the PA"	.DATA/*  * Set up the standard spaces (sections) These definitions come * from /lib/pcc_prefix.s. */	.TEXT	/* * stuff we need that's defined elsewhere. */	.IMPORT main, CODE	.IMPORT exit, CODE	.IMPORT _bss_start, DATA	.IMPORT _end, DATA	.IMPORT environ, DATA/* * start -- set things up so the application will run. * */        .PROC        .CALLINFO SAVE_SP, FRAME=48        .EXPORT $START$,ENTRY$START$	/* FIXME: this writes to page zero */	;; setup the %30 (stack pointer) with some memory	ldil 	L%_stack,%r30        ldo 	R%_stack(%r30),%r30	;; we need to set %r27 (global data pointer) here too 	ldil 	L%$global$,%r27        ldo 	R%$global$(%r27),%r27		; same problem as above/* * zerobss -- zero out the bss section */	; load the start of bss	ldil 	L%_bss_start,%r4        ldo 	R%_bss_start(%r4),%r4	;  load the end of bss	ldil 	L%_end,%r5        ldo 	R%_end(%r5),%r5L$bssloop	addi	-1,%r5,%r5			; decrement _bss_end	stb	%r0,0(0,%r5)			; we do this by bytes for now even						; though it's slower, it's safer	combf,=	%r4,%r5, L$bssloop		nop		ldi	1,%ret0/* * Call the main routine from the application to get it going. * main (argc, argv, environ) * We pass argv as a pointer to NULL. */	ldil	L%main,%r22	ble 	R%main(%sr4,%r22)	copy	%r31,%r2/* * Call exit() from the C library with the return value from main() */	copy	%r28,%r26	ldil	L%exit,%r22	ble	R%exit(%sr4,%r22)	copy	%r31,%r2        .PROCEND/* * _exit -- Exit from the application. Normally we cause a user trap * 	    to return to the ROM monitor for another run. */	.EXPORT _exit, ENTRY_exit	.PROC	.CALLINFO	.ENTRY		;; This just causes a breakpoint exception	break	0x0,0x0        bv,n    (%rp)	nop	.EXIT	.PROCEND/* * _sr4export -- support for called functions. (mostly for GDB) */	.EXPORT _sr4export, ENTRY_sr4export:	.PROC	.CALLINFO	.ENTRY	ble	0(%sr4,%r22)	copy	%r31,%rp	ldw	-24(%sr0,%sp),%rp	ldsid	(%sr0,%rp),%r1	mtsp	%r1,%sr0	be,n	0(%sr0,%rp)	nop	.EXIT	.PROCEND

⌨️ 快捷键说明

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