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

📄 lib1funcs.asm

📁 linux下的gcc编译器
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	sst.w	r31,116[ep]	sst.w	r2,112[ep]	sst.w	gp,108[ep]	sst.w	r6,104[ep]	sst.w	r7,100[ep]	sst.w	r8,96[ep]	sst.w	r9,92[ep]	sst.w	r11,88[ep]	sst.w	r12,84[ep]	sst.w	r13,80[ep]	sst.w	r14,76[ep]	sst.w	r15,72[ep]	sst.w	r16,68[ep]	sst.w	r17,64[ep]	sst.w	r18,60[ep]	sst.w	r19,56[ep]	sst.w	r20,52[ep]	sst.w	r21,48[ep]	sst.w	r22,44[ep]	sst.w	r23,40[ep]	sst.w	r24,36[ep]	sst.w	r25,32[ep]	sst.w	r26,28[ep]	sst.w	r27,24[ep]	sst.w	r28,20[ep]	sst.w	r29,16[ep]	mov	r1,ep	jmp	[r10]	.size	__save_all_interrupt,.-__save_all_interrupt	.globl	__restore_all_interrupt	.type	__restore_all_interrupt,@function	/* Restore all registers saved in __save_all_interrupt */	/* & deallocate the stack space */	/* Called via:	jalr __restore_all_interrupt,r10 */__restore_all_interrupt:	mov	ep,r1	mov	sp,ep	sld.w	116[ep],r31	sld.w	112[ep],r2	sld.w	108[ep],gp	sld.w	104[ep],r6	sld.w	100[ep],r7	sld.w	96[ep],r8	sld.w	92[ep],r9	sld.w	88[ep],r11	sld.w	84[ep],r12	sld.w	80[ep],r13	sld.w	76[ep],r14	sld.w	72[ep],r15	sld.w	68[ep],r16	sld.w	64[ep],r17	sld.w	60[ep],r18	sld.w	56[ep],r19	sld.w	52[ep],r20	sld.w	48[ep],r21	sld.w	44[ep],r22	sld.w	40[ep],r23	sld.w	36[ep],r24	sld.w	32[ep],r25	sld.w	28[ep],r26	sld.w	24[ep],r27	sld.w	20[ep],r28	sld.w	16[ep],r29	mov	r1,ep	addi	120,sp,sp	jmp	[r10]	.size	__restore_all_interrupt,.-__restore_all_interrupt#endif /* L_save_all_interrupt */	#if defined __v850e__#ifdef	L_callt_save_r2_r29	/* Put these functions into the call table area.  */	.call_table_text		/* Allocate space and save registers 2, 20 .. 29 on the stack.  */	/* Called via:	callt ctoff(__callt_save_r2_r29).  */	.align	2.L_save_r2_r29:	add	-4, sp	st.w	r2, 0[sp]	prepare {r20 - r29}, 0	ctret	/* Restore saved registers, deallocate stack and return to the user.  */	/* Called via:	callt ctoff(__callt_return_r2_r29).  */	.align	2.L_return_r2_r29:	dispose 0, {r20-r29}	ld.w    0[sp], r2	add	4, sp	jmp     [r31]	/* Place the offsets of the start of these routines into the call table.  */	.call_table_data	.global	__callt_save_r2_r29	.type	__callt_save_r2_r29,@function__callt_save_r2_r29:	.short ctoff(.L_save_r2_r29)		.global	__callt_return_r2_r29	.type	__callt_return_r2_r29,@function__callt_return_r2_r29:	.short ctoff(.L_return_r2_r29)	#endif /* L_callt_save_r2_r29 */#ifdef	L_callt_save_r2_r31	/* Put these functions into the call table area.  */	.call_table_text		/* Allocate space and save registers 2 and 20 .. 29, 31 on the stack.  */	/* Also allocate space for the argument save area.  */	/* Called via:	callt ctoff(__callt_save_r2_r31).  */	.align	2.L_save_r2_r31:	add	-4, sp	st.w	r2, 0[sp]	prepare {r20 - r29, r31}, 4	ctret	/* Restore saved registers, deallocate stack and return to the user.  */	/* Called via:	callt ctoff(__callt_return_r2_r31).  */	.align	2.L_return_r2_r31:	dispose 4, {r20 - r29, r31}	ld.w    0[sp], r2	addi	4, sp, sp	jmp     [r31]	/* Place the offsets of the start of these routines into the call table.  */	.call_table_data	.global	__callt_save_r2_r31	.type	__callt_save_r2_r31,@function__callt_save_r2_r31:	.short ctoff(.L_save_r2_r31)		.global	__callt_return_r2_r31	.type	__callt_return_r2_r31,@function__callt_return_r2_r31:	.short ctoff(.L_return_r2_r31)	#endif /* L_callt_save_r2_r31 */#ifdef L_callt_save_r6_r9	/* Put these functions into the call table area.  */	.call_table_text		/* Save registers r6 - r9 onto the stack in the space reserved for them.	   Use by variable argument functions. 	   Called via:	callt ctoff(__callt_save_r6_r9).  */	.align	2.L_save_r6_r9:	mov	ep,r1	mov	sp,ep	sst.w	r6,0[ep]	sst.w	r7,4[ep]	sst.w	r8,8[ep]	sst.w	r9,12[ep]	mov	r1,ep	ctret	/* Place the offsets of the start of this routines into the call table.  */	.call_table_data	.global	__callt_save_r6_r9	.type	__callt_save_r6_r9,@function__callt_save_r6_r9:	.short ctoff(.L_save_r6_r9)#endif /* L_callt_save_r6_r9 */	#ifdef	L_callt_save_interrupt	/* Put this functions into the call table area */	.call_table_text		/* Save registers r1, ep, gp, r10 on stack and load up with expected values.  */	/* Called via:	callt ctoff(__callt_save_interrupt).  */	.align	2.L_save_interrupt:        /* SP has already been moved before callt ctoff(_save_interrupt).  */        /* addi -24, sp, sp  */        st.w    ep,  0[sp]        st.w    gp,  4[sp]        st.w    r1,  8[sp]        /* R10 has alread been saved bofore callt ctoff(_save_interrupt).  */        /* st.w    r10, 12[sp]  */	mov	hilo(__ep),ep	mov	hilo(__gp),gp	ctret        /* Place the offsets of the start of the routine into the call table.  */        .call_table_data        .global __callt_save_interrupt        .type   __callt_save_interrupt,@function__callt_save_interrupt: .short ctoff(.L_save_interrupt)        .call_table_text	/* Restore saved registers, deallocate stack and return from the interrupt.  */        /* Called via:  callt ctoff(__callt_restore_itnerrupt).   */	.text	.align	2	.globl	__return_interrupt	.type	__return_interrupt,@function.L_return_interrupt:        ld.w    20[sp], r1        ldsr    r1,     ctpsw        ld.w    16[sp], r1        ldsr    r1,     ctpc        ld.w    12[sp], r10        ld.w     8[sp], r1        ld.w     4[sp], gp        ld.w     0[sp], ep        addi    24, sp, sp        reti	/* Place the offsets of the start of the routine into the call table.  */	.call_table_data        .global __callt_return_interrupt        .type   __callt_return_interrupt,@function__callt_return_interrupt:       .short ctoff(.L_return_interrupt)	#endif /* L_callt_save_interrupt */#ifdef L_callt_save_all_interrupt	/* Put this functions into the call table area.  */	.call_table_text		/* Save all registers except for those saved in __save_interrupt.  */	/* Allocate enough stack for all of the registers & 16 bytes of space.  */	/* Called via:	callt ctoff(__callt_save_all_interrupt).  */	.align	2.L_save_all_interrupt:	addi	-60, sp, sp	mov	ep,  r1	mov	sp,  ep	sst.w	r2,  56[ep]	sst.w	r5,  52[ep]	sst.w	r6,  48[ep]	sst.w	r7,  44[ep]	sst.w	r8,  40[ep]	sst.w	r9,  36[ep]	sst.w	r11, 32[ep]	sst.w	r12, 28[ep]	sst.w	r13, 24[ep]	sst.w	r14, 20[ep]	sst.w	r15, 16[ep]	sst.w	r16, 12[ep]	sst.w	r17, 8[ep]	sst.w	r18, 4[ep]	sst.w	r19, 0[ep]	mov	r1,  ep	prepare {r20 - r29, r31}, 4	ctret		/* Restore all registers saved in __save_all_interrupt.  */	/* & deallocate the stack space.  */	/* Called via:	callt ctoff(__callt_restore_all_interrupt).  */	.align 2.L_restore_all_interrupt:	dispose 4, {r20 - r29, r31}		mov	ep, r1	mov	sp, ep	sld.w	0 [ep], r19	sld.w	4 [ep], r18	sld.w	8 [ep], r17	sld.w	12[ep], r16	sld.w	16[ep], r15	sld.w	20[ep], r14	sld.w	24[ep], r13	sld.w	28[ep], r12	sld.w	32[ep], r11	sld.w	36[ep], r9	sld.w	40[ep], r8	sld.w	44[ep], r7	sld.w	48[ep], r6	sld.w	52[ep], r5	sld.w	56[ep], r2	mov	r1, ep	addi	60, sp, sp	ctret	/* Place the offsets of the start of these routines into the call table.  */	.call_table_data	.global	__callt_save_all_interrupt	.type	__callt_save_all_interrupt,@function__callt_save_all_interrupt:	.short ctoff(.L_save_all_interrupt)		.global	__callt_restore_all_interrupt	.type	__callt_restore_all_interrupt,@function__callt_restore_all_interrupt:	.short ctoff(.L_restore_all_interrupt)	#endif /* L_callt_save_all_interrupt */#define MAKE_CALLT_FUNCS( START )						\	.call_table_text							;\	.align	2								;\	/* Allocate space and save registers START .. r29 on the stack.  */	;\	/* Called via:	callt ctoff(__callt_save_START_r29).  */		;\.L_save_##START##_r29:								;\	prepare { START - r29 }, 0						;\	ctret									;\										;\	/* Restore saved registers, deallocate stack and return.  */		;\	/* Called via:	callt ctoff(__return_START_r29) */			;\	.align	2								;\.L_return_##START##_r29:							;\	dispose 0, { START - r29 }, r31						;\										;\	/* Place the offsets of the start of these funcs into the call table. */;\	.call_table_data							;\										;\	.global	__callt_save_##START##_r29					;\	.type	__callt_save_##START##_r29,@function				;\__callt_save_##START##_r29:	.short ctoff(.L_save_##START##_r29 )		;\										;\	.global	__callt_return_##START##_r29					;\	.type	__callt_return_##START##_r29,@function				;\__callt_return_##START##_r29:	.short ctoff(.L_return_##START##_r29 )	#define MAKE_CALLT_CFUNCS( START )						\	.call_table_text							;\	.align	2								;\	/* Allocate space and save registers START .. r31 on the stack.  */	;\	/* Called via:	callt ctoff(__callt_save_START_r31c).  */		;\.L_save_##START##_r31c:								;\	prepare { START - r29, r31}, 4						;\	ctret									;\										;\	/* Restore saved registers, deallocate stack and return.  */		;\	/* Called via:	callt ctoff(__return_START_r31c).  */			;\	.align	2								;\.L_return_##START##_r31c:							;\	dispose 4, { START - r29, r31}, r31					;\										;\	/* Place the offsets of the start of these funcs into the call table. */;\	.call_table_data							;\										;\	.global	__callt_save_##START##_r31c					;\	.type	__callt_save_##START##_r31c,@function				;\__callt_save_##START##_r31c:    .short ctoff(.L_save_##START##_r31c )		;\										;\	.global	__callt_return_##START##_r31c					;\	.type	__callt_return_##START##_r31c,@function				;\__callt_return_##START##_r31c:  .short ctoff(.L_return_##START##_r31c )		#ifdef	L_callt_save_20	MAKE_CALLT_FUNCS (r20)#endif#ifdef	L_callt_save_21	MAKE_CALLT_FUNCS (r21)#endif#ifdef	L_callt_save_22	MAKE_CALLT_FUNCS (r22)#endif#ifdef	L_callt_save_23	MAKE_CALLT_FUNCS (r23)#endif#ifdef	L_callt_save_24	MAKE_CALLT_FUNCS (r24)#endif#ifdef	L_callt_save_25	MAKE_CALLT_FUNCS (r25)#endif#ifdef	L_callt_save_26	MAKE_CALLT_FUNCS (r26)#endif#ifdef	L_callt_save_27	MAKE_CALLT_FUNCS (r27)#endif#ifdef	L_callt_save_28	MAKE_CALLT_FUNCS (r28)#endif#ifdef	L_callt_save_29	MAKE_CALLT_FUNCS (r29)#endif#ifdef	L_callt_save_20c	MAKE_CALLT_CFUNCS (r20)#endif#ifdef	L_callt_save_21c	MAKE_CALLT_CFUNCS (r21)#endif#ifdef	L_callt_save_22c	MAKE_CALLT_CFUNCS (r22)#endif#ifdef	L_callt_save_23c	MAKE_CALLT_CFUNCS (r23)#endif#ifdef	L_callt_save_24c	MAKE_CALLT_CFUNCS (r24)#endif#ifdef	L_callt_save_25c	MAKE_CALLT_CFUNCS (r25)#endif#ifdef	L_callt_save_26c	MAKE_CALLT_CFUNCS (r26)#endif#ifdef	L_callt_save_27c	MAKE_CALLT_CFUNCS (r27)#endif#ifdef	L_callt_save_28c	MAKE_CALLT_CFUNCS (r28)#endif#ifdef	L_callt_save_29c	MAKE_CALLT_CFUNCS (r29)#endif	#ifdef	L_callt_save_31c	.call_table_text	.align	2	/* Allocate space and save register r31 on the stack.  */	/* Called via:	callt ctoff(__callt_save_r31c).  */.L_callt_save_r31c:	prepare {r31}, 4	ctret	/* Restore saved registers, deallocate stack and return.  */	/* Called via:	callt ctoff(__return_r31c).  */	.align	2.L_callt_return_r31c:	dispose 4, {r31}, r31		/* Place the offsets of the start of these funcs into the call table.  */	.call_table_data	.global	__callt_save_r31c	.type	__callt_save_r31c,@function__callt_save_r31c:	.short ctoff(.L_callt_save_r31c)	.global	__callt_return_r31c	.type	__callt_return_r31c,@function__callt_return_r31c:	.short ctoff(.L_callt_return_r31c)		#endif#endif /* __v850e__ *//*  libgcc2 routines for NEC V850.  *//*  Double Integer Arithmetical Operation.  */#ifdef L_negdi2	.text	.global ___negdi2	.type   ___negdi2, @function___negdi2:	not	r6, r10	add	1,  r10	setf	l,  r6	not	r7, r11	add	r6, r11	jmp	[lp]	.size ___negdi2,.-___negdi2#endif#ifdef L_cmpdi2	.text	.global ___cmpdi2	.type	___cmpdi2,@function___cmpdi2:	# Signed comparison bitween each high word.	cmp	r9, r7	be	.L_cmpdi_cmp_low	setf	ge, r10	setf	gt, r6	add	r6, r10	jmp	[lp].L_cmpdi_cmp_low:	# Unsigned comparigon bitween each low word.	cmp     r8, r6	setf	nl, r10	setf	h,  r6	add	r6, r10	jmp	[lp]		.size ___cmpdi2, . - ___cmpdi2	#endif#ifdef L_ucmpdi2	.text	.global ___ucmpdi2	.type	___ucmpdi2,@function___ucmpdi2:	cmp	r9, r7  # Check if each high word are same.	be	.L_ucmpdi_check_psw	cmp     r8, r6  # Compare the word..L_ucmpdi_check_psw:	setf	nl, r10 # 	setf	h,  r6  # 	add	r6, r10 # Add the result of comparison NL and comparison H.	jmp	[lp]		.size ___ucmpdi2, . - ___ucmpdi2#endif#ifdef L_muldi3	.text	.global ___muldi3	.type	___muldi3,@function___muldi3:#ifdef __v850__        jarl  __save_r26_r31, r10        addi  16,  sp, sp        mov   r6,  r28        shr   15,  r28        movea lo(32767), r0, r14        and   r14, r28        mov   r8,  r10        shr   15,  r10        and   r14, r10        mov   r6,  r19        shr   30,  r19        mov   r7,  r12        shl   2,   r12        or    r12, r19        and   r14, r19        mov   r8,  r13        shr   30,  r13        mov   r9,  r12        shl   2,   r12        or    r12, r13        and   r14, r13        mov   r7,  r11        shr   13,  r11        and   r14, r11        mov   r9,  r31        shr   13,  r31        and   r14, r31        mov   r7,  r29        shr   28,  r29        and   r14, r29        mov   r9,  r12        shr   28,  r12        and   r14, r12        and   r14, r6        and   r14, r8        mov   r6,  r14        mulh  r8,  r14        mov   r6,  r16        mulh  r10, r16        mov   r6,  r18        mulh  r13, r18        mov   r6,  r15        mulh  r31, r15        mulh  r12, r6        mov   r28,  r17        mulh  r10, r17        add   -16, sp        mov   r28,  r12        mulh  r8,  r12        add   r17, r18        mov   r28,  r17        mulh  r31, r17        add   r12, r16        mov   r28,  r12        mulh  r13, r12        add   r17, r6        mov   r19, r17        add   r12, r15        mov   r19, r12        mulh  r8,  r12        mulh  r10, r17        add   r12, r18        mov   r19, r12        mulh  r13, r12        add   r17, r15        mov   r11, r13        mulh  r8,  r13        add   r12, r6        mov   r11, r12        mulh  r10, r12        add   r13, r15        mulh  r29, r8        add   r12, r6        mov   r16, r13        shl   15,  r13        add   r14, r13        mov   r18, r12        shl   30,  r12        mov   r13, r26        add   r12, r26        shr   15,  r14        movhi hi(131071), r0,  r12        movea lo(131071), r12, r13        and   r13, r14        mov   r16, r12        and   r13, r12        add   r12, r14        mov   r18, r12        shl   15,  r12        and   r13, r12        add   r12, r14        shr   17,  r14        shr   17,  r16        add   r14, r16        shl   13,  r15        shr   2,   r18        add   r18, r15        add   r15, r16        mov   r16, r27        add   r8,  r6        shl   28,  r6        add   r6,  r27        mov   r26, r10        mov   r27, r11        jr    __return_r26_r31#endif /* __v850__ */#if defined(__v850e__) || defined(__v850ea__)	/*  (Ahi << 32 + Alo) * (Bhi << 32 + Blo) */	/*   r7           r6      r9         r8   */	mov  r8, r10	mulu r7, r8,  r0		/* Ahi * Blo */	mulu r6, r9,  r0		/* Alo * Bhi */	mulu r6, r10, r11		/* Alo * Blo */	add  r8, r11	add  r9, r11	jmp  [r31]#endif /* defined(__v850e__)  || defined(__v850ea__) */	.size ___muldi3, . - ___muldi3#endif

⌨️ 快捷键说明

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