1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
Phoenix [80]
3 years ago
5

Translate the following C++ program to MIPS assembly program. *Please explain each instruction of your code by a comment and sub

mit a .asm file*#include using namespace std; void myfunction(int arr[], int n) { int writes = 0; for(int start = 0; start <= n-2; start++){ int item = arr[start]; int pos = start; for(int i = start+1; i< n; i++) if (arr[i]
Computers and Technology
1 answer:
maw [93]3 years ago
5 0

Answer:

Check the explanation

Explanation:

ASM of MIPS gcc 5.4:

myfunction(int*, int):

       addiu   $sp,$sp,-56

       sw      $31,52($sp)

       sw      $fp,48($sp)

       move    $fp,$sp

       sw      $4,56($fp)

       sw      $5,60($fp)

       sw      $0,24($fp)

       sw      $0,28($fp)

$L16:

       lw      $2,60($fp)

       nop

       addiu   $3,$2,-2

       lw      $2,28($fp)

       nop

       slt     $2,$3,$2

       bne     $2,$0,$L17

       nop

       lw      $2,28($fp)

       nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $2,$3,$2

       lw      $2,0($2)

       nop

       sw      $2,44($fp)

       lw      $2,28($fp)

       nop

       sw      $2,32($fp)

       lw      $2,28($fp)

       nop

       addiu $2,$2,1

       sw      $2,36($fp)

$L5:

       lw      $3,36($fp)

       lw      $2,60($fp)

       nop

       slt     $2,$3,$2

       beq     $2,$0,$L3

       nop

       lw      $2,36($fp)

       nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $2,$3,$2

       lw      $3,0($2)

       lw      $2,44($fp)

       nop

       slt     $2,$3,$2

       beq     $2,$0,$L4

       nop

       lw      $2,32($fp)

       nop

       addiu   $2,$2,1

       sw      $2,32($fp)

$L4:

       lw      $2,36($fp)

       nop

       addiu   $2,$2,1

       sw      $2,36($fp)

       b       $L5

       nop

$L3:

       lw      $3,32($fp)

       lw      $2,28($fp)

       nop

       beq     $3,$2,$L18

       nop

$L6:

       lw      $2,32($fp)

       nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $2,$3,$2

       lw      $3,0($2)

       lw      $2,44($fp)

       nop

       bne     $3,$2,$L8

       nop

       lw      $2,32($fp)

       nop

       addiu   $2,$2,1

       sw      $2,32($fp)

       b       $L6

       nop

$L8:

       lw      $3,32($fp)

       lw      $2,28($fp)

       nop

       beq     $3,$2,$L9

       nop

       lw      $2,32($fp)

       nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $3,$3,$2

       addiu   $2,$fp,44

       move    $5,$3

       move    $4,$2

       jal     void std::swap<int>(int&, int&)

       nop

       lw      $2,24($fp)

       nop

       addiu   $2,$2,1

       sw      $2,24($fp)

$L9:

       lw      $3,32($fp)

       lw      $2,28($fp)

       nop

       beq     $3,$2,$L7

       nop

       lw      $2,28($fp)

       nop

       sw      $2,32($fp)

       lw      $2,28($fp)

       nop

       addiu   $2,$2,1

       sw      $2,40($fp)

$L13:

       lw      $3,40($fp)

       lw      $2,60($fp)

       nop

       slt     $2,$3,$2

       beq     $2,$0,$L11

       nop

       lw      $2,40($fp)

     nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $2,$3,$2

       lw      $3,0($2)

       lw      $2,44($fp)

       nop

       slt     $2,$3,$2

       beq     $2,$0,$L12

       nop

       lw      $2,32($fp)

       nop

       addiu   $2,$2,1

       sw      $2,32($fp)

$L12:

       lw      $2,40($fp)

       nop

       addiu   $2,$2,1

       sw      $2,40($fp)

       b       $L13

       nop

$L11:

       lw      $2,32($fp)

       nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $2,$3,$2

       lw      $3,0($2)

       lw      $2,44($fp)

       nop

       bne     $3,$2,$L14

       nop

       lw      $2,32($fp)

       nop

       addiu   $2,$2,1

       sw      $2,32($fp)

       b       $L11

       nop

$L14:

       lw      $2,32($fp)

       nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $2,$3,$2

       lw      $3,0($2)

       lw      $2,44($fp)

       nop

       beq     $3,$2,$L9

       nop

       lw      $2,32($fp)

       nop

       sll     $2,$2,2

       lw      $3,56($fp)

       nop

       addu    $3,$3,$2

       addiu   $2,$fp,44

       move    $5,$3

       move    $4,$2

       jal     void std::swap<int>(int&, int&)

       nop

       lw      $2,24($fp)

       nop

       addiu   $2,$2,1

       sw      $2,24($fp)

       b       $L9

       nop

$L18:

       nop

$L7:

       lw      $2,28($fp)

       nop

       addiu   $2,$2,1

       sw      $2,28($fp)

       b       $L16

       nop

$L17:

       nop

       move    $sp,$fp

       lw      $31,52($sp)

       lw      $fp,48($sp)

       addiu   $sp,$sp,56

       j       $31

       nop

$LC0:

       .ascii "array:\000"

$LC1:

       .ascii " \000"

main:

       addiu   $sp,$sp,-72

       sw      $31,68($sp)

       sw      $fp,64($sp)

       move    $fp,$sp

       li      $2,1                        # 0x1

       sw      $2,32($fp)

       li      $2,8                        # 0x8

       sw      $2,36($fp)

       li      $2,3                        # 0x3

       sw      $2,40($fp)

       li      $2,9                        # 0x9

       sw      $2,44($fp)

       li      $2,10                 # 0xa

       sw      $2,48($fp)

       li      $2,2                        # 0x2

       sw      $2,52($fp)

       li      $2,4                        # 0x4

       sw      $2,56($fp)

       li      $2,7                        # 0x7

       sw      $2,28($fp)

       addiu   $2,$fp,32

       lw      $5,28($fp)

       move    $4,$2

       jal     myfunction(int*, int)

       nop

       lui     $2,%hi($LC0)

       addiu   $5,$2,%lo($LC0)

       lui     $2,%hi(_ZSt4cout)

       addiu   $4,$2,%lo(_ZSt4cout)

       jal     std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

       nop

       move    $3,$2

       lui     $2,%hi(_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)

       addiu   $5,$2,%lo(_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)

       move    $4,$3

       jal     std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

       nop

       sw      $0,24($fp)

$L21:

       lw      $3,24($fp)

       lw      $2,28($fp)

       nop

       slt     $2,$3,$2

       beq     $2,$0,$L20

       nop

       lw      $2,24($fp)

       nop

       sll     $2,$2,2

       addiu   $3,$fp,24

       addu    $2,$3,$2

       lw      $2,8($2)

       nop

       move    $5,$2

       lui     $2,%hi(_ZSt4cout)

       addiu   $4,$2,%lo(_ZSt4cout)

       jal     std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

       nop

       move    $3,$2

       lui     $2,%hi($LC1)

       addiu   $5,$2,%lo($LC1)

       move    $4,$3

       jal     std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

       nop

       lw      $2,24($fp)

       nop

       addiu   $2,$2,1

       sw      $2,24($fp)

       b       $L21

       nop

$L20:

       move    $2,$0

       move    $sp,$fp

       lw      $31,68($sp)

       lw      $fp,64($sp)

       addiu   $sp,$sp,72

       j       $31

       nop

void std::swap<int>(int&, int&):

       addiu   $sp,$sp,-24

       sw      $fp,20($sp)

       move    $fp,$sp

       sw      $4,24($fp)

       sw      $5,28($fp)

       lw      $2,24($fp)

       nop

       lw      $2,0($2)

       nop

       sw      $2,8($fp)

       lw      $2,28($fp)

       nop

       lw      $3,0($2)

       lw      $2,24($fp)

       nop

       sw      $3,0($2)

       lw      $2,28($fp)

       lw      $3,8($fp)

       nop

       sw      $3,0($2)

       nop

       move    $sp,$fp

       lw      $fp,20($sp)

       addiu   $sp,$sp,24

       j       $31

       nop

__static_initialization_and_destruction_0(int, int):

       addiu   $sp,$sp,-32

       sw      $31,28($sp)

       sw      $fp,24($sp)

      move    $fp,$sp

       sw      $4,32($fp)

       sw      $5,36($fp)

       lw      $3,32($fp)

       li      $2,1                        # 0x1

       bne     $3,$2,$L26

       nop

       lw      $3,36($fp)

       li      $2,65535                    # 0xffff

       bne     $3,$2,$L26

       nop

       lui     $2,%hi(_ZStL8__ioinit)

       addiu   $4,$2,%lo(_ZStL8__ioinit)

       jal     std::ios_base::Init::Init() [complete object constructor]

       nop

       lui     $2,%hi(__dso_handle)

       addiu   $6,$2,%lo(__dso_handle)

       lui     $2,%hi(_ZStL8__ioinit)

       addiu   $5,$2,%lo(_ZStL8__ioinit)

       lui     $2,%hi(_ZNSt8ios_base4InitD1Ev)

       addiu   $4,$2,%lo(_ZNSt8ios_base4InitD1Ev)

       jal     __cxa_atexit

       nop

$L26:

       nop

       move    $sp,$fp

       lw      $31,28($sp)

       lw      $fp,24($sp)

       addiu   $sp,$sp,32

       j       $31

       nop

You might be interested in
Based on the condition.
e-lub [12.9K]

Answer:

A subroutine is a block of statements that carries out one or more tasks. ... they share all variables with the rest of the main program. ... Once you have defined a function in your program, you may use it in any appropriate expression, such as: ... Thus, functions can- not change the values of the arguments passed to them.

Explanation:

5 0
3 years ago
C++ a. Write a program that uses the function isPalindrome given in example 6-6 (Palindrome). Test your program on the followinn
Whitepunk [10]

Answer:

#include <iostream>

#include <array>

using namespace std;

bool isPalindrome(string str)  

{  

int length = str.length();  

for (int i = 0; i < length / 2; i++)  

 if (toupper(str[i]) != toupper(str[length - 1 - i]))

  return false;  

return true;  

}

int main()

{

array<string, 6> tests = { "madam", "abba", "22", "67876", "444244", "trymEuemYRT" };

for (auto test : tests) {

 cout << test << " is " << (isPalindrome(test) ? "" : "NOT ") << "a palindrome.\n";

}

}

Explanation:

The toupper() addition forces characters to uppercase, thereby making the comparison case insensitive.

5 0
3 years ago
Ray owns a gaming cafe where users can play video games on computers. These games involve rich graphics and need high processing
tankabanditka [31]

Answer:

thick

Explanation:

i took the test and got it right

6 0
2 years ago
It's safe to download files from the internet if u perform regular Windows security updates, that is all u need to protect your
Vlad1618 [11]

Answer

TRUE

Explanation

A computer virus is a self-replicating program which are malicious and are designed to infect and gain control over a computer without the owner's knowledge.

To protect your computer from viruses especially when downloading files from the internet, it is advisable for one to perform regular windows security updates. This is because because windows have malware definitions to its windows defender and security essential utilities.

7 0
3 years ago
Read 2 more answers
Helpppppp please I will give branliest or something please help ​
Allisa [31]

OK you don't be sad it is always free

7 0
3 years ago
Other questions:
  • The purpose of a capacitor unit in a vacuum cleaner is to
    12·1 answer
  • What are the arguments for writing efficient programs even though hardware is relatively inexpensive?
    10·1 answer
  • _____ is a school-to-work program that provides the student with paid employment, school credit, and grades while participating.
    14·2 answers
  • (BRAINLIEST QUESTION) What are some challenges that will need to be overcome in order for the Internet of Vehicles to become a r
    13·1 answer
  • Taking an online class doesn't require any special skills.
    13·2 answers
  • PLEASE HELP!!!!! (Environmental Science Semester 1)
    7·2 answers
  • Is(are) input value(s) to use with a program to test the accuracy of the output.
    5·2 answers
  • PLS HELP WITH MY PYTHON HW ILL GIVE YOU BRAINLIEST
    12·1 answer
  • 6
    7·2 answers
  • Numerous engineering and scientific applications require finding solutions to a set of equations. Ex: 8x + 7y = 38 and 3x - 5y =
    15·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!