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

📄 setjmp.s

📁 Newlib 嵌入式 C库 标准实现代码
💻 S
字号:
	.global	_setjmp	.global	_longjmp#ifdef __Z8001__	segm#ifdef __STD_CALL___setjmp:	ldl	rr6,rr14(#4)	! get argument	ldl	rr2,@rr14	! fetch pc	ldl	@rr6,rr2	! save it	ldl	rr6(#16),rr8	ldl	rr6(#4),rr10	ldl	rr6(#8),rr12	! remember frame pointer	ldl	rr6(#12),rr14	! remember stack pointer	ldk	r7,#0	ret	t_longjmp:	ldl	rr4,rr14(#4)	! get first argument	ld	r7,rr14(#8)	! get return value	ldl	rr8,rr4(#16)	ldl	rr10,rr4(#4)	ldl	rr12,rr4(#8)	! restore old frame pointer	ldl	rr14,rr4(#12)	! restore old stack pointer	ldl	rr4,@rr4	! return address	inc	r15,#4	jp	@rr4#else /* above __STD_CALL_, below not */_setjmp:	ldl	rr2,@rr14	! fetch pc	ldl	@rr6,rr2	! save it	ldl	rr6(16),rr8	ldl	rr6(4),rr10	ldl	rr6(8),rr12	! and the other special regs	ldl	rr6(12),rr14	ldk	r2,#0	ret	t_longjmp:	ld	r2,r5		! get return value	ldl	rr4,rr6(0)	ldl	rr8,rr6(16)	ldl	rr10,rr6(4)	ldl	rr12,rr6(8)	ldl	rr14,rr6(12)	inc	r15,#4	jp	@rr4#endif  /* not __STD_CALL__ */#else /* above Z8001, below Z8002 */	unseg#ifdef __STD_CALL___setjmp:	ld	r7,r15(#2)	! get argument	ld	r2,@r15		! fetch pc	ld	@r7,r2		! save it	ldl	r7(#14),rr8	ldl	r7(#2),rr10	ldl	r7(#6),rr12	! remember frame pointer	ldl	r7(#10),rr14	! remember stack pointer	ldk	r7,#0	ret	t_longjmp:	ld	r4,r15(#2)	! get first argument (jmp_buf)	ld	r7,r15(#4)	! get return value	ldl	rr8,r4(#14)	ldl	rr10,r4(#2)	ldl	rr12,r4(#6)	! restore old frame pointer	ldl	rr14,r4(#10)	! restore old stack pointer	ld	r4,@r4		! return address	inc	r15,#2	jp	@r4#else /* above __STD_CALL_, below not */_setjmp:	ld	r2,@r15	! fetch pc	ld	@r7,r2	! save it	ldl	r7(4),rr10	ldl	r7(8),rr12	! and the other special regs	ldl	r7(12),rr14	ldk	r2,#0	ret	t	_longjmp:	ld	r2,r6		! get return value	ld	r4,@r7	ldl	rr10,r7(4)	ldl	rr12,r7(8)	ldl	rr14,r7(12)	inc	r15,#2	jp	@r4	#endif  /* not __STD_CALL__ */#endif  /* Z8002 version */

⌨️ 快捷键说明

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