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

📄 clear.s,v

📁 用TCPIP进行网际互联源码
💻 S,V
字号:
head	1.1;access;symbols;locks	dls:1.1; strict;comment	@# @;1.1date	97.09.21.19.27.40;	author dls;	state Dist;branches;next	;desc@@1.1log@pre-3e code@text@|Clear memory: clear(p, n) writes n bytes of zeros, starting at p	.globl clear	.textclear:	movl	sp@@(4),d1	|p	movl	sp@@(8),d0	|n	jeq	7$		|nothing to do	addl	d0,d1		|&p[n]	movl	d1,a0		|save it	andl	#1,d1		|word aligned?	jeq	1$		|yes, potentially long moves	clrb	a0@@-		|clear up to word boundry	subql	#1,d0		|one less byte to clear	jeq	7$		|nothing left1$:	movl	d0,d1		|copy n	andl	#~0xFF,d1	|m = number of 256 byte blocks left * 256	jeq	3$		|none	subl	d1,d0		|we will do this many bytes in next loop	asrl	#8,d1		|number of blocks left	moveml	#0xFF7E,sp@@-	|save registers	movl	d1,sp@@-		|number of blocks goes on top of stack	movl	#zeros,a1	moveml	a1@@,#0x7CFF	|clear out a bunch of registers	movl	d0,a1		|and this one too2$:	moveml	#0xFF7E,a0@@-	|clear out 14 longs worth	moveml	#0xFF7E,a0@@-	|clear out 14 longs worth	moveml	#0xFF7E,a0@@-	|clear out 14 longs worth	moveml	#0xFF7E,a0@@-	|clear out 14 longs worth	moveml	#0xFF00,a0@@-	|clear out 8 longs worth, total of 256 bytes	subql	#1,sp@@		|one more block, any left?	jgt	2$		|yes, do another pass	movl	sp@@+,d1		|just pop stack	moveml	sp@@+,#0x7EFF	|give me back the registers3$:	movl	d0,d1		|copy n left	andl	#~3,d1		|this many longs left	jeq	5$		|none	subl	d1,d0		|do this many in next loop4$:	clrl	a0@@-		|clear a long's worth	subql	#4,d1		|this many bytes in a long	jgt	4$		|if there are more5$:	tstl	d0		|anything left?	jeq	7$		|no, just stop here6$:	clrb	a0@@-		|clear 1 byte's worth	subql	#1,d0		|one less byte to do	jgt	6$		|if any more7$:	rts			|that's itzeros:	.long	0,0,0,0,0,0,0,0,0,0,0,0,0	|13 long  of zeros@

⌨️ 快捷键说明

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