# A simple program to demonstrate jump tables.  It also demonstrates reading in a number.
# Written by Scott D. Anderson, 10/9/96

	.text
	.globl main
main:
	nop
	nop

#
# This code corresponds roughly to the following C code:
#  int i
#  i << cin
#  if ( i > 4 ) exit
#  switch (i)
#   0:	print("hello")
#	break
#   1:	print("bonjour")
#	break
#   2:	print("guten Dag")
#	break
#   3:	print("buenos dias")
#	break
#   4:	print("hey")
#	break
	
	.data
jumps:	.word label0
	.word label1
	.word label2
	.word label3
	.word label4
	.text
			# System call to read an integer. 
	li $v0 5        # Use $v0 to say "read int" and it's put into $v0
	syscall
	
	li $t0,4
	bgt $v0,$t0,done  # exit if $v0 > 4
	sll $t1,$v0,2
	lw $t2, jumps($t1)
	jr $t2

	.data
str0:	.asciiz "Hello"	
	.text
label0:	la $a0, str0
	li $v0, 4
	syscall
	j done

	.data
str1:	.asciiz "Bonjour"
	.text
label1:	la $a0, str1
	li $v0, 4
	syscall
	j done

	.data
str2:	.asciiz "guten Dag"
	.text
label2:	la $a0, str2
	li $v0, 4
	syscall
	j done

	
	.data
str3:	.asciiz "buenos dias"
	.text
label3:	la $a0, str3
	li $v0, 4
	syscall
	j done

	.data
str4:	.asciiz "hey"
	.text
label4:	la $a0, str4
	li $v0, 4
	syscall
	j done

done:		
#
# Done !!!
#
	jr $31		# Return from main

