In: Computer Science
int a = 1;
int b = 2;
if (a<b)
a=a+1;
b = b + a;
printf("The value of b is: %d", b);
int a = 2;
int b = 2;
if (a<b)
a=a+1;
else
a=a-1;
b = b + a;
printf("The value of b is: %d", b);
Answer:
Note: I am writing the given code in main() function and also included #include <stdio.h> header file for proper compilation.
1)
.LC0:
.ascii "The value of b is: %d\000"
main:
daddiu $sp,$sp,-48
sd $31,40($sp)
sd $fp,32($sp)
sd $28,24($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(main)))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(main)))
li $2,1 # 0x1
sw $2,0($fp)
li $2,2 # 0x2
sw $2,4($fp)
lw $3,0($fp)
lw $2,4($fp)
slt $2,$3,$2
beq $2,$0,.L2
nop
lw $2,0($fp)
addiu $2,$2,1
sw $2,0($fp)
.L2:
lw $3,4($fp)
lw $2,0($fp)
addu $2,$3,$2
sw $2,4($fp)
lw $2,4($fp)
move $5,$2
ld $2,%got_page(.LC0)($28)
daddiu $4,$2,%got_ofst(.LC0)
ld $2,%call16(printf)($28)
move $25,$2
1: jalr $25
nop
move $2,$0
move $sp,$fp
ld $31,40($sp)
ld $fp,32($sp)
ld $28,24($sp)
daddiu $sp,$sp,48
j $31
nop
2)
.LC0:
.ascii "The value of b is: %d\000"
main:
daddiu $sp,$sp,-48
sd $31,40($sp)
sd $fp,32($sp)
sd $28,24($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(main)))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(main)))
li $2,2 # 0x2
sw $2,0($fp)
li $2,2 # 0x2
sw $2,4($fp)
lw $3,0($fp)
lw $2,4($fp)
slt $2,$3,$2
beq $2,$0,.L2
nop
lw $2,0($fp)
addiu $2,$2,1
sw $2,0($fp)
b .L3
nop
.L2:
lw $2,0($fp)
addiu $2,$2,-1
sw $2,0($fp)
.L3:
lw $3,4($fp)
lw $2,0($fp)
addu $2,$3,$2
sw $2,4($fp)
lw $2,4($fp)
move $5,$2
ld $2,%got_page(.LC0)($28)
daddiu $4,$2,%got_ofst(.LC0)
ld $2,%call16(printf)($28)
move $25,$2
1: jalr $25
nop
move $2,$0
move $sp,$fp
ld $31,40($sp)
ld $fp,32($sp)
ld $28,24($sp)
daddiu $sp,$sp,48
j $31
nop