switchExample: ;this implementation assumes that all destinations end in jr ra, so you'll need to arrive here with JAL switchExample. ;$t0 = index (must be a multiple of 4 or the program counter will jump to a location that's not guaranteed to properly return.) la cases,$t1 addiu $t1,$t0 ;MIPS can't do variable indexed offsetting so we have to add the offset ourselves. lw $t8,($t1) ;dereference the pointer, $t8 contains the address we wish to "call" nop jr $t8 ;jump to the selected destination. nop cases: .word foo .word bar .word baz foo: ;code goes here jr ra bar: ;code goes here jr ra baz: ;code goes here jr ra