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

📄 db1.s

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 S
字号:
/ db1 -- debuggerfpp = 0eae = 0ldfps = 170100^tstdb:	mov	sp,r5	mov	(r5)+,r4	tst	(r5)+	cmp	r4,$2	blt	1f	mov	(r5),dbfile	mov	(r5),odbfil	mov	(r5)+,namfil	cmp	r4,$2	beq	1f	mov	(r5)+,namfil1:	sys	open; dbfile: core; 0	bec	9f	jmp	fnfnd9:	mov	r0,dbfin	clr	dbfout	sys	open; odbfil:core; 1	bes	1f	mov	r0,dbfout1:	sys	open; namfil: a.out; 0	bes	1f	mov	r0,r1	mov	r0,symfin	sys	read; nambuf; 20	cmp	nambuf,nobjmagic	beq	2f	cmp	nambuf,objmagic	bne	1f2:	mov	nambuf+2,r0	/ text	add	nambuf+4,r0	/ data	cmp	nambuf+16,$1	/ relocation?	beq	6f	asl	r0		/ sym origin6:	add	$20,r0	mov	r0,0f	mov	r1,r0	sys	seek; 0:..; 0	mov	nambuf+10,r0	/ symbol size	cmp	r0,$maxsym	blos	3f	mov	$maxsym,r03:	add	r0,0f	sys	break; 0: nambuf	mov	r0,0f	mov	r1,r0	sys	read; nambuf; 0:..	add	$nambuf,r0	mov	r0,namsiz1:	jsr	r5,get; zero	/ test new object	cmp	r0,nobjmagic	beq	2f	cmp	r0,objmagic	bne	1f2:	mov	$20,getoff1:	mov	sp,savsp	sys	signal; 2; 1	ror	r0	bcs	1f	sys	signal; 2; errexit1:	cmp	r4,$2		/ arg count	beq	9f		/ not core image	cmp	r4,$4		/ no-core image flag	beq	9f	mov	$1024.,getoff	mov	dbfin,r0	sys	seek; 0; 0	mov	dbfin,r0	sys	read; regbuf; 1024.	mov	txtsiz,r0	ash	$6,r0	mov	r0,txtsiz	add	$17777,r0	bic	$17777,r0	mov	r0,rtxtsiz	mov	datsiz,r0	ash	$6,r0	mov	r0,datsiz	mov	stksiz,r0	ash	$6,r0	mov	r0,stksiz	mov	*locfpsr,r0	bic	$!200,r0	mov	r0,fpsr	br	loop9:loop:	clr	error	jsr	pc,readlin	jsr	pc,readexp	tst	error	bne	errexit	mov	$1,count	cmpb	r0,$',	bne	2f	movb	(r4)+,r0	mov	addres,-(sp)	mov	adrflg,-(sp)	jsr	pc,readexp	mov	addres,count	mov	(sp)+,adrflg	mov	(sp)+,addres	tst	error	bne	errexit2:	movb	(r4),r0	jsr	pc,command	tst	error	beq	looperrexit:	sys	signal; 2; errexit	mov	savsp,sp	jsr	r5,mesg; <?\n\0>; .even	br	loopfnfnd:	jsr	r5,mesg; <File not found.\n\0>; .evenex:	sys	exitreadlin:	mov	$inbuf,r41:	mov	ttyfin,r0	sys	read; ch; 1	tst	r0	beq	ex	cmpb	ch,$'\n	beq	1f	movb	ch,(r4)+	br	1b1:	clrb	(r4)	mov	$inbuf,r4	rts	pcswitch:	mov	(r5)+,r12:	cmp	r0,(r1)+	bne	1f	tst	(sp)+	jmp	*(r1)1:	tst	(r1)+	bne	2b	rts	r5readexp:	mov	$'+,lastop	clr	addres	clr	starmod	clr	taddr	clr	adrflgnextxp:	movb	(r4)+,r0	cmp	r0,$'0	blt	1f	cmp	r0,$'9	ble	numin	cmp	r0,$'a	blt	1f	cmp	r0,$'z	bgt	1f	jmp	letin1:	cmp	r0,$'a-40	blt	1f	cmp	r0,$'z-40	ble	letin1:	jsr	r5,switch; expsw	tstb	-(r4)	tst	starmod	beq	1f	mov	dot,taddr	br	operand1:	rts	pcexpsw:	'+;	opex	'-;	opex	' ;	nextxp	'.;	letin	'_;	letin	'^;	circumf	'*;	star	-1;	0star:	mov	pc,starmod	br	nextxpoperand:	inc	adrflg	tst	starmod	beq	1f	clr	starmod	bis	bytemod,error	jsr	r5,get; taddr	tst	error	bne	1f	mov	r0,taddr1:	cmp	lastop,$'+	beq	1f	sub	taddr,addres	br	2f1:	add	taddr,addres2:	mov	$'+,lastop	br	nextxpcircumf:	mov	dot,taddr	dec	taddr	tst	bytemod	bne	operand	dec	taddr	br	operandnumin:	clr	r1	clr	r31:	sub	$'0,r0	asl	r1	asl	r1	asl	r1	mpy	$10.,r3	bis	r0,r1	add	r0,r3	movb	(r4)+,r0	cmp	r0,$'0	blo	1f	cmp	r0,$'9	blos	1b1:	cmp	r0,$'.	bne	1f	mov	r3,r1	inc	r41:	mov	r1,taddr	dec	r4	br	operandletin:	dec	r4	mov	$nambuf,namstrtletin1:	mov	$symbol,r1	clr	(r1)+	clr	(r1)+	clr	(r1)+	clr	(r1)	mov	$symbol,r1	mov	$8.,-(sp)	br	2f1:	tstb	(r4)+	cmpb	(r4),$'.	beq	2f	cmpb	(r4),$'0	blo	3f	cmpb	(r4),$'9	blos	2f	cmpb	(r4),$'A	blo	3f	cmpb	(r4),$'Z	blos	2f	cmpb	(r4),$'_	beq	2f	cmpb	(r4),$'a	blo	3f	cmpb	(r4),$'z	bhi	3f2:	dec	(sp)	blt	1b	movb	(r4),(r1)+	br	1b3:	tst	(sp)+	jsr	pc,lookupn	tst	error	bne	1f	cmpb	(r4),$';	beq	2f1:	jmp	operand2:	tstb	(r4)+	mov	r1,namstrt	br	letin1opex:	mov	r0,lastop	jmp	nextxpcommand:	jsr	r5,switch; comsw	inc	error	rts	pccomsw:	'/;	slash	'\\;	bslash	'?;	quest	'\0;	newln	'^;	circumf	'=;	equal	':;	colon	'!;	excla	'';	squote	'";	dquote	'$;	dolr	'&;	amper	'%;	ex	'`;	grave	-1;	0dolr:	mov	sigp,r1	bic	$!17,r1	asl	r1	mov	traptab(r1),r1	jsr	pc,string	jsr	pc,pnl	mov	$doltab,r51:	mov	(r5)+,r1	beq	1f	jsr	pc,*(r5)+	br	1b	.if	fpp1:	mov	(r5)+,r1	beq	1f	ldfps	fpsr	jsr	pc,*(r5)+	br	1b1:	mov	(r5)+,r1	jsr	pc,*(r5)+	.endif1:	rts	pctraptab:	1f; .data; 1:<?0\0>; .text	1f; .data; 1:<Hangup\0>; .text	1f; .data; 1:<Interrupt\0>; .text	1f; .data; 1:<Quit\0>; .text	1f; .data; 1:<Illegal instruction\0>; .text	1f; .data; 1:<Trace/BPT\0>; .text	1f; .data; 1:<IOT\0>; .text	1f; .data; 1:<EMT\0>; .text	1f; .data; 1:<FP exception\0>; .text	1f; .data; 1:<Killed\0>; .text	1f; .data; 1:<Bus error\0>; .text	1f; .data; 1:<Segmentation violation\0>; .text	1f; .data; 1:<Bad system call\0>; .text	1f; .data; 1:<?15\0>; .text	1f; .data; 1:<?16\0>; .text	1f; .data; 1:<?17\0>; .textlocps:	regbuf+1776locpc:	regbuf+1774locr0:	regbuf+1772locr1:	regbuf+1766locr2:	regbuf+1750locr3:	regbuf+1752locr4:	regbuf+1754locsp:	regbuf+1764locr5:	regbuf+1756locfpsr: regbuf+4locfr0:	regbuf+6locfr4:	regbuf+16locfr5:	regbuf+26locfr1:	regbuf+36locfr2:	regbuf+46locfr3:	regbuf+56doltab:	1f; prgreg; locsp; .data; 1:<sp	\0>; .text	1f; proct; locps; .data; 1:<ps	\0>; .text	1f; prgreg; locpc; .data; 1:<pc	\0>; .text	1f; prgreg; locr0; .data; 1:<r0	\0>; .text	1f; prgreg; locr1; .data; 1:<r1	\0>; .text	1f; prgreg; locr2; .data; 1:<r2	\0>; .text	1f; prgreg; locr3; .data; 1:<r3	\0>; .text	1f; prgreg; locr4; .data; 1:<r4	\0>; .text	1f; prgreg; locr5; .data; 1:<r5	\0>; .text	0	.if	fpp	1f; prfreg; locfr0; .data; 1:<fr0	\0>; .text	1f; prfreg; locfr1; .data; 1:<fr1	\0>; .text	1f; prfreg; locfr2; .data; 1:<fr2	\0>; .text	1f; prfreg; locfr3; .data; 1:<fr3	\0>; .text	1f; prfreg; locfr4; .data; 1:<fr4	\0>; .text	1f; prfreg; locfr5; .data; 1:<fr5	\0>; .text	0	1f; proct; locfpsr; .data; 1:<fpsr	\0>; .text	.endif.data.even.text	.if	fppprfreg:	mov	*(r5)+,r4	movf	(r4),fr0	cfcc	beq	1f	jsr	pc,string	jsr	pc,printf	jsr	pc,pnl1:	rts	pc	.endifprgreg:	jsr	pc,string	mov	*(r5)+,r4	mov	(r4),r0	jsr	pc,printo	mov	(r4),r0	jsr	pc,lookupv	tst	r2	beq	1f	jsr	r5,mesg; <	\0>; .even	mov	(r4),r0	jsr	pc,pname1:	jsr	pc,pnl	rts	pcproct:	jsr	pc,string	mov	*(r5)+,r4	mov	(r4),r0	jsr	pc,printo	jsr	pc,pnl	rts	pcstring:	movb	(r1)+,r0	beq	1f	jsr	pc,putc	br	string1:	rts	pcputc:	mov	r0,och	mov	$1,r0	sys	write; och; 1	rts	pcequal:	jsr	r5,coleq; printo	rts	pcamper:	clr	bytemod	mov	$2,incdot	jsr	r5,cycle; asymp	rts	pcasymp:	jsr	pc,pname	jsr	pc,pnl	rts	pcbslash:	inc	bytemod	mov	$1,incdot	br	1fslash:	clr	bytemod	mov	$2,incdot1:	jsr	r5,cycle; octp	rts	pcgrave:	clr	bytemod	mov	$2,incdot	jsr	r5,cycle;  decp	rts	pcquest:	clr	bytemod	jsr	r5,cycle; psym	rts	pcdecp:	jsr	pc,printd	jsr	r5,mesg; <.\n\0>; .even	rts	pcoctp:	jsr	pc,printo	jsr	pc,pnl	rts	pcnewln:	tst	adrflg	bne	1f	add	incdot,dot1:	mov	nlcom,r0	jmp	commandexcla:	tst	adrflg	bne	1f2:	inc	error	rts	pc1:	bit	$1,dot	beq	1f	tst	bytemod	beq	2b1:	jsr	r5,put; dot; addres	rts	pcsquote:	inc	bytemod	mov	$1,incdot	br	2fdquote:	clr	bytemod	mov	$2,incdot2:	jsr	r5,cycle; ascp	rts	pcascp:	mov	r0,-(sp)	jsr	pc,ascp1	mov	(sp)+,r0	tst	bytemod	bne	1f	swab	r0	jsr	pc,ascp11:	cmp	count,$1	bgt	1f	jsr	pc,pnl1:	rts	pcascp1:	bic	$!377,r0	cmp	r0,$'\n	beq	2f	cmp	r0,$011	beq	2f	cmp	r0,$40	blo	1f	cmp	r0,$177	bhis	1f2:	jsr	pc,putc	rts	pc1:	mov	r0,r1	jsr	r5,mesg; <\\\0>	clr	r0	alsc	$10.,r0	add	$'0,r0	jsr	pc,putc	clr	r0	alsc	$3,r0	add	$'0,r0	jsr	pc,putc	clr	r0	alsc	$3,r0	add	$'0,r0	jsr	pc,putc	rts	pccolon:	jsr	r5,coleq; pname	rts	pccoleq:	jsr	pc,setadr	mov	addres,r0	jsr	pc,*(r5)+	jsr	pc,pnl	rts	r5cycle:	mov	r0,nlcom	jsr	pc,setadr	mov	addres,dot	tst	bytemod	bne	1f	bic	$1,dot1:	jsr	r5,get; dot	tst	error	bne	1f	tst	bytemod	beq	2f	bic	$!377,r02:	jsr	pc,*(r5)	tst	error	bne	1f	dec	count	ble	1f	add	incdot,dot	br	1b1:	tst	(r5)+	rts	r5setadr:	tst	adrflg	bne	1f	mov	dot,addres1:	rts	pc	.if	fppprintf:	ldfps	$200		/ round+double	mov	r4,-(sp)	mov	r3,-(sp)	movif	$10.,r3	movif	$1,r2	clr	r4	tstf	r0	cfcc	beq	2f	bge	1f	negf	r0	mov	$'-,r0	jsr	pc,putc1:	cmpf	r3,r0	cfcc	bgt	1f	inc	r4	divf	r3,r0	br	1b1:	cmpf	r2,r0	cfcc	ble	2f	dec	r4	mulf	r3,r0	br	1b2:	modf	r2,r0	movfi	r1,r0	add	$'0,r0	jsr	pc,putc	mov	$'.,r0	jsr	pc,putc	mov	$8.,r31:	modf	r3,r0	movfi	r1,r0	add	$'0,r0	jsr	pc,putc	dec	r3	bgt	1b	mov	$'E,r0	jsr	pc,putc	mov	r4,r0	mov	(sp)+,r3	mov	(sp)+,r4	br	printd	.endifprintd:	mov	r1,-(sp)	mov	r0,r1	bpl	1f	neg	r1	mov	$'-,r0	jsr	pc,putc1:	jsr	pc,1f	mov	(sp)+,r1	rts	pc1:	clr	r0	dvd	$10.,r0	mov	r1,-(sp)	mov	r0,r1	beq	1f	jsr	pc,1b1:	mov	(sp)+,r0	add	$'0,r0	jsr	pc,putc	rts	pc

⌨️ 快捷键说明

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