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

📄 fx4.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/// fx4 -- get symbol.globl	getsym.globl	getid.globl	lookid.globl	chrtab.globl	lookup.globl	error.globl	geti.globl	holround/ getsym returns the next basic symbol/ 0	name	(symbol table entry in r3)/ 2	number	(type in r3)/ 4	**/ 6	// 8	*/ 10	-/ 12	+/ 14	.lt./ 16	.le./ 18	.eq./ 20	.ne./ 22	.gt./ 24	.ge./ 26	.not./ 28	.and./ 30	.or./ 32	(/ 34	)/ 36	,/ 38	=/ 40	=|/getsym:	mov	r2,-(sp)	mov	r1,r2	jsr	r5,lookup; bastab		br 1f	mov	r2,r1	cmp	r0,$4	bhis	2f	asr	r0	add	$'0,r0	movb	r0,symbuf	movb	$12,symbuf+1	clrb	symbuf+2	mov	$logcon,r3		/ logical*2	mov	$2,r02:	cmp	r0,$32.	bne	2f/ check for possible complex constant	mov	r1,-(sp)	movb	-2(r1),r0	movb	chrtab(r0),r0	beq	4f	cmp	r0,$4	blos	3f4:	jsr	r5,srconst		br 3f	mov	r3,r2	cmpb	(r1)+,$',	bne	3f	jsr	r5,srconst		br 3f	cmp	r3,r2	bhis	4f	mov	r2,r34:	cmpb	(r1)+,$')	bne	3f	mov	(sp)+,r1	mov	$symbuf,r24:	movb	(r1)+,(r2)	cmpb	(r2)+,$')	bne	4b	clrb	-(r2)	mov	$2,r0	br	2f3:	mov	(sp)+,r1	mov	$32.,r02:	mov	(sp)+,r2	rts	r51:	clr	lstchr	cmp	r1,$line	blos	1f	movb	-1(r1),lstchr1:	mov	$symbuf,r2	movb	(r1)+,r0	movb	r0,(r2)+	bic	$!177,r0	movb	chrtab(r0),r0	jmp	*1f(r0)1:	eos	let	num	pereos:	mov	$40.,r0	tstb	-(r1)	beq	2b	jsr	r5,error; 8.	br	2blet:	dec	r1	jsr	r5,getid		br .+2		/ cannot happen	jsr	r5,lookid; symbuf	mov	(sp)+,r2	clr	r0	rts	r5num:	mov	$intcon,r3	/ integer*4	jsr	r5,numst	cmpb	(r1),$'.	bne	2f	mov	r2,-(sp)	mov	r1,r2	jsr	r5,lookup; bastab		br 1f	mov	(sp)+,r2	br	3f1:	mov	(sp)+,r2	movb	(r1)+,(r2)+	br	1f2:	cmpb	(r1),$'h		/ hollerith const?	bne	2f	mov	lstchr,r0	cmpb	chrtab(r0),$2		/ letter?	beq	2f			/ not h, then	cmp	r0,$'*	beq	2f			/ e.g. real*4 h...	clrb	(r2)	jsr	r5,geti	mov	$symbuf,r2	inc	r1	mov	holround,-(sp)	dec	(sp)	clr	-(sp)4:	movb	(r1)+,(r2)+	bne	5f	jsr	r5,error; 55.	br	6f5:	inc	(sp)	dec	r0	bgt	4b6:	bit	(sp),2(sp)	beq	6f	movb	$' ,(r2)+	inc	(sp)	br	6b6:	mov	(sp)+,r3	tst	(sp)+	swab	r3	clrb	r3	bis	$5,r3	mov	$2,r0	mov	(sp)+,r2	rts	r5.bsslstchr:	.=.+2.textper:	jsr	r5,isnum		br eos1:	mov	$realcon,r3	/ real*4	jsr	r5,numst2:	jsr	r5,expon3:	clrb	(r2)	mov	$2,r0	mov	(sp)+,r2	rts	r5isnum:	movb	(r1),r0	cmpb	chrtab(r0),$4	bne	1f	tst	(r5)+1:	rts	r5numst:	jsr	r5,isnum		br 1b	inc	r1	movb	r0,(r2)+	br	numstexpon:	cmpb	(r1)+,$'e	beq	1f	cmpb	-1(r1),$'d	beq	1f2:	dec	r1	rts	r51:	cmpb	(r1),$'+	beq	1f	cmpb	(r1),$'-	beq	1f	jsr	r5,isnum		br 2b1:	mov	$realcon,r3	/ real*4	cmpb	-(r1),$'e	beq	1f	mov	$dblcon,r3	/ real*81:	movb	(r1)+,(r2)+	movb	(r1)+,(r2)+	jsr	r5,numst	rts	r5getid:	mov	r0,-(sp)	mov	r2,-(sp)	movb	(r1),r0	cmpb	chrtab(r0),$2	bne	3f	tst	(r5)+	mov	$symbuf,r21:	movb	(r1)+,r0	movb	r0,(r2)+	movb	chrtab(r0),r0	cmp	r0,$2	beq	1b	cmp	r0,$4	beq	1b	dec	r1	clrb	(r2)	movb	$12,-(r2)3:	mov	(sp)+,r2	mov	(sp)+,r0	rts	r5lookid:	mov	r0,-(sp)	mov	r2,-(sp)2:	mov	(r5),r2	jsr	r5,lookup; namebuf		br 1f	asl	r0	asl	r0	mov	r0,r3	mov	(sp)+,r2	mov	(sp)+,r0	tst	(r5)+	rts	r51:	mov	namep,r0	add	$8.,symtp1:	movb	(r2)+,(r0)+	bne	1b	mov	r0,namep	cmp	r0,$enamebuf	bhis	1f	mov	symtp,r0	add	$symtab,r0	cmp	r0,esymp	blo	2b1:	mov	$1,r0	sys	write; ovfl; eovfl-ovfl	clr	r0	sys	seek; 0; 2	mov	$-1,r0	sys	exitovfl:	<Symbol table overflow\n>eovfl:.evensrconst:	cmpb	(r1)+,$'+	beq	1f	cmpb	-(r1),$'-	bne	1f	inc	r11:	jsr	r5,getsym	cmp	r0,$2	bne	1f	clrb	r3	add	r3,r3	bisb	$cplxcon,r3	tst	(r5)+1:	rts	r5chrtab:	.byte	0,0,0,0,0,0,0,0	.byte	0,0,0,0,0,0,0,0	.byte	0,0,0,0,0,0,0,0	.byte	0,0,0,0,0,0,0,0	.byte	0,0,0,0,0,0,0,0	.byte	0,0,0,0,0,0,6,0	.byte	4,4,4,4,4,4,4,4	.byte	4,4,0,0,0,0,0,0	.byte	0,2,2,2,2,2,2,2	.byte	2,2,2,2,2,2,2,2	.byte	2,2,2,2,2,2,2,2	.byte	2,2,2,0,0,0,0,0	.byte	0,2,2,2,2,2,2,2	.byte	2,2,2,2,2,2,2,2	.byte	2,2,2,2,2,2,2,2	.byte	2,2,2,0,0,0,0,0bastab:	<.false.\0>	<.true.\0>	<**\0>	</\0>	<*\0>	<-\0>	<+\0>	<.lt.\0>	<.le.\0>	<.eq.\0>	<.ne.\0>	<.gt.\0>	<.ge.\0>	<.not.\0>	<.and.\0>	<.or.\0>	<(\0>	<)\0>	<,\0>	<=\0>	<\0>

⌨️ 快捷键说明

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