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

Subversion Repositories raptor64

[/] [raptor64/] [trunk/] [software/] [sample code/] [sieve.s] - Rev 46

Compare with Previous | Blame | View Log

	code
	align	16
my_org:
	     			org	0x100800200
		db	"BOOT"
		jmp	crt_start
		.align 8
sp_save:
		dw	0
		fill.b	0x0200,0xff
L_1:
L_0:
main:
	subui	sp,sp,#24
	sw   	bp,[sp]
	sw   	xlr,8[sp]
	sw   	lr,16[sp]
	lea  	xlr,L_5
	mov  	bp,sp
	subui	sp,sp,#12800040
	subui	sp,sp,#56
	sw   	r11,[sp]
	sw   	r12,8[sp]
	sw   	r13,16[sp]
	sw   	r14,24[sp]
	sw   	r15,32[sp]
	sw   	r16,40[sp]
	sw   	r17,48[sp]
	ori  	r15,r0,#-1
	lea  	r3,-12000016[bp]
	mov  	r16,r3
;		lw		r1,#0x17
;		mov		r2,sp
;		syscall	#410
		lw		r1,#0xAB
		outb	r1,0xdc0600
 
	call 	get_tick
	mov  	r3,r1
	mov  	r17,r3
	     			lw		r1,#0xAC
		outb	r1,0xdc0600
		lw		r1,#0x17
		mov		r2,sp
		syscall	#410
	subui	sp,sp,#8
	fip
	nop
	nop
	nop
	nop
	sw   	r4,[sp]
;	fip
		lw		r1,#0xAE
		outb	r1,0xdc0600
	nop
	nop
	nop
	nop
	nop
	subui	sp,sp,#16
	fip
	nop
	nop
	nop
	nop
	nop
	sw   	r17,8[sp]
	fip
	nop
	nop
	nop
	nop
	nop
	ori  	r3,r0,#L_0
	fip
	nop
	nop
	nop
	nop
	nop
	sw   	r3,[sp]
	nop
	nop
	nop
	nop
	nop
		lw		r1,#0xAE
		outb	r1,0xdc0600
	wait
	call 	printf
	addui	sp,sp,#16
	lw   	r4,[sp]
	addui	sp,sp,#8
	mov  	r3,r1
	     			lw		r1,#0xAD
		outb	r1,0xdc0600
		cli
 
	ori  	r3,r0,#1500000
	mov  	r14,r3
	ori  	r3,r0,#0
	mov  	r11,r3
L_6:
	bge  	r11,r14,L_7
	add  	r3,r11,#2
	sw   	r3,[r16+r11*8]
	addui	r11,r11,#1
	bra  	L_6
L_7:
	ori  	r3,r0,#0
	mov  	r11,r3
L_8:
	bge  	r11,r14,L_9
	lw   	r3,[r16+r11*8]
	beq  	r3,r15,L_10
	lw   	r3,[r16+r11*8]
	shli 	r4,r3,#1
	sub  	r3,r4,#2
	mov  	r12,r3
L_12:
	bge  	r12,r14,L_13
	sw   	r15,[r16+r12*8]
	lw   	r3,[r16+r11*8]
	add  	r12,r12,r3
	bra  	L_12
L_13:
L_10:
	addui	r11,r11,#1
	bra  	L_8
L_9:
	ori  	r3,r0,#0
	mov  	r12,r3
	ori  	r3,r0,#0
	mov  	r11,r3
L_14:
	bge  	r11,r14,L_15
	bge  	r12,#100000,L_15
	lw   	r3,[r16+r11*8]
	beq  	r3,r15,L_16
	lw   	r3,[r16+r11*8]
	add  	r12,r12,#1
	lea  	r4,-12800016[bp]
	sw   	r3,[r4+r12*8]
L_16:
	addui	r11,r11,#1
	bra  	L_14
L_15:
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	call 	get_tick
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r3,r1
	mov  	r13,r3
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#16
	sub  	r3,r13,r17
	sw   	r3,8[sp]
	ori  	r3,r0,#L_0
	sw   	r3,[sp]
	call 	printf
	addui	sp,sp,#16
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r3,r1
	ori  	r3,r0,#0
	mov  	r11,r3
L_18:
	bge  	r11,#100000,L_19
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#16
	lea  	r3,-12800016[bp]
	lw   	r4,[r3+r11*8]
	sw   	r4,8[sp]
	ori  	r4,r0,#L_0
	sw   	r4,[sp]
	call 	printf
	addui	sp,sp,#16
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r4,r1
	addui	r11,r11,#1
	bra  	L_18
L_19:
	ori  	r1,r0,#0
L_20:
	lw   	r17,48[sp]
	lw   	r16,40[sp]
	lw   	r15,32[sp]
	lw   	r14,24[sp]
	lw   	r13,16[sp]
	lw   	r12,8[sp]
	lw   	r11,[sp]
	addui	sp,sp,#56
	mov  	sp,bp
	lw   	bp,[sp]
	lw   	xlr,8[sp]
	lw   	lr,16[sp]
	ret  	#24
L_5:
	lw   	lr,8[bp]
	sw   	lr,16[bp]
	bra  	L_20
printf:
	     			lw		r1,#0xB0
		outb	r1,0xdc0600
	subui	sp,sp,#24
	sw   	bp,[sp]
	sw   	xlr,8[sp]
	sw   	lr,16[sp]
	lea  	xlr,L_21
	mov  	bp,sp
	subui	sp,sp,#8
	subui	sp,sp,#24
	sw   	r11,[sp]
	sw   	r12,8[sp]
	sw   	r13,16[sp]
	lw   	r3,24[bp]
	mov  	r12,r3
	ori  	r13,r0,#putch
	     			lw		r1,#0xAE
		outb	r1,0xdc0600
 
	lea  	r3,24[bp]
	mov  	r11,r3
L_22:
	lc   	r3,[r12]
	beq  	r3,r0,L_23
	lc   	r3,[r12]
	bne  	r3,#37,L_24
	addui	r12,r12,#2
	lc   	r3,[r12]
	sext16	r3,r3
	or   	r1,r3,r0
	beq  	r1,#37,L_27
	beq  	r1,#99,L_28
	beq  	r1,#100,L_29
	beq  	r1,#115,L_30
	bra  	L_26
L_27:
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#8
	ori  	r3,r0,#37
	sw   	r3,[sp]
	jal  	lr,[r13]
	addui	sp,sp,#8
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r3,r1
	bra  	L_26
L_28:
	addui	r11,r11,#8
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#8
	lw   	r3,[r11]
	sw   	r3,[sp]
	jal  	lr,[r13]
	addui	sp,sp,#8
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r3,r1
	bra  	L_26
L_29:
	addui	r11,r11,#8
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#8
	lw   	r3,[r11]
	sw   	r3,[sp]
	call 	putnum
	addui	sp,sp,#8
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r3,r1
	bra  	L_26
L_30:
	addui	r11,r11,#8
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#8
	lw   	r3,[r11]
	sw   	r3,[sp]
	call 	putstr
	addui	sp,sp,#8
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r3,r1
	bra  	L_26
L_26:
	bra  	L_25
L_24:
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#8
	lc   	r3,[r12]
	sext16	r3,r3
	sw   	r3,[sp]
	jal  	lr,[r13]
	addui	sp,sp,#8
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	mov  	r3,r1
L_25:
	addui	r12,r12,#2
	bra  	L_22
L_23:
L_31:
	lw   	r13,16[sp]
	lw   	r12,8[sp]
	lw   	r11,[sp]
	addui	sp,sp,#24
	mov  	sp,bp
	lw   	bp,[sp]
	lw   	xlr,8[sp]
	lw   	lr,16[sp]
	ret  	#24
L_21:
	lw   	lr,8[bp]
	sw   	lr,16[bp]
	bra  	L_31
putch:
	subui	sp,sp,#24
	sw   	bp,[sp]
	mov  	bp,sp
	     			lw		r1,#0xAF
		outb	r1,0xdc0600
 
	     			lw		r1,#0x0a
		lw		r2,24[bp]
		lw		r3,#1
		syscall	#410
 
	     			lw		r1,#0xB0
		outb	r1,0xdc0600
 
L_33:
	mov  	sp,bp
	lw   	bp,[sp]
	ret  	#24
L_32:
putnum:
	subui	sp,sp,#24
	sw   	bp,[sp]
	mov  	bp,sp
	     			lw		r1,#0xB1
		outb	r1,0xdc0600
 
	     			lw		r1,#0x15
		lw		r2,24[bp]
		lw		r3,#5
		syscall	#410
 
	     			lw		r1,#0xB2
		outb	r1,0xdc0600
 
L_35:
	mov  	sp,bp
	lw   	bp,[sp]
	ret  	#24
L_34:
putstr:
	subui	sp,sp,#24
	sw   	bp,[sp]
	mov  	bp,sp
	     			lw		r1,#0x14
		lw		r2,24[bp]
		syscall	#410
 
L_37:
	mov  	sp,bp
	lw   	bp,[sp]
	ret  	#24
L_36:
get_tick:
	subui	sp,sp,#24
	sw   	bp,[sp]
	mov  	bp,sp
	     			lw		r1,#0
		syscall	#416
 
L_39:
	mov  	sp,bp
	lw   	bp,[sp]
	ret  	#24
L_38:
crt_start:
	subui	sp,sp,#24
	sw   	bp,[sp]
	sw   	xlr,8[sp]
	sw   	lr,16[sp]
	lea  	xlr,L_41
	mov  	bp,sp
	     			lw		r1,#0xAA
		outb	r1,0xdc0600
		sw		sp,sp_save
		lw		sp,#0x1_07FFFFF8
		lw		r1,#0x17
		mov		r2,sp
		syscall	#410
		lea		xlr,prog_abort
		call	main
		lw		sp,sp_save
		bra		retcode
prog_abort:
 
	subui	sp,sp,#16
	sw   	r4,8[sp]
	sw   	r5,[sp]
	subui	sp,sp,#8
	ori  	r3,r0,#L_0
	sw   	r3,[sp]
	call 	putstr
	addui	sp,sp,#8
	lw   	r4,8[sp]
	lw   	r5,[sp]
	addui	sp,sp,#16
	     			lw	sp,sp_save
retcode:
 
L_42:
	mov  	sp,bp
	lw   	bp,[sp]
	lw   	xlr,8[sp]
	lw   	lr,16[sp]
	ret  	#24
L_41:
	lw   	lr,8[bp]
	sw   	lr,16[bp]
	bra  	L_42
	align	8
L_40:
	dc	80,114,111,103,114,97,109,32
	dc	97,98,111,114,116,101,100,32
	dc	97,98,110,111,114,109,97,108
	dc	108,121,46,0
L_4:
	dc	37,100,10,0
L_3:
	dc	67,108,111,99,107,32,116,105
	dc	99,107,115,32,37,100,13,10
	dc	0
L_2:
	dc	83,116,97,114,116,32,116,105
	dc	99,107,32,37,100,13,10,0
;	global	putch
;	global	get_tick
;	global	my_org
;	global	printf
;	global	main
;	global	putnum
;	global	putstr
;	global	crt_start
 

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.