In: Computer Science
Convert the following C++ code into MIPS assembely. For testing I will be change the values for q,y,x with few different values.
//q -> $s0 //y -> $s1 //x -> $s2
int main(){
int q = 5;
int y = 17;
int x = 77;
if ( q < 10){
cout << "inside if";
} elseif ( x > 0 || y < 10) {
cout << "inside elseif";
} else {
cout << "inside else";
}
}
Note: Input values, statement data and label names are arbitrary. These can be changed according the user's choice. Please refer to code snippets for a better understanding of comments and indentations.
IDE Used: MARS
Program Code
.data
if_state : .asciiz "inside if"
elseif_state : .asciiz "inside elseif"
else_state : .asciiz "inside else"
.text
# initialise registers
li $s0, 11
li $s1, -1
li $s2, 77
# check if $s0 < 9, if true then branch to
# if segment
blt $s0, 9, if_seg
# elseif check $s1 > 0 or $s2 < 10
# if anyone true then branch to elseif segment
bgt $s1, 0, elseif_seg
blt $s2, 10, elseif_seg
# else directly branch to else segment
else_seg :
# print else statement
li $v0, 4
la $a0, else_state
syscall
# end the progrsm
li $v0, 10
syscall
# if segment label
if_seg :
# print the if
statement
li $v0, 4
la $a0, if_state
syscall
# end the progrsm
li $v0, 10
syscall
# elseif segment branch
elseif_seg :
# print the else if
statement
li $v0, 4
la $a0, elseif_state
syscall
# end the progrsm
li $v0, 10
syscall
Code Snippets


Sample Output Run
for $s0 = 5, $s1 = 17, $s2 = 77

for $s0 = 11, $s1 = -1, $s2 = 5

for $s0 = 11, $s1 = -1, $s2 = 77
