[prev] 9 [next]

Rendering C in MIPS: Conditional Statements (cont)

Example of if-then-else:

Standard C            Simplified C
------------------    ------------------
int x;
int y;
char z;
scanf("%d",&x);       x = getInt();
scanf("%d",&y);       y = getInt();
if (x == y) {         if (x != y) goto setN
   z = 'Y'                z = 'Y';
                          goto print;                         
} else {              setN:                         
   z = 'N';               z = 'N';
}                     print:  
putchar(z);               putchar(z);                                

    #int x is $t0
    #int y is $t1
    #char z is $a0

    li   $v0, 5         # x = getInt();
    syscall
    move $t0, $v0

    li   $v0, 5         # y = getInt();
    syscall
    move $t1, $v0

    bne  $t0, $t1, setN # if(x != y) goto setN
setY:
    li   $a0, 'Y'       # z = 'Y'
    j    print
setN:
    li   $a0, 'N'       # z = 'N'
    j    print          # redundant
print:
    li   $v0, 11        # putchar(z)
    syscall