# 3827 Homework 3, problem 1, "strspn"
#
# <your name here>
# <your uni here>
#
# Invoke with, e.g., spim -file strspn.s

	.text	
	# $a0 = string to search
	# $a1 = string of bytes to accept
	
	.globl strspan
strspan:
	# Put your solution here
	li	$v0, 0
	
	jr	$ra

##############################
#
# Test harness: extend to add tests
#
	
print_int = 1
print_string = 4

	.data

string1:
	.asciiz "Hello World!"
accept1:	
	.asciiz "Hloe"
accept2:
	.asciiz "H Wdelor"
accept3:
	.asciiz "!H Wdelor"
accept4:
	.asciiz "HHHHHHllllooo"
accept5:
	.asciiz "HHHHHHoooeeeelll"
accept6:
	.asciiz "HHHHHHoooeeeelll Wrld!"
accept7:
	.asciiz "HelWrld!"
string2:
	.asciiz ""

strspns:
	.asciiz "strspan(\""
comma:
	.asciiz "\", \""
equals:
	.asciiz "\") = "
nl:
	.asciiz "\n"
	
	.text

	# $a0 = string to search
	# $a1 = characters to skip
test:
	addi	$sp, $sp, -16
	sw	$ra, 0($sp)
	sw	$s0, 4($sp)
	sw	$s1, 8($sp)

	move	$s0, $a0
	move	$s1, $a1
	
	la	$a0, strspns
	li	$v0, print_string
	syscall

	move	$a0, $s0
	li	$v0, print_string
	syscall

	la	$a0, comma
	li	$v0, print_string
	syscall

	move	$a0, $s1
	li	$v0, print_string
	syscall

	la	$a0, equals
	li	$v0, print_string
	syscall

	move	$a0, $s0
	move	$a1, $s1
	jal	strspan

	move	$a0, $v0
	li	$v0, print_int
	syscall
	
	la	$a0, nl
	li	$v0, print_string
	syscall

	lw $ra, 0($sp)
	lw $s0, 4($sp)
	lw $s1, 8($sp)
	addi $sp, $sp, 16
	jr $ra
	
	.globl	main
main:
	move $s0, $ra

	# Call test function for each pair of input/accept strings
	
	la	$a0, string1
	la	$a1, accept1
	jal	test

	la	$a0, string1
	la	$a1, accept2
	jal	test

	la	$a0, string1
	la	$a1, accept3
	jal	test

	la	$a0, string1
	la	$a1, accept4
	jal	test

	la	$a0, string1
	la	$a1, accept5
	jal	test

	la	$a0, string1
	la	$a1, accept6
	jal	test

	la	$a0, string2
	la	$a1, string1
	jal	test

	la	$a0, string1
	la	$a1, string2
	jal	test

	la	$a0, string1
	la	$a1, string1
	jal	test

	la	$a0, string1
	la	$a1, accept7
	jal	test

	la	$a0, string2
	la	$a1, string2
	jal	test

	jr $s0
	
