Translate this code into MIPS64 assembly language Addresses
Translate this code into MIPS64 assembly language.
Addresses: a@800, b@808, c@816
double a, b, c;
…
if( a!=b && a>50 ) c = 1;
else c = 0;
Solution
main:
daddiu $sp,$sp,-48
sd $fp,40($sp)
move $fp,$sp
lui $3,%hi(%neg(%gp_rel(main)))
daddu $3,$3,$25
daddiu $3,$3,%lo(%neg(%gp_rel(main)))
ldc1 $f1,8($fp)
ldc1 $f0,16($fp)
c.eq.d $fcc0,$f1,$f0
bc1t $fcc0,.L2
nop
ldc1 $f1,8($fp)
ld $2,%got_page(.LC0)($3)
ldc1 $f0,%got_ofst(.LC0)($2)
c.lt.d $fcc1,$f0,$f1
bc1f $fcc1,.L2
nop
ld $2,%got_page(.LC1)($3)
ldc1 $f0,%got_ofst(.LC1)($2)
sdc1 $f0,24($fp)
b .L4
nop
.L2:
sd $0,24($fp)
.L4:
move $2,$0
move $sp,$fp
ld $fp,40($sp)
daddiu $sp,$sp,48
j $31
nop
