View Single Post
Go4Expert Member
7Oct2009,11:44  
final_semester's Avatar
k..now m stuck here

Code:
main: 
	li $a0, 3	# m = 3
	li $a1, 3	# n = 3
		
	jal ackermann		

	move $a0, $v0
	li $v0, 1
	syscall

	li	$v0, 10
	syscall

ackermann:
	
	addi $sp, $sp, -12		# creating space on the stack (3 columns)
	sw $a0, 4($sp)			# saving origional m
	sw $a1, 8($sp)			# saving origional n
	sw $ra, 0($sp)			# saving origional caller return address           ERROR ON THIS LINE
	
case_one:					# m = 0
	
	bne $a0, 0, case_two
	add $v0, $a1, 1
	
	j exit


case_two:					# n = 0

	bne $a1, 0, case_three
	addi $a0, $a0, -1
	li $a1, 1

	jal case_one


case_three:					 
		
	addi $a1, $a1, -1
	jal ackermann

	addi $a1, $v0, 0
	addi $a0, $a0, -1 
	
	jal case_one

exit:

	lw $ra, 0($sp)
	addi $sp, $sp, 12	
	jr $ra