In: Computer Science
Translate following pseudo-code to MIPS assembly language
cout << “\n Please input a number for $s0”;
cin >> $s0;
cout << “\n Please input a number for $s1”;
cin >> $s1;
cout << “\n Please input a number for $s2”;
cin >> $s2;
$t0 = $s0 / 8 - 2 * $s1 + $s2;
cout << “\n the Value of the expression “$s0 / 8 - 2 * $s1 + $s2” is ”;
cout >> $t0;
return;
C++ Program of Given Pseudo Code ::---
#include <iostream>
using namespace std;
int main( ) {
int $s0,$s1,$s2,$t0;
cout << "\nPlease input a number for $s0";
cin >> $s0;
cout << "\nPlease input a number for $s1";
cin >> $s1;
cout << "\nPlease input a number for $s2";
cin >> $s2;
$t0 = $s0 / 8 - 2 * $s1 + $s2;
cout << "\nthe value of the expression is <<";
cout << $t0;
return 0;
}
MIPS ASSEMBLY CODE OF GIVEN C++ CODE ::---
.LC0:
.ascii "\012Please input a number for $s0\000"
.LC1:
.ascii "\012Please input a number for $s1\000"
.LC2:
.ascii "\012Please input a number for $s2\000"
.LC3:
.ascii "\012the value of the expression is <<\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)))
ld $2,%got_page(.LC0)($28)
daddiu $5,$2,%got_ofst(.LC0)
ld $4,%got_disp(_ZSt4cout)($28)
ld $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28)
move $25,$2
nop
daddiu $2,$fp,4
move $5,$2
ld $4,%got_disp(_ZSt3cin)($28)
ld $2,%call16(_ZNSirsERi)($28)
move $25,$2
nop
ld $2,%got_page(.LC1)($28)
daddiu $5,$2,%got_ofst(.LC1)
ld $4,%got_disp(_ZSt4cout)($28)
ld $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28)
move $25,$2
nop
daddiu $2,$fp,8
move $5,$2
ld $4,%got_disp(_ZSt3cin)($28)
ld $2,%call16(_ZNSirsERi)($28)
move $25,$2
nop
ld $2,%got_page(.LC2)($28)
daddiu $5,$2,%got_ofst(.LC2)
ld $4,%got_disp(_ZSt4cout)($28)
ld $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28)
move $25,$2
nop
daddiu $2,$fp,12
move $5,$2
ld $4,%got_disp(_ZSt3cin)($28)
ld $2,%call16(_ZNSirsERi)($28)
move $25,$2
nop
lw $2,4($fp)
bgez $2,.L2
nop
addiu $2,$2,7
.L2:
sra $2,$2,3
move $3,$2
lw $2,8($fp)
sll $2,$2,1
subu $2,$3,$2
move $3,$2
lw $2,12($fp)
addu $2,$3,$2
sw $2,0($fp)
ld $2,%got_page(.LC3)($28)
daddiu $5,$2,%got_ofst(.LC3)
ld $4,%got_disp(_ZSt4cout)($28)
ld $2,%call16(_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc)($28)
move $25,$2
nop
lw $2,0($fp)
move $5,$2
ld $4,%got_disp(_ZSt4cout)($28)
ld $2,%call16(_ZNSolsEi)($28)
move $25,$2
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
__static_initialization_and_destruction_0(int, int):
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(__static_initialization_and_destruction_0(int, int))))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(__static_initialization_and_destruction_0(int, int))))
move $3,$4
move $2,$5
sll $3,$3,0
sw $3,0($fp)
sll $2,$2,0
sw $2,4($fp)
lw $3,0($fp)
li $2,1 # 0x1
bne $3,$2,.L6
nop
lw $3,4($fp)
li $2,65535 # 0xffff
bne $3,$2,.L6
nop
ld $2,%got_page(_ZStL8__ioinit)($28)
daddiu $4,$2,%got_ofst(_ZStL8__ioinit)
ld $2,%call16(_ZNSt8ios_base4InitC1Ev)($28)
move $25,$2
nop
ld $6,%got_disp(__dso_handle)($28)
ld $2,%got_page(_ZStL8__ioinit)($28)
daddiu $5,$2,%got_ofst(_ZStL8__ioinit)
ld $4,%got_disp(_ZNSt8ios_base4InitD1Ev)($28)
ld $2,%call16(__cxa_atexit)($28)
move $25,$2
nop
.L6:
nop
move $sp,$fp
ld $31,40($sp)
ld $fp,32($sp)
ld $28,24($sp)
daddiu $sp,$sp,48
j $31
nop
_GLOBAL__sub_I_main:
daddiu $sp,$sp,-32
sd $31,24($sp)
sd $fp,16($sp)
sd $28,8($sp)
move $fp,$sp
lui $28,%hi(%neg(%gp_rel(_GLOBAL__sub_I_main)))
daddu $28,$28,$25
daddiu $28,$28,%lo(%neg(%gp_rel(_GLOBAL__sub_I_main)))
li $5,65535 # 0xffff
li $4,1 # 0x1
ld $2,%got_page(__static_initialization_and_destruction_0(int, int))($28)
daddiu $2,$2,%got_ofst(__static_initialization_and_destruction_0(int, int))
move $25,$2
nop
move $sp,$fp
ld $31,24($sp)
ld $fp,16($sp)
ld $28,8($sp)
daddiu $sp,$sp,32
j $31
nop
Thankyou :)