Question

In: Computer Science

Translate c++ code into mips assembly: int main() {                 cout << "Numbers:" << endl;            &nbs

Translate c++ code into mips assembly:

int main()

{

                cout << "Numbers:" << endl;

               

                int x[] = {18, 12, 6, 500, 54, 3, 2, 122};

                int i;

               

                for (i=0; i<8; i++)

                {

               

                                cout << x[i] << endl;

                }

                return 0;

}

below is my code:

.data   
    str1: .ascii "Numbers:"     str2: .ascii "\n"    x: .word 18,12,6,500,54,3,2,122      
.text                               

.global main
main:

la $a0, str1          
ori $v0, $0, 1          
syscall   


Exit:
ori $v0, $0, 10    
syscall

Solutions

Expert Solution

Converted Code: (MIPS)

main:
        daddiu  $sp,$sp,-80
        sd      $31,72($sp)
        sd      $fp,64($sp)
        sd      $28,56($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(.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

        ld      $5,%got_disp(_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)($28)
        move    $4,$2
        ld      $2,%call16(_ZNSolsEPFRSoS_E)($28)
        move    $25,$2
        nop

        ld      $2,%got_page(.LC0)($28)
        daddiu  $3,$2,%got_ofst(.LC0)
        ldl     $3,7($3)
        ldr     $3,%got_ofst(.LC0)($2)
        move    $5,$3
        daddiu  $3,$2,%got_ofst(.LC0)
        ldl     $4,15($3)
        ldr     $4,8($3)
        daddiu  $3,$2,%got_ofst(.LC0)
        ldl     $6,23($3)
        ldr     $6,16($3)
        move    $3,$6
        daddiu  $2,$2,%got_ofst(.LC0)
        ldl     $6,31($2)
        ldr     $6,24($2)
        move    $2,$6
        sd      $5,8($fp)
        sd      $4,16($fp)
        sd      $3,24($fp)
        sd      $2,32($fp)
        sw      $0,0($fp)
.L3:
        lw      $2,0($fp)
        slt     $2,$2,8
        beq     $2,$0,.L2
        nop

        lw      $2,0($fp)
        dsll    $2,$2,2
        daddu   $2,$fp,$2
        lw      $2,8($2)
        move    $5,$2
        ld      $4,%got_disp(_ZSt4cout)($28)
        ld      $2,%call16(_ZNSolsEi)($28)
        move    $25,$2
        nop

        ld      $5,%got_disp(_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)($28)
        move    $4,$2
        ld      $2,%call16(_ZNSolsEPFRSoS_E)($28)
        move    $25,$2
        nop

        lw      $2,0($fp)
        addiu   $2,$2,1
        sw      $2,0($fp)
        b       .L3
        nop

.L2:
        move    $2,$0
        move    $sp,$fp
        ld      $31,72($sp)
        ld      $fp,64($sp)
        ld      $28,56($sp)
        daddiu  $sp,$sp,80
        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,.L7
        nop

        lw      $3,4($fp)
        li      $2,65535                    # 0xffff
        bne     $3,$2,.L7
        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

.L7:
        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
Let me know if you have any doubts or if you need anything to change. 

If you are satisfied with the solution, please leave a +ve feedback : ) Let me know for any help with any other questions.

Thank You!
===========================================================================

Related Solutions

c++ programming What will the following C++ code display? int numbers[4]={99,87}; cout<<numbers[3]<<endl; 87                     &nbs
c++ programming What will the following C++ code display? int numbers[4]={99,87}; cout<<numbers[3]<<endl; 87                            b. 0                                  c. garbage                        d. an error What is the output of the following program segment? double mylist[5]; for(int i=0; i<5; i++) mylist[i]= (pow(i,2)+ 1 /2.0; cout<<fixed<<showpoint<<setprecision(2); for(int i=0; i<5; i++) { cout<<setw(5)<<mylist[i]; }               a. .5           1.5        4.5        9.5        16.5               b. 0.50      1.50      4.50      9.50     16.50              c. 0.50      1.50      8.50     27.50     64.50             d. 0.50      1.50      2.50      3.50      4.50      15. what is stored...
3. Translate the following C code to MIPS assembly code (in two separate files). int main()...
3. Translate the following C code to MIPS assembly code (in two separate files). int main() { printf(“before subroutine!\n”); Subfunc(); printf(“after subroutine!\n!”); } void Subfunc() {printf(“I am subroutine!\n”);} Submission file: Lab4_3a.asm for the main routine and Lab4_3b.asm for the sub-routine.
3. Translate the following C code to MIPS assembly code (in two separate files). int main()...
3. Translate the following C code to MIPS assembly code (in two separate files). int main() { printf(“before subroutine!\n”); Subfunc(); printf(“after subroutine!\n!”); } void Subfunc() {printf(“I am subroutine!\n”);} 4. Translate the following C code to MIPS assembly (in two separate files). Run the program step by step and observe the order of instructions being executed and the value of $sp. int main() { int x=2; z=Subfunc(x); printf(“Value of z is: %d”, z); } int Subfunc(int x) { return x+1;}
Translate the following C code to MIPS assembly. int a = 1; int b = 2;...
Translate the following C code to MIPS assembly. int a = 1; int b = 2; if (a<b)           a=a+1; b = b + a; printf("The value of b is: %d", b); Translate the following C code to MIPS assembly. 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);
convert following C++ code into MIPS assembly: int main() {                                 &
convert following C++ code into MIPS assembly: int main() {                                         int x[10], occur, count = 0;                                                              cout << "Type in array numbers:" << endl; for (int i=0; i<10; i++) // reading in integers                               { cin >> x[i];        } cout << "Type in occurrence value:" << endl;                                 cin >> occur;                                                 // Finding and printing out occurrence indexes in the array                                  cout << "Occurrences indices are:" <<...
Translate the following function f to MIPS assembly code. int f(int a, int b, int c,...
Translate the following function f to MIPS assembly code. int f(int a, int b, int c, int d) { return func(func(a,b), func(b+c,d)); } Assume the followings. • The prototype of function func is “int func(int a, int b);”. • You do not need to implement function func. The first instruction in function func is labeled “FUNC”. • In the implementation of function f, if you need to use registers $t0 through $t7, use the lower-numbered registers first. • In the...
Translate the following C code to MIPS assembly. The main function and subfunction are translated to...
Translate the following C code to MIPS assembly. The main function and subfunction are translated to two separate .asm files. Finish the assembly code segment for the above requirement. int main() { int x=2; int y=1; int z=0; z=Subfunc(x,y); printf(“Value of z is: %d”, z); } int Subfunc(int x, int y) { int t1=0; t1=x+y+100; return t1;} File 1: .data str: .asciiz "The value of z:" .text #.globl main main: addi $s0, $0,2 #x addi $s1, $0,1 #y addi $s2,...
Translate following pseudo-code to MIPS assembly language cout << “\n Please input a number for $s0”;...
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;
unsigned u =10; int i = -42; cout << i+i <<endl; cout << u+i<<endl;//if int take...
unsigned u =10; int i = -42; cout << i+i <<endl; cout << u+i<<endl;//if int take 32 bit, output 4294967264 I know when unsigned and singed operate together, they need to be converted, but why is the answer 4294967264? What does it have to do with int .…… 32 bit
2. Translate the following C/Java code to MIPS assembly code. Assume that the values of a,...
2. Translate the following C/Java code to MIPS assembly code. Assume that the values of a, i, and j are in registers $s0, $t0, and $t1, respectively. Assume that register $s2 holds the base address of the array A (add comments to your MIPS code). j = 0; for(i=0 ; i<a ; i++) A[i]=i+j++;
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT