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

📄 doprnt.s

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 S
字号:
/ C library -- conversionswidth=-8.formp=-10.rjust=-12.ndfnd=-14.ndigit=-16.zfill=-18..globl	__doprnt.globl	pfloat.globl	pscien.globl	pgen.globl	__strout.globl	csv.globl	cret__doprnt:	jsr	r5,csv	sub	$128.+12.,sp	mov	4(r5),formp(r5)		/ format	mov	6(r5),r4loop:	mov	sp,r3	mov	formp(r5),r12:	movb	(r1)+,r2	beq	2f	cmp	r2,$'%	beq	2f	movb	r2,(r3)+	br	2b2:	mov	r1,formp(r5)	cmp	r3,sp	beq	2f	mov	sp,r0	mov	8(r5),-(sp)	clr	-(sp)	mov	r3,-(sp)	sub	r0,(sp)	mov	r0,-(sp)	jsr	pc,__strout	add	$8,sp2:	tst	r2	bne	2f	jmp	cret2:	mov	sp,r32:	clr	rjust(r5)	clr	ndigit(r5)	mov	$' ,zfill(r5)	cmpb	*formp(r5),$'-	bne	2f	inc	formp(r5)	inc	rjust(r5)2:	cmpb	*formp(r5),$'0	bne	2f	mov	$'0,zfill(r5)2:	jsr	r3,gnum	mov	r1,width(r5)	clr	ndfnd(r5)	cmp	r0,$'.	bne	1f	jsr	r3,gnum	mov	r1,ndigit(r5)1:	mov	$swtab,r11:	mov	(r1)+,r2	bne	2f	movb	r0,(r3)+	jmp	prbuf2:	cmp	r0,(r1)+	bne	1b	jmp	(r2)	.dataswtab:	decimal;	'd	octal;		'o	hex;		'x	float;		'f	scien;		'e	general;	'g	charac;		'c	string;		's	longorunsg;	'l	longorunsg;	'L	unsigned;	'u	remote;		'r	long;		'D	loct;		'O	lhex;		'X	lunsigned;	'U	0;  0	.textgeneral:	mov	ndigit(r5),r0	mov	ndfnd(r5),r2	jsr	pc,pgen	jbr	prbuflongorunsg:	movb	*formp(r5),r0	inc	formp(r5)	cmp	r0,$'o	beq	loct	cmp	r0,$'x	beq	lhex	cmp	r0,$'d	beq	long	cmp	r0,$'u	beq	lunsigned	dec	formp(r5)	br	unsignedoctal:	clr	r0	br	1floct:	mov	(r4)+,r01:	mov	$8.,r2	br	2fhex:	clr	r0	br	1flhex:	mov	(r4)+,r01:	mov	$16.,r22:	mov	(r4)+,r1	br	computedecimal:	mov	(r4)+,r1	sxt	r0	bmi	3f	br	2funsigned:	clr	r0	br	1flong:	mov	(r4)+,r0	bge	1f	mov	(r4)+,r13:	neg	r0	neg	r1	sbc	r0	movb	$'-,(r3)+	br	2flunsigned:	mov	(r4)+,r01:	mov	(r4)+,r12:	mov	$10.,r2// Algorithm courtesy Keith Davis/compute:	mov	r5,-(sp)	mov	r4,-(sp)	mov	r0,r4	mov	ndigit(r5),r0	mov	r1,r5	ashc	$0,r4	beq	1f	tst	r0	beq	1f	movb	$'0,(r3)+1:	jsr	pc,1f	mov	(sp)+,r4	mov	(sp)+,r5	br	prbuf1:	clr	r0	mov	r4,r1	beq	2f	div	r2,r0	mov	r0,r4	mov	r1,r02:	mov	r5,r1	asl	r2	div	r2,r0	asr	r2	asl	r0	cmp	r2,r1	bgt	2f	sub	r2,r1	inc	r02:	mov	r1,-(sp)	mov	r0,r5	bne	2f	tst	r4	beq	1f2:	jsr	pc,1b1:	mov	(sp)+,r0	add	$'0,r0	cmp	r0,$'9	ble	1f	add	$'a-'0-10.,r01:	movb	r0,(r3)+	rts	pc	charac:	mov	$' ,zfill(r5)	mov	(r4)+,r0	bic	$!377,r0	beq	prbuf	movb	r0,(r3)+	br	prbufstring:	mov	$' ,zfill(r5)	mov	ndigit(r5),r1	mov	(r4),r2	mov	r2,r3	bne	1f	mov	$nulstr,r2	mov	r2,r3	mov	r2,(r4)1:	tstb	(r2)+	beq	1f	inc	r3	sob	r1,1b1:	mov	(r4)+,r2	br	prstrfloat:	mov	ndigit(r5),r0	mov	ndfnd(r5),r2	jsr	pc,pfloat	br	prbufscien:	mov	ndigit(r5),r0	inc	r0	tst	ndfnd(r5)	bne	1f	mov	$7,r01:	mov	pc,r2	jsr	pc,pscien	br	prbufremote:	mov	(r4)+,r4	mov	(r4)+,formp(r5)	jmp	loopprbuf:	mov	sp,r2prstr:	sub	r2,r3	mov	width(r5),r1	sub	r3,r1	bge	1f	clr	r11:	tst	rjust(r5)	bne	1f	neg	r11:	mov	zfill(r5),-(sp)	mov	8(r5),-(sp)	mov	r1,-(sp)	mov	r3,-(sp)	mov	r2,-(sp)	jsr	pc,__strout	add	$10.,sp	jmp	loopgnum:	clr	ndfnd(r5)	clr	r11:	movb	*formp(r5),r0	inc	formp(r5)	sub	$'0,r0	cmp	r0,$'*-'0	bne	2f	mov	(r4)+,r0	br	3f2:	cmp	r0,$9.	bhi	1f3:	inc	ndfnd(r5)	mul	$10.,r1	add	r0,r1	br	1b1:	add	$'0,r0	rts	r3.datanulstr:	<(null)\0>

⌨️ 快捷键说明

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