|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Conditional: switch |
|
|
|
|
|
|
|
|
|
|
switch( i ) { |
|
|
|
|
case 1:
i++ ; |
// falls through |
|
|
|
|
case 2:
i += 2 ; |
|
$s1 |
i |
|
|
|
|
|
break; |
|
|
$s4 |
temp |
|
|
|
|
case 3:
i += 3 ; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
addi $s4, $zero, 1 |
# case 1: set temp to 1 |
|
|
|
bne $s1, $s4, C2_COND |
# false: branch to case 2 cond |
|
|
|
j C1_BODY |
|
# true: branch to case 1 body |
|
|
|
C2_COND: |
addi $s4, $zero, 2 |
# case 2: set temp to 2 |
|
|
|
|
bne $s1, $s4, C3_COND |
# false: branch to case 3 cond |
|
|
|
|
j C2_BODY |
|
# true: branch to case 2 body |
|
|
|
C3_COND: |
addi $s4, $zero, 3 |
# case 3: set temp to 3 |
|
|
|
|
bne $s1, $s4, EXIT |
# false: branch to exit |
|
|
|
|
j C3_BODY |
|
# true: branch to case 3 body |
|
|
|
C1_BODY: |
addi $s1, $s1, 1 |
|
# case 1 body: i++ |
|
|
|
|
C2_BODY: |
addi $s1, $s1, 2 |
|
# case 2 body: i += 2 |
|
|
|
|
|
j EXIT |
|
# break |
|
|
|
|
C3_BODY: |
addi $s1, $s1, 3 |
|
# case 3 body: i += 3 |
|
|
|
|
EXIT: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|