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

📄 f47.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/// f47 -- analysis of data statements.globl	cdata.globl	dodata.globl	onedata.globl	compare.globl	code.globl	getcon.globl	error.globl	getsym.globl	consub.globl	size.globl	geti.globl	setln.globl	getln.globl	declimpl.globl	evalcon.globl	dattab.globl	contab.globl	efno.globl	perror.globl	qsort.globl	negflg.globl	repfact.globl	geti.globl	holroundcdata:	mov	r5,-(sp)	jsr	r5,setln	mov	$dattab,r4	mov	$contab,r5dloop:	jsr	r5,getln		br 2f	br	1f2:	mov	r4,-(sp)	mov	$dattab,r1	mov	r4,r2	mov	$8.,r3	jsr	pc,qsort	mov	(sp)+,r4	mov	(sp)+,r5	rts	r51:	cmp	r0,$'d	bne	dloop	mov	$line+4,r1/ loop per specification-set1:	clr	repfact	mov	r1,r22:	jsr	r5,getsym	cmp	r0,$40.		/ =|	bne	3f8:	jmp	8f9:	jmp	9f3:	cmp	r0,$6		/ /	bne	2b	mov	r1,-(sp)	mov	r2,r1	mov	(sp)+,r2/ loop per specification2:	cmp	r4,r5	blo	3f	jmp	7f3:	jsr	r5,getsym	tst	r0	bne	8b	bit	$70,symtab(r3)		/ test classed	bne	3f	jsr	r5,declimpl3:	mov	symtab(r3),r0	mov	r0,holquo		/ temp storage	incb	holquo+1		/ round size	bicb	$1,holquo+1	bit	$200,r0			/ test parameter	bne	9b	bic	$!70,r0	cmp	r0,$10			/ simple	beq	3f	cmp	r0,$20			/ array	bne	9b3:	bit	$100,symtab(r3)		/ test common	beq	3f	cmp	progt,$6		/ test block data	bne	9b	mov	symtab+4(r3),(r4)+	/ common block	br	4f3:	cmp	progt,$6		/ test block data	beq	9b	clr	(r4)+	tst	symtab+6(r3)		/ test allocated	bne	4f	mov	nxtaloc,symtab+6(r3)	jsr	r5,size	add	r0,nxtaloc4:	clr	(r4)			/ offset slot	cmpb	(r1),$'(		/ test subscript	bne	3f	inc	r1	jsr	r5,consub	bic	$70,holquo	bis	$10,holquo	/ array -> scalar	mov	r0,(r4)3:	movb	symtab+1(r3),r0	/ width of item	inc	r0	bic	$1,r0	mov	r0,holround	add	symtab+6(r3),(r4)+	tst	repfact	beq	3f	dec	repfact	movb	efno+1,r3	mov	r3,(r4)+	mov	r5,(r4)+	br	4f3:	mov	r1,-(sp)	mov	r2,r1	mov	(sp)+,r25:	jsr	r5,getsym	cmp	r0,$2			/ constant	beq	3f	cmp	r0,$10.			/ -	bne	8f	inc	negflg	jsr	r5,getsym	cmp	r0,$2			/ constant	bne	8f3:	cmpb	(r1)+,$'*	bne	3f	cmp	r3,$intcon	bne	8f	jsr	r5,geti	dec	r0	bmi	8f	mov	r0,repfact	br	5b3:	dec	r1	mov	r1,-(sp)	mov	r2,-(sp)	mov	r3,efno	clrb	r3	swab	r3	mov	r3,(r4)+	sub	r3,r5	mov	r5,(r4)+		/ ptr to const	mov	r5,r3	mov	$symbuf,r1	jsr	r5,evalcon	clr	negflg	mov	(sp)+,r1	mov	(sp)+,r2		/ note r1 <=> r24:	cmpb	efno+1,holquo+1		/ compare sizes	blt	9f			/ constant too small	beq	3f	bicb	$!77,holquo	cmp	holquo,$int2con+10	/ simple int*2?	bne	4f	sub	$2,-4(r4)		/ reduce const length	cmpb	efno,$5	beq	3f			/ hollerith, OK	add	$2,-2(r4)		/ get least sig.	br	3f4:	bit	$20,holquo		/ test array	beq	9f	cmpb	efno,$5			/ test hollerith	bne	9f3:	cmpb	(r1),$'/	beq	3f	cmpb	(r1)+,$',	bne	8f	tst	repfact	bne	4f	cmpb	(r2)+,$',	bne	8f4:	jmp	2b3:	cmpb	(r2)+,$'/	bne	8f	tstb	(r2)	beq	1f	cmpb	(r2),$',	bne	3f	inc	r23:	mov	r2,r1	tst	repfact	bne	8f	jmp	1b7:	jsr	r5,error; 28.		/ data table overflow	br	2f8:	jsr	r5,error; 21.		/ data syntax error	br	2f9:	jsr	r5,error; 22.		/ data semantic error2:	mov	$dattab,r4		/ reset ptrs	mov	$contab,r5	jsr	r5,perror1:	jmp	dloopdodata:	cmp	progt,$6	beq	1f			/ block data	mov	$dattab,r3	cmp	r3,r4	bne	2f			/ is data	mov	nxtaloc,r0	jsr	r5,code		<.=.+%d.\n.text\n\0>; .even		r0	rts	r52:	jsr	r5,onedata	sub	nxtaloc,r1	neg	r1	blt	9b	jsr	r5,code		<.=.+%d.\n.text\n\0>; .even		r11:	rts	r5onedata:	clr	r12:	mov	2(r3),r0	sub	r1,r0	bmi	9f	beq	3f	jsr	r5,code		<.=.+%d.\n\0>; .even		r0	add	r0,r13:	mov	4(r3),r0	add	r0,r1	asr	r0	mov	r0,-(sp)	mov	6(r3),r23:	mov	(r2)+,r0	jsr	r5,code		<%o\n\0>; .even		r0	dec	(sp)	bne	3b	tst	(sp)+	add	$8.,r3	cmp	r3,r4	bhis	1f	cmp	(r3),-8(r3)		/ any more in this block	beq	2b1:	rts	r59:	clr	line	jsr	r5,error; 32.		/ overlapping data init	jsr	r5,perror	rts	r5/ comparison routine for qsortcompare:	cmp	(r0),(r4)	bne	1f	cmp	2(r0),2(r4)1:	rts	pc

⌨️ 快捷键说明

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