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

📄 f23.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/// f23 -- do equivalence statements.globl	equiv.globl	getsym.globl	consub.globl	eqvtab.globl	error.globl	declimpl.globl	perror.globl	setln.globl	getln/ equivalence statements, part 1/ destroys all registersequiv:	jsr	r5,setln1:	jsr	r5,getln		rts r5	cmp	r0,$'e	bne	1b	mov	$line+11.,r1	mov	r5,-(sp)2:				/ start equivalence group	cmpb	(r1)+,$'(		/ check (	bne	9f			/ syntax error	jsr	r5,getsym	tst	r0	bne	9f			/ not identifier	mov	r3,r5	jsr	r5,equset	movb	(r1)+,r2	clr	r4			/ offset	cmp	r2,$',	beq	3f	cmp	r2,$'(			/ subscripted vble	bne	9f			/ syntax error	jsr	r5,consub		/ get subscript	mov	r0,r4	cmpb	(r1)+,$',	bne	9f3:					/ rest of group	jsr	r5,getsym		/ next ident	tst	r0	bne	9f			/ syntax	jsr	r5,equset	clr	r0	mov	r3,r2	cmpb	(r1),$'(		/ subscript?	bne	4f	inc	r1	jsr	r5,consub4:	mov	eqvtab+2(r2),r2	cmp	r2,r5	beq	5f			/ already in same group	cmp	r2,r3	bne	4b			/ not yet in different group	sub	r4,r0			/ adjust offsets	sub	eqvtab+4(r5),r0		/ left vble's offset	add	eqvtab+4(r3),r0		/ new vble's offset4:	sub	r0,eqvtab+4(r2)	mov	eqvtab+2(r2),r2	cmp	r2,r3	bne	4b	mov	eqvtab+2(r3),r0		/ link up groups	mov	eqvtab+2(r5),eqvtab+2(r3)	mov	r0,eqvtab+2(r5)		/ link groups	br	6f5:					/ here already in same group	cmp	r0,r4			/ offset must be same	beq	6f	jsr	r5,error; 23.		/ inconsistency!6:	movb	(r1)+,r0	cmp	r0,$',	beq	3b	cmp	r0,$')	bne	9f	movb	(r1)+,r0	bne	3f	jsr	r5,perror	mov	(sp)+,r5	br	1b3:	cmp	r0,$',	beq	2b9:	jsr	r5,error; 24.		/ equivalence syntax	jsr	r5,perror	mov	(sp)+,r5	br	1b/ initialize member of equivalence groupequset:	jsr	r5,declimpl		/ declare if necessary	mov	symtab(r3),r0	bit	$200,r0			/ test parameter	bne	2f	bic	$!70,r0	cmp	r0,$10			/ simple	beq	1f	cmp	r0,$20			/ array	beq	1f2:	jsr	r5,error;  31.		/ non-equivalencable variable1:	tst	eqvtab+2(r3)		/ see if mentioned yet	bne	1f	mov	r3,eqvtab+2(r3)		/ points to itself1:	rts	r5

⌨️ 快捷键说明

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