OpenCores
URL https://opencores.org/ocsvn/darkriscv/darkriscv/trunk

Subversion Repositories darkriscv

[/] [darkriscv/] [trunk/] [src/] [stdio.s] - Rev 2

Go to most recent revision | Compare with Previous | Blame | View Log

	.file	"stdio.c"
	.option nopic
	.text
	.align	2
	.globl	getchar
	.type	getchar, @function
getchar:
	lui	a5,%hi(io)
	addi	a5,a5,%lo(io)
.L2:
	lbu	a4,4(a5)
	andi	a4,a4,2
	beqz	a4,.L2
	lbu	a0,5(a5)
	ret
	.size	getchar, .-getchar
	.align	2
	.globl	putchar
	.type	putchar, @function
putchar:
	lui	a5,%hi(io)
	li	a4,10
	addi	a5,a5,%lo(io)
	bne	a0,a4,.L8
.L7:
	lbu	a4,4(a5)
	andi	a4,a4,1
	bnez	a4,.L7
	li	a4,13
	sb	a4,5(a5)
.L8:
	lbu	a4,4(a5)
	andi	a4,a4,1
	bnez	a4,.L8
	andi	a4,a0,0xff
	sb	a4,5(a5)
	mv	a0,a4
	ret
	.size	putchar, .-putchar
	.align	2
	.globl	gets
	.type	gets, @function
gets:
	addi	sp,sp,-24
	sw	s0,16(sp)
	sw	s1,12(sp)
	sw	ra,20(sp)
	mv	s1,a0
	mv	s0,a0
.L12:
	addi	a4,a1,-1
	beqz	a4,.L16
	sw	a1,4(sp)
	sw	a4,0(sp)
	call	getchar
	li	a3,10
	lw	a4,0(sp)
	lw	a1,4(sp)
	bne	a0,a3,.L13
.L16:
	li	a0,10
	call	putchar
	sb	zero,0(s0)
	bne	s0,s1,.L14
	li	s1,0
.L14:
	lw	ra,20(sp)
	lw	s0,16(sp)
	mv	a0,s1
	lw	s1,12(sp)
	addi	sp,sp,24
	jr	ra
.L13:
	sw	a1,8(sp)
	sw	a4,4(sp)
	li	a3,13
	sw	a0,0(sp)
	beq	a0,a3,.L16
	call	putchar
	lw	a5,0(sp)
	li	a3,8
	lw	a4,4(sp)
	lw	a1,8(sp)
	bne	a5,a3,.L17
	beq	s0,s1,.L18
	sb	zero,-1(s0)
	mv	a4,a1
	addi	s0,s0,-1
.L18:
	mv	a1,a4
	j	.L12
.L17:
	sb	a5,0(s0)
	addi	s0,s0,1
	j	.L18
	.size	gets, .-gets
	.align	2
	.globl	putstr
	.type	putstr, @function
putstr:
	addi	sp,sp,-12
	sw	s0,4(sp)
	sw	ra,8(sp)
	mv	s0,a0
	bnez	a0,.L24
	lui	s0,%hi(.LC2)
	addi	s0,s0,%lo(.LC2)
.L24:
	lbu	a0,0(s0)
	bnez	a0,.L26
	lw	ra,8(sp)
	lw	s0,4(sp)
	addi	sp,sp,12
	jr	ra
.L26:
	addi	s0,s0,1
	call	putchar
	j	.L24
	.size	putstr, .-putstr
	.align	2
	.globl	puts
	.type	puts, @function
puts:
	addi	sp,sp,-12
	sw	ra,8(sp)
	call	putstr
	lw	ra,8(sp)
	li	a0,10
	addi	sp,sp,12
	tail	putchar
	.size	puts, .-puts
	.globl	__udivsi3
	.globl	__umodsi3
	.align	2
	.globl	putdx
	.type	putdx, @function
putdx:
	addi	sp,sp,-84
	sw	a1,0(sp)
	lui	a1,%hi(.LANCHOR0)
	sw	s0,76(sp)
	sw	s1,72(sp)
	li	a2,44
	addi	s1,a1,%lo(.LANCHOR0)
	mv	s0,a0
	addi	a1,a1,%lo(.LANCHOR0)
	addi	a0,sp,28
	sw	ra,80(sp)
	call	memcpy
	li	a2,20
	addi	a1,s1,44
	addi	a0,sp,8
	call	memcpy
	lw	a4,0(sp)
	addi	a5,sp,8
	beqz	a4,.L32
	addi	a5,sp,28
.L32:
	li	s1,24
.L33:
	lw	a1,0(a5)
	bnez	a1,.L37
	lw	ra,80(sp)
	lw	s0,76(sp)
	lw	s1,72(sp)
	addi	sp,sp,84
	jr	ra
.L37:
	li	a4,1
	beq	a1,a4,.L34
	bgtu	a1,s0,.L35
.L34:
	lw	a3,0(sp)
	lui	a4,%hi(.LC3)
	sw	a5,4(sp)
	addi	a4,a4,%lo(.LC3)
	beqz	a3,.L36
	mv	a0,s0
	call	__udivsi3
	li	a1,10
	call	__umodsi3
	lui	a5,%hi(.LC3)
	addi	a4,a5,%lo(.LC3)
	add	a0,a4,a0
	lbu	a0,0(a0)
.L41:
	call	putchar
	lw	a5,4(sp)
.L35:
	addi	s1,s1,-8
	addi	a5,a5,4
	j	.L33
.L36:
	addi	a3,s1,4
	srl	a3,s0,a3
	andi	a3,a3,15
	add	a3,a4,a3
	lbu	a0,0(a3)
	call	putchar
	srl	a0,s0,s1
	lui	a5,%hi(.LC3)
	andi	a0,a0,15
	addi	a4,a5,%lo(.LC3)
	add	a4,a4,a0
	lbu	a0,0(a4)
	j	.L41
	.size	putdx, .-putdx
	.align	2
	.globl	putx
	.type	putx, @function
putx:
	li	a1,0
	tail	putdx
	.size	putx, .-putx
	.align	2
	.globl	putd
	.type	putd, @function
putd:
	li	a1,1
	tail	putdx
	.size	putd, .-putd
	.align	2
	.globl	printf
	.type	printf, @function
printf:
	addi	sp,sp,-36
	sw	a5,32(sp)
	addi	a5,sp,16
	sw	s0,8(sp)
	sw	ra,12(sp)
	sw	s1,4(sp)
	mv	s0,a0
	sw	a1,16(sp)
	sw	a2,20(sp)
	sw	a3,24(sp)
	sw	a4,28(sp)
	sw	a5,0(sp)
.L45:
	lbu	a0,0(s0)
	bnez	a0,.L51
	lw	ra,12(sp)
	lw	s0,8(sp)
	lw	s1,4(sp)
	addi	sp,sp,36
	jr	ra
.L51:
	li	a5,37
	addi	s1,s0,1
	bne	a0,a5,.L46
	lbu	a0,1(s0)
	li	a5,115
	bne	a0,a5,.L47
	lw	a5,0(sp)
	lw	a0,0(a5)
	addi	a4,a5,4
	sw	a4,0(sp)
	call	putstr
.L48:
	addi	s0,s1,1
	j	.L45
.L47:
	li	a5,120
	bne	a0,a5,.L49
	lw	a5,0(sp)
	lw	a0,0(a5)
	addi	a4,a5,4
	sw	a4,0(sp)
	call	putx
	j	.L48
.L49:
	li	a5,100
	bne	a0,a5,.L50
	lw	a5,0(sp)
	lw	a0,0(a5)
	addi	a4,a5,4
	sw	a4,0(sp)
	call	putd
	j	.L48
.L50:
	call	putchar
	j	.L48
.L46:
	call	putchar
	mv	s1,s0
	j	.L48
	.size	printf, .-printf
	.align	2
	.globl	strncmp
	.type	strncmp, @function
strncmp:
	addi	a2,a2,-1
	li	a5,0
.L55:
	add	a4,a0,a5
	lbu	a3,0(a4)
	add	a4,a1,a5
	lbu	a4,0(a4)
	beq	a5,a2,.L54
	beqz	a3,.L54
	beqz	a4,.L54
	addi	a5,a5,1
	beq	a3,a4,.L55
.L54:
	sub	a0,a3,a4
	ret
	.size	strncmp, .-strncmp
	.align	2
	.globl	strcmp
	.type	strcmp, @function
strcmp:
	li	a2,-1
	tail	strncmp
	.size	strcmp, .-strcmp
	.align	2
	.globl	strlen
	.type	strlen, @function
strlen:
	li	a5,0
.L65:
	add	a4,a0,a5
	lbu	a4,0(a4)
	beqz	a4,.L64
	addi	a5,a5,1
	add	a4,a0,a5
	bnez	a4,.L65
.L64:
	mv	a0,a5
	ret
	.size	strlen, .-strlen
	.align	2
	.globl	memcpy
	.type	memcpy, @function
memcpy:
	li	a5,0
.L72:
	bne	a5,a2,.L73
	ret
.L73:
	add	a4,a1,a5
	lbu	a3,0(a4)
	add	a4,a0,a5
	addi	a5,a5,1
	sb	a3,0(a4)
	j	.L72
	.size	memcpy, .-memcpy
	.align	2
	.globl	memset
	.type	memset, @function
memset:
	add	a2,a0,a2
	mv	a5,a0
.L75:
	bne	a5,a2,.L76
	ret
.L76:
	addi	a5,a5,1
	sb	a1,-1(a5)
	j	.L75
	.size	memset, .-memset
	.align	2
	.globl	strtok
	.type	strtok, @function
strtok:
	addi	sp,sp,-20
	sw	s0,12(sp)
	mv	s0,a0
	mv	a0,a1
	sw	s1,8(sp)
	sw	ra,16(sp)
	mv	s1,a1
	call	strlen
	mv	a3,a0
	bnez	s0,.L78
	lui	a5,%hi(nxt.1629)
	lw	s0,%lo(nxt.1629)(a5)
	beqz	s0,.L79
.L78:
	mv	a5,s0
.L80:
	lbu	a4,0(a5)
	bnez	a4,.L81
	lui	a5,%hi(nxt.1629)
	sw	zero,%lo(nxt.1629)(a5)
	j	.L79
.L81:
	mv	a2,a3
	mv	a0,a5
	mv	a1,s1
	sw	a3,4(sp)
	sw	a5,0(sp)
	call	strncmp
	lw	a5,0(sp)
	lw	a3,4(sp)
	addi	a4,a5,1
	bnez	a0,.L82
	sb	zero,0(a5)
	lui	a5,%hi(nxt.1629)
	sw	a4,%lo(nxt.1629)(a5)
.L79:
	mv	a0,s0
	lw	ra,16(sp)
	lw	s0,12(sp)
	lw	s1,8(sp)
	addi	sp,sp,20
	jr	ra
.L82:
	mv	a5,a4
	j	.L80
	.size	strtok, .-strtok
	.align	2
	.globl	atoi
	.type	atoi, @function
atoi:
	li	a3,0
	li	a5,0
	li	a2,45
.L88:
	bnez	a0,.L90
.L94:
	bnez	a3,.L91
.L87:
	mv	a0,a5
	ret
.L95:
	li	a3,1
	j	.L89
.L90:
	lbu	a4,0(a0)
	beqz	a4,.L94
	beq	a4,a2,.L95
	slli	a1,a5,3
	addi	a4,a4,-48
	add	a4,a4,a1
	slli	a5,a5,1
	add	a5,a4,a5
.L89:
	addi	a0,a0,1
	j	.L88
.L91:
	sub	a5,zero,a5
	j	.L87
	.size	atoi, .-atoi
	.align	2
	.globl	xtoi
	.type	xtoi, @function
xtoi:
	mv	a3,a0
	li	a2,57
	li	a0,0
.L97:
	beqz	a3,.L96
	lbu	a5,0(a3)
	bnez	a5,.L101
.L96:
	ret
.L101:
	slli	a4,a0,4
	bgtu	a5,a2,.L98
	addi	a5,a5,-48
.L105:
	add	a0,a5,a4
	addi	a3,a3,1
	j	.L97
.L98:
	andi	a5,a5,95
	addi	a5,a5,-55
	j	.L105
	.size	xtoi, .-xtoi
	.align	2
	.globl	mac
	.type	mac, @function
mac:
 #APP
# 271 "stdio.c" 1
	.word 0x00c5857F
# 0 "" 2
 #NO_APP
	ret
	.size	mac, .-mac
	.align	2
	.globl	__umulsi3
	.type	__umulsi3, @function
__umulsi3:
	mv	a5,a0
	bgeu	a0,a1,.L108
	mv	a5,a1
	mv	a1,a0
.L108:
	li	a0,0
.L109:
	bnez	a1,.L111
	ret
.L111:
	andi	a4,a1,1
	beqz	a4,.L110
	add	a0,a0,a5
.L110:
	slli	a5,a5,1
	srli	a1,a1,1
	j	.L109
	.size	__umulsi3, .-__umulsi3
	.align	2
	.globl	__mulsi3
	.type	__mulsi3, @function
__mulsi3:
	addi	sp,sp,-12
	sw	s1,0(sp)
	sw	ra,8(sp)
	sw	s0,4(sp)
	li	s1,0
	bgez	a0,.L116
	sub	a0,zero,a0
	li	s1,1
.L116:
	li	s0,0
	bgez	a1,.L117
	sub	a1,zero,a1
	li	s0,1
.L117:
	call	__umulsi3
	mv	a5,a0
	beq	s1,s0,.L115
	sub	a5,zero,a0
.L115:
	lw	ra,8(sp)
	lw	s0,4(sp)
	lw	s1,0(sp)
	mv	a0,a5
	addi	sp,sp,12
	jr	ra
	.size	__mulsi3, .-__mulsi3
	.align	2
	.globl	__udiv_umod_si3
	.type	__udiv_umod_si3, @function
__udiv_umod_si3:
	li	a5,1
	bnez	a1,.L126
.L125:
	mv	a0,a1
	ret
.L127:
	slli	a5,a5,1
	slli	a1,a1,1
.L126:
	bgtu	a0,a1,.L127
	mv	a4,a1
	li	a1,0
.L128:
	beqz	a0,.L130
	bnez	a5,.L131
.L130:
	bnez	a2,.L125
	mv	a1,a0
	j	.L125
.L131:
	bltu	a0,a4,.L129
	sub	a0,a0,a4
	add	a1,a1,a5
.L129:
	srli	a5,a5,1
	srli	a4,a4,1
	j	.L128
	.size	__udiv_umod_si3, .-__udiv_umod_si3
	.align	2
	.globl	__udivsi3
	.type	__udivsi3, @function
__udivsi3:
	li	a2,1
	tail	__udiv_umod_si3
	.size	__udivsi3, .-__udivsi3
	.align	2
	.globl	__umodsi3
	.type	__umodsi3, @function
__umodsi3:
	li	a2,0
	tail	__udiv_umod_si3
	.size	__umodsi3, .-__umodsi3
	.align	2
	.globl	__div_mod_si3
	.type	__div_mod_si3, @function
__div_mod_si3:
	beqz	a1,.L154
	addi	sp,sp,-16
	sw	s0,8(sp)
	sw	ra,12(sp)
	sw	s1,4(sp)
	mv	a5,a2
	li	s0,0
	bgez	a0,.L142
	sub	a0,zero,a0
	li	s0,1
.L142:
	li	s1,0
	bgez	a1,.L143
	sub	a1,zero,a1
	li	s1,1
.L143:
	mv	a2,a5
	sw	a5,0(sp)
	call	__udiv_umod_si3
	lw	a5,0(sp)
	mv	a1,a0
	beqz	a5,.L144
	beq	s0,s1,.L141
	sub	a1,zero,a0
.L141:
	lw	ra,12(sp)
	lw	s0,8(sp)
	lw	s1,4(sp)
	mv	a0,a1
	addi	sp,sp,16
	jr	ra
.L144:
	beqz	s0,.L141
	sub	a1,zero,a0
	j	.L141
.L154:
	mv	a0,a1
	ret
	.size	__div_mod_si3, .-__div_mod_si3
	.align	2
	.globl	__divsi3
	.type	__divsi3, @function
__divsi3:
	li	a2,1
	tail	__div_mod_si3
	.size	__divsi3, .-__divsi3
	.align	2
	.globl	__modsi3
	.type	__modsi3, @function
__modsi3:
	li	a2,0
	tail	__div_mod_si3
	.size	__modsi3, .-__modsi3
	.align	2
	.globl	usleep
	.type	usleep, @function
usleep:
	lui	a5,%hi(threads)
	lw	a4,%lo(threads)(a5)
	li	a5,1
	ble	a4,a5,.L171
	li	a4,-1
	lui	a5,%hi(utimers)
.L160:
	addi	a0,a0,-1
	bne	a0,a4,.L163
	ret
.L171:
	lui	a5,%hi(io)
	li	a3,-1
	addi	a5,a5,%lo(io)
	li	a2,-128
.L161:
	addi	a0,a0,-1
	bne	a0,a3,.L165
	ret
.L163:
	lw	a3,%lo(utimers)(a5)
.L162:
	lw	a2,%lo(utimers)(a5)
	beq	a2,a3,.L162
	j	.L160
.L165:
	sb	a2,3(a5)
.L164:
	lbu	a4,3(a5)
	andi	a4,a4,0xff
	beqz	a4,.L164
	j	.L161
	.size	usleep, .-usleep
	.section	.rodata
	.align	2
	.set	.LANCHOR0,. + 0
.LC0:
	.word	1000000000
	.word	100000000
	.word	10000000
	.word	1000000
	.word	100000
	.word	10000
	.word	1000
	.word	100
	.word	10
	.word	1
	.word	0
.LC1:
	.word	16777216
	.word	65536
	.word	256
	.word	1
	.word	0
	.section	.rodata.str1.4,"aMS",@progbits,1
	.align	2
.LC2:
	.string	"(NULL)"
	.zero	1
.LC3:
	.string	"0123456789abcdef"
	.section	.sbss,"aw",@nobits
	.align	2
	.type	nxt.1629, @object
	.size	nxt.1629, 4
nxt.1629:
	.zero	4
	.ident	"GCC: (GNU) 9.0.0 20180818 (experimental)"
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.