UNIX版本6的源代码

源代码在线查看: printf.s

软件大小: 1654 K
上传用户: lz0324
关键词: UNIX 版本 源代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				/ C library -- printf												.globl	_printf								.globl	pfloat				.globl	pscien				.globl	_putchar								.globl	csv				.globl	cret								_printf:					jsr	r5,csv					sub	$126.,sp					mov	4(r5),formp		/ format					mov	r5,r4					add	$6,r4			/ arglist				loop:					movb	*formp,r0					beq	1f					inc	formp					cmp	r0,$'%					beq	2f				3:					mov	r0,(sp)					jsr	pc,*$_putchar					br	loop				1:					jmp	cret				2:					clr	rjust					clr	ndigit					cmpb	*formp,$'-					bne	2f					inc	formp					inc	rjust				2:					jsr	r3,gnum					mov	r1,width					clr	ndfnd					cmp	r0,$'.					bne	1f					jsr	r3,gnum					mov	r1,ndigit				1:					mov	sp,r3					add	$4,r3					mov	$swtab,r1				1:					mov	(r1)+,r2					beq	3b					cmp	r0,(r1)+					bne	1b					jmp	(r2)					.data				swtab:					decimal;	'd					octal;		'o					hex;		'x					float;		'f					scien;		'e					charac;		'c					string;		's					logical;	'l					remote;		'r					0;  0					.text								decimal:					mov	(r4)+,r1					bge	1f					neg	r1					movb	$'-,(r3)+					br	1f								logical:					mov	(r4)+,r1				1:					jsr	pc,1f					br	prbuf				1:					clr	r0					div	$10.,r0					mov	r1,-(sp)					mov	r0,r1					beq	1f					jsr	pc,1b				1:					mov	(sp)+,r0					add	$'0,r0					movb	r0,(r3)+					rts	pc								charac:					movb	(r4)+,(r3)+					bne	1f					dec	r3				1:					movb	(r4)+,(r3)+					bne	prbuf					dec	r3					br	prbuf								string:					mov	ndigit,r1					clr	r3					mov	(r4),r2				1:					tstb	(r2)+					beq	1f					inc	r3					sob	r1,1b				1:					mov	(r4)+,r2					br	prstr								hex:					mov	$1f,r2					.data				1:					-4; !17					.text					br	2f								octal:					mov	$1f,r2					.data				1:					-3; !7					.text				2:					mov	(r4)+,r1					beq	2f					tst	ndigit					beq	2f					movb	$'0,(r3)+				2:					clr	r0					jsr	pc,1f					br	prbuf				1:					mov	r1,-(sp)					ashc	(r2),r0					beq	1f					jsr	pc,1b				1:					mov	(sp)+,r0					bic	2(r2),r0					add	$'0,r0					cmp	r0,$'9					ble	1f					add	$'A-'0-10.,r0				1:					movb	r0,(r3)+					rts	pc								float:					mov	ndigit,r0					mov	ndfnd,r2					jsr	pc,pfloat					br	prbuf								scien:					mov	ndigit,r0					mov	ndfnd,r2					jsr	pc,pscien					br	prbuf								remote:					mov	(r4)+,r4					mov	(r4)+,formp					jmp	loop								prbuf:					mov	sp,r2					add	$4,r2					sub	r2,r3				prstr:					mov	r4,-(sp)					mov	$' ,-(sp)					mov	r3,r4					neg	r3					add	width,r3					ble	1f					tst	rjust					bne	1f				2:					jsr	pc,*$_putchar					sob	r3,2b				1:					tst	r4					beq	2f				1:					movb	(r2)+,(sp)					jsr	pc,*$_putchar					sob	r4,1b				2:					tst	r3					ble	1f					mov	$' ,(sp)				2:					jsr	pc,*$_putchar					sob	r3,2b				1:					tst	(sp)+					mov	(sp)+,r4					jmp	loop								gnum:					clr	ndfnd					clr	r1				1:					movb	*formp,r0					inc	formp					sub	$'0,r0					cmp	r0,$'*-'0					bne	2f					mov	(r4)+,r0					br	3f				2:					cmp	r0,$9.					bhi	1f				3:					inc	ndfnd					mul	$10.,r1					add	r0,r1					br	1b				1:					add	$'0,r0					rts	r3								.bss				width:	.=.+2				formp:	.=.+2				rjust:	.=.+2				ndfnd:	.=.+2				ndigit:	.=.+2							

相关资源