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

📄 libgcc.s

📁 linux下的gcc编译器
💻 S
📖 第 1 页 / 共 2 页
字号:
	inc	rems1:	sb	MULH, 1	ret	not	ress	not	rest	not	resu	not	resv	not	resw	not	resx	not	resy	not	resz	incsnz	resz	incsz	resy	ret	incsnz	resx	incsz	resw	ret	incsnz	resv	incsz	resu	ret	incsnz	rest	inc	ress	ret	.endfunc#undef arg1s#undef arg1t#undef arg1u#undef arg1v#undef arg1w#undef arg1x#undef arg1y#undef arg1z#undef arg2s#undef arg2t#undef arg2u#undef arg2v#undef arg2w#undef arg2x#undef arg2y#undef arg2z	#undef ress#undef rest#undef resu#undef resv#undef resw#undef resx#undef resy#undef resz#undef rems#undef remt#undef remu#undef remv#undef remw#undef remx#undef remy#undef remz#undef tmp_var#undef tmp_var1#undef tmp_var2#undef tmp_var3#undef tmp_var4#undef tmp_var5#undef tmp_var6#undef cnt#endif /* defined (L_divmoddi4) */#if defined (L_udivmoddi4)		#define	arg1s 1(SP)#define arg1t 2(SP)#define arg1u 3(SP)#define arg1v 4(SP)#define arg1w 5(SP)#define arg1x 6(SP)#define arg1y 7(SP)#define arg1z 8(SP)#define arg2s 9(SP)#define arg2t 10(SP)#define arg2u 11(SP)#define arg2v 12(SP)#define arg2w 13(SP)#define arg2x 14(SP)#define arg2y 15(SP)#define arg2z 16(SP)	#define ress $80#define rest $81#define resu $82#define resv $83#define resw $84#define resx $85#define resy $86#define resz $87#define rems $88#define remt $89#define remu $8a#define remv $8b#define remw $8c#define remx $8d#define remy $8e#define remz $8f#define tmp_var	$90#define tmp_var1 $91#define tmp_var2 $92#define tmp_var3 $93#define tmp_var4 $94#define tmp_var5 $95#define tmp_var6 $96#define cnt $97	.sect	.text.libgcc,"ax"	.global	__udivmoddi4	.func	_udivmoddi4, __udivmoddi4__udivmoddi4:	clr	rems	clr	remt	clr	remu	clr	remv	clr	remw	clr	remx	clr	remy	clr	remz	mov	w, #65	mov	cnt, w	clrb	status, 0	page	1f	jmp	1f2:	rl	remz	rl	remy	rl	remx	rl	remw	rl	remv	rl	remu	rl	remt	rl	rems	mov	w, arg2z	sub	w, remz	mov	tmp_var, w	mov	w, arg2y	subc	w, remy	mov	tmp_var1, w	mov	w, arg2x	subc	w, remx	mov	tmp_var2, w	mov	w, arg2w	subc	w, remw	mov	tmp_var3, w	mov	w, arg2v	subc	w, remv	mov	tmp_var4, w	mov	w, arg2u	subc	w, remu	mov	tmp_var5, w	mov	w, arg2t	subc	w, remt	mov	tmp_var6, w	mov	w, arg2s	subc	w, rems	sc	page	1f	jmp	1f	mov	rems, w	mov	w, tmp_var6	mov	remt, w	mov	w, tmp_var5	mov	remu, w	mov	w, tmp_var4	mov	remv, w	mov	w, tmp_var3	mov	remw, w	mov	w, tmp_var2	mov	remx, w	mov	w, tmp_var1	mov	remy, w	mov	w, tmp_var	mov	remz, w1:	rl	arg1z	rl	arg1y	rl	arg1x	rl	arg1w	rl	arg1v	rl	arg1u	rl	arg1t	rl	arg1s	decsz	cnt	page	2b	jmp	2b	pop	ress	pop	rest	pop	resu	pop	resv	pop	resw	pop	resx	pop	resy	pop	resz	mov	w, #8	add	spl, w	ret	.endfunc#undef arg1s#undef arg1t#undef arg1u#undef arg1v#undef arg1w#undef arg1x#undef arg1y#undef arg1z#undef arg2s#undef arg2t#undef arg2u#undef arg2v#undef arg2w#undef arg2x#undef arg2y#undef arg2z	#undef ress#undef rest#undef resu#undef resv#undef resw#undef resx#undef resy#undef resz#undef rems#undef remt#undef remu#undef remv#undef remw#undef remx#undef remy#undef remz#undef tmp_var#undef tmp_var1#undef tmp_var2#undef tmp_var3#undef tmp_var4#undef tmp_var5#undef tmp_var6#undef cnt#endif /* defined (L_udivmoddi4) */#define LT	#0#define EQ	#1#define GT	#2#if defined(L_cmphi2)#define arg1l 2(sp)#define arg1h 1(sp)#define arg2l 4(sp)#define arg2h 3(sp)	.sect	.text.libgcc,"ax"	.global	__cmphi2	.global	__cmp_ret	.global	__cmpqi_ret	.func	_cmphi2, __cmphi2__cmphi2:	mov	w,arg1l		sub	w,arg2l	snz	page	2f	jmp	2f	mov	w,arg1h1:	subc	w,arg2h	clr	arg2l	rl	arg2l	snb	arg1h,7	setb	arg2l,2	snb	arg2h,7	setb	arg2l,1	mov	w,#3__cmp_ret:	add	spl,w			;  sign1	pop	wreg			;   sign2__cmpqi_ret:	add	pcl,w			;    carry of arg1 - arg2	retw	GT			; [000] arg1 > arg2	retw	LT			; [001] arg1 < arg2	retw	GT			; [010] arg1 > arg2	retw	GT			; [011] arg1 > arg2	retw	LT			; [100] arg1 < arg2	retw	LT			; [101] arg1 < arg2	retw	GT			; [110] arg1 > arg2	retw	LT			; [111] arg1 < arg22:	mov	w,arg1h	cse	w,arg2h	page	1b	jmp	1b	mov	w,#4	add	spl,w	retw	EQ	.endfunc#undef arg1l#undef arg1h#undef arg2l#undef arg2h#endif  /* L_cmphi2 */#if defined(L_cmpqi2)#define arg1 1(sp)#define arg2 2(sp)	.sect	.text.libgcc,"ax"	.global	__cmpqi2	.func	_cmpqi2, __cmpqi2__cmpqi2:	mov	w, arg1	sub	w, arg2	snz	page	2f	jmp	2f	clr	wreg	rl	wreg	snb	arg1, 7	setb	wreg, 2	snb	arg2, 7	setb	wreg, 1	inc	spl	inc	spl	page	__cmpqi_ret	jmp	__cmpqi_ret2:	mov	w, #2	add	spl, w	retw	EQ	.endfunc#undef arg1l#undef arg2l#endif  /* L_cmpqi2 */#if defined(L_cmpsi2)#define arg1d 4(sp)#define arg1c 3(sp)#define arg1b 2(sp)#define arg1a 1(sp)#define arg2d 8(sp)#define arg2c 7(sp)#define arg2b 6(sp)#define arg2a 5(sp)		.sect	.text.libgcc,"ax"	.global	__cmpsi2	.func	_cmpsi2, __cmpsi2__cmpsi2:	mov	w, arg1d	sub	w, arg2d	snz	page	2f	jmp	2f1:	mov	w, arg1c	subc	w, arg2c	mov	w, arg1b	subc	w, arg2b	mov	w, arg1a	subc	w, arg2a	clr	arg2d	rl	arg2d	snb	arg1a, 7	setb	arg2d, 2	snb	arg2a, 7	setb	arg2d, 1	mov	w, #7	page	__cmp_ret	jmp	__cmp_ret2:	mov	w, arg1c	cse	w, arg2c	page	1b	jmp	1b	mov	w, arg1b	cse	w, arg2b	page	1b	jmp	1b	mov	w, arg1a	cse	w, arg2a	page	1b	jmp	1b	mov	w, #8	add	spl, w	retw	EQ	.endfunc#undef arg1d#undef arg1c#undef arg1b#undef arg1a#undef arg2d#undef arg2c#undef arg2b#undef arg2a#endif  /* L_cmpsi2 */#if defined(L_cmpdi2)#define arg1z 8(sp)#define arg1y 7(sp)#define arg1x 6(sp)#define arg1w 5(sp)#define arg1v 4(sp)#define arg1u 3(sp)#define arg1t 2(sp)#define arg1s 1(sp)#define arg2z 16(sp)#define arg2y 15(sp)#define arg2x 14(sp)#define arg2w 13(sp)#define arg2v 12(sp)#define arg2u 11(sp)#define arg2t 10(sp)#define arg2s 9(sp)		.sect	.text.libgcc,"ax"	.global	__cmpdi2	.func	_cmpdi2, __cmpdi2__cmpdi2:	mov	w, arg1z	sub	w, arg2z	snz	page	2f	jmp	2f1:	mov	w, arg1y	subc	w, arg2y	mov	w, arg1x	subc	w, arg2x	mov	w, arg1w	subc	w, arg2w	mov	w, arg1v	subc	w, arg2v	mov	w, arg1u	subc	w, arg2u	mov	w, arg1t	subc	w, arg2t	mov	w, arg1s	subc	w, arg2s	clr	arg2z	rl	arg2z	snb	arg1s, 7	setb	arg2z, 2	snb	arg2s, 7	setb	arg2z, 1	mov	w, #15	page	__cmp_ret	jmp	__cmp_ret2:	mov	w, arg1y	cse	w, arg2y	page	1b	jmp	1b	mov	w, arg1x	cse	w, arg2x	page	1b	jmp	1b	mov	w, arg1w	cse	w, arg2w	page	1b	jmp	1b	mov	w, arg1v	cse	w, arg2v	page	1b	jmp	1b	mov	w, arg1u	cse	w, arg2u	page	1b	jmp	1b	mov	w, arg1t	cse	w, arg2t	page	1b	jmp	1b	mov	w, arg1s	cse	w, arg2s	page	1b	jmp	1b	mov	w, #16	add	spl, w	retw	EQ	.endfunc	#undef arg1z#undef arg1y#undef arg1x#undef arg1w#undef arg1v#undef arg1u#undef arg1t#undef arg1s#undef arg2z#undef arg2y#undef arg2x#undef arg2w#undef arg2v#undef arg2u#undef arg2t#undef arg2s#endif  /* L_cmpdi2 */	#if defined(L_cmpdi2_dp)	.sect	.text.libgcc,"ax"	.global	__cmpdi2_dp	.func	_cmpdi2_dp, __cmpdi2_dp__cmpdi2_dp:	push	7(dp)	push	6(dp)	push	5(dp)	push	4(dp)	push	3(dp)	push	2(dp)	push	1(dp)	push	(dp)	page	__cmpdi2	jmp	__cmpdi2	.endfunc#endif  /* L_cmpdi2_dp */#if defined(L_fp_pop_args_ret)	.sect	.pram.libgcc,"ax"	.global	__fp_pop_args_ret	.global	__pop_args_ret	.global	__pop2_args_ret	.func	__fp_pop2_args_ret, __fp_pop2_args_ret__fp_pop2_args_ret:	mov	w, #2__fp_pop_args_ret:	pop	0xfd	pop	0xfe__pop_args_ret:	pop	callh	pop	calll	add	spl, w	ret	.endfunc#endif /* L_fp_pop_args_ret */#if defined(L__pop2_args_ret)	.sect	.pram.libgcc,"ax"	.global	__pop2_args_ret	.func	__pop2_args_ret, __pop2_args_ret__pop2_args_ret:	mov	w, #2	pop	callh	pop	calll	add	spl, w	ret	.endfunc#endif /* L__pop2_args_ret */#if defined(L_leaf_fp_pop_args_ret)	.sect	.pram.libgcc,"ax"	.global	__leaf_fp_pop_args_ret, __leaf_fp_pop2_args_ret	.func	__leaf_fp2_pop_args_ret, __leaf_fp_pop2_args_ret__leaf_fp_pop2_args_ret:	mov	w, #2__leaf_fp_pop_args_ret:	pop	0xfd	pop	0xfe	add	spl, w	ret	.endfunc#endif /* L_leaf_fp_pop_args_ret */#if defined(L_movstrhi_countqi)	.sect	.pram.libgcc,"ax"	.global	__movstrhi_countqi	.func	_movstrhi_countqi, __movstrhi_countqi__movstrhi_countqi:	push	dph			; Save our pointer regs	push	dpl	push	iph	push	ipl	mov	w, 5(SP)		; Get our dest pointer	mov	dph, w	mov	w, 6(SP)	mov	dpl, w	mov	w, 7(SP)		; And our source pointer	mov	iph, w	mov	w, 8(SP)	mov	ipl, w1:	push	(IP)			; *dest++ = *src++	pop	0(DP)	inc	ipl	inc	dpl	decsz	9(SP)			; Loop until completed	page	1b	jmp	1b	pop	ipl			; Restore our pointer regs	pop	iph	pop	dpl	pop	dph	mov	w, #5			; Tidy up our stack args	add	spl, w	ret	.endfunc#endif#if defined(L_movstrhi_counthi)	.sect	.text.libgcc,"ax"	.global	__movstrhi_counthi	.func	_movstrhi_counthi, __movstrhi_counthi__movstrhi_counthi:	push	dph			; Save our pointer regs	push	dpl	push	iph	push	ipl	mov	w, 5(SP)		; Get our dest pointer	mov	dph, w	mov	w, 6(SP)	mov	dpl, w	mov	w, 7(SP)		; And our source pointer	mov	iph, w	mov	w, 8(SP)	mov	ipl, w	test	10(SP)			; If we have a nonzero LSB then adjust the	sz				; MSB of the loop count to allow us to use	inc	9(SP)			; skip tricks!1:	push	(IP)			; *dest++ = *src++	pop	0(DP)	inc	ipl	inc	dpl	decsnz	10(SP)			; Loop until completed - note the skip trick	decsz	9(SP)			; on the MSB!	page	1b	jmp	1b	pop	ipl			; Restore our pointer regs	pop	iph	pop	dpl	pop	dph	mov	w, #6			; Tidy up our stacked args.	add	spl, w	ret	.endfunc#endif#if defined(L_exit)	.sect	.text.libgcc,"ax"	.global	__exit	.global	_exit	.func	_exit, __exit	.weak	__exit	.weak	_exit_exit:		__exit:	pop	$88	pop	wreg	or	w, $88	push    wreg	push	#0	push	#1	system				; Exit wreg	page	__exit			; Never return	jmp	__exit	.endfunc#endif#if defined(Labort)	.sect	.text.libgcc,"ax"	.global	_abort	.func	abort, _abort_abort:	push	#1	push	#0	push	#1	system				; Exit 1	ret	.endfunc#endif#if defined(Lwrite)	/* Dummy entrypoint to suppress problems with glue code. */	.sect	.text.libgcc,"ax"	.global	_write	.func	write, _write;;;; write (fil,buf,len) - say that write succeeds....;; _write:	movb	$80, 5(SP)	movb	$81, 6(SP)		; Return length written	mov	w, #6	add	spl, w	ret		.endfunc#endif

⌨️ 快捷键说明

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