在MIPS中实现switch case

时间:2014-01-12 13:39:44

标签: switch-statement mips

我正在尝试使用跳转表作为跳转到的标签数组来实现mips中的switch case:

    .data
JumpTable:
    .word L0, L1, L2, L3

    .text
    .globl main
main:
    la $t4, JumpTable      # address of JumpTable
    sll $t1, $s5, 2     # s5 is value of the variable witch we want to switch on it.
    add $t1, $t1, $t4 
    lw $t0, 0($t1)
    jr $t0

    L0:
        ...
    L1:
        ...
    L2:
        ...
    L3:
        ...

我的问题是,对于非顺序变量,有没有办法做到这一点?(如1,4,19,40)

1 个答案:

答案 0 :(得分:2)

您可以在表格中添加双打

.word L0, L0, L0, L0, L1, L2, L2, L2, L2, L2, L2, L3, ...

OR

使用条件分支。这取决于您的预期应用。