Answered step by step
Verified Expert Solution
Link Copied!

Question

00
1 Approved Answer

Any help would be appreciated, tia! Given an array of at least one integer, write a program to create a new array with elements equal

Any help would be appreciated, tia!
Given an array of at least one integer, write a program to create a new array with elements equal to the exponent of each element in the original array raised to the index, i.e., B[i]= A[i]^i.
For this, write two functions that will be called in main function independently.
exponent
inputs: element (A[i]) and index (i)
task: returns the value of element raised to index (A[i]^i).
append
inputs: base address of new array B (*B), current size of B (n2) and the new element (A[i]^i)
task: add the new element at the end.
This function does not return any value (void).
Following is a sample C code to perform the required task. You may modify the code for the functions, but the task performed should not be changed.
int main(){
// Variable Declaration
int* A, B; // Base addresses of A and B
int n1, n2; // Lengths of arrays A and B
int exp; // Return value from exponent function
// Task of main function
B[0]=1; //0th element = A[0]^0=1
for (int j =1; j < n1; j++){
n2= j; // Current length of array B
exp = exponent(A[j], j);
append(B, n2, exp);
}
n2++;
}
int exponent(int x, int y){
int exp = x;
for (int j =1; j < y; j++){
exp = exp * x;
}
return(exp);
}
void append(int* B, int n2, int exp){
B[n2]= exp;
}
Registers Variables
$s0 A
$s1 n1
$s2 B
$s3 n2
Addresses Contents
$s0 A[0]
$s0+4 A[1]
......
$s0+4*(n-1) A[n-1]
Example Test: If the values of $s1 through $s7 are initialized in the simulator as: (Use the '+' button under the Registers display to initialize register values for $s0, $s1, $s2 and the '+' button under the Memory display to initialize the A array elements.)
Registers Data
$s04000
$s15
$s28000
$s30
Addresses Contents
400010
40045
4008-5
4012-2
40160
The resultant registers will be:
Registers Data
$s28000
$s35
The resultant array B is:
Addresses Contents
80001
80045
800825
8012-8
80160
This is what I have, but I keep getting an erorr saying Line 26: Unrecognized Syntax near: .data
# Change your C code here (if different)
#int main(){
# B[0]=1; //0th element = A[0]^0=1
# for (int j =1; j < n1; j++){
# n2= j; // Current length of array B
# exp = exponent(A[j], j);
# append(B, n2, exp);
# }
# n2++;
# }
#int exponent(int x, int y){
# int exp = x;
# for (int j =1; j < y; j++){
# exp = exp * x;
# }
# return(exp);
#}
#void append(int* B, int n2, int exp){
# B[n2]= exp;
#}
# Write comments explaining each line of your code, all the registers and memory used
# Enter your MIPS code here
.data
A: .word 10,5,-5,-2,0 # Example array A
n1: .word 5 # Length of array A
B: .space 20 # Allocate space for array B (assuming 5 elements)
n2: .word 0 # Initialize n2 to 0
.text
.globl main
main:
la $s0, A # $s0= base address of A
lw $s1, n1 # $s1= n1(length of A)
la $s2, B # $s2= base address of B
lw $s3, n2 # $s3= n2(initialize n2 to 0)
# Initialize B[0] to 1(A[0]^0)
li $t0,1 # $t0=1
sw $t0,0($s2) # B[0]=1
li $t1,1 # $t1=1(index j)
loop:
bge $t1, $s1, end # if j >= n1, exit loop
# Calculate address of A[j]
sll $t2, $t1,2 # $t2= j *4(byte offset)
add $t3, $s0, $t2 # $t3= &A[j]
lw $a0,0($t3) # $a0= A[j]
move $a1, $t1 # $a1= j
# Call exponent function
jal exponent
# Store result of exponent in B[j]
sll $t4, $t1,2 # $t4= j *4(byte offset)
add $t5, $s2, $t4 # $t5= &B[j]
sw $v0,0($t5) # B[j]= result of exponent function
# Increment n2 and j
addi $s3, $s3,1 # n2++
addi $t1, $t1,1 # j++
j loop
end:
# Update n2 in memory
sw $s3, n2
# Exit program
li $v0,10 # syscall for exit
syscall
# Exponent function: calculates x^y
exponent:
# Input: $a0= A[j], $a1= j
# Output: $v0= A[j]^j
move $t3, $a0 # $t3= A[j]
li $v0,1 # $v0=1(initial result)
exponent_loop:
beqz $a1, exp_end # if j ==0, exit loop
mul $v0, $v0, $t3 # $v0*= A[j]
addi $a1, $a1,-1 # j--
j exponent_loop
exp_end:
jr $ra # Return to caller

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions