# 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