Can someone modify this code to take in 6 inputs opposed to
Can someone modify this code to take in 6 inputs opposed to the 3 its taking in now?
The output should be the product of all the six input arguments. You must use the stack (i.e., use the memory with the $fp register and/or $sp register) to pass the input arguments.
# ECE 2500
# Functions
#
# main() calls a function mul3(a,b,c)
# Start of the text segment:
.text
main:
# initialize three numbers to be multiplied
# we use $a0, $a1, $a2 to pass function arguments to mul3()
addi $a0, $zero, 2
addi $a1, $zero, 3
addi $a2, $zero, 4
# now that the input is ready, jump to mul3()
# jal will ensure that $ra is updated with the address
# of the instruction after jal, where mul3() will return
jal MUL3 # call MUL3()
# mul3() stores the result in $v0
# copy it in some other register
add $s0, $zero, $v0
# viola! we are done! return back!
li $v0, 10
syscall # exit the program via system call
#end of main
MUL3:
# the caller passes the three input arguments
# in $a0, $a1, and $a2 registers
mul $t0, $a0, $a1 # in MUL3()
mul $t0, $t0, $a2
# prepare the output in $v0 for the caller
add $v0, $zero, $t0
# the return address in main is stored in $ra
jr $ra
#end of add
#end of program
Solution
Necessary Changes Are Made
# ECE 2500
# Functions
#
# main() calls a function mul3(a,b,c)
# Start of the text segment:
.text
main:
# initialize three numbers to be multiplied
# we use $a0, $a1, $a2 to pass function arguments to mul3()
addi $a0, $zero, 2
addi $a1, $zero, 3
addi $a2, $zero, 4
addi $a3, $zero, 5
addi $a4, $zero, 6
addi $a5, $zero, 7
# now that the input is ready, jump to mul3()
# jal will ensure that $ra is updated with the address
# of the instruction after jal, where mul3() will return
jal MUL3 # call MUL3()
# mul3() stores the result in $v0
# copy it in some other register
add $s0, $zero, $v0
# viola! we are done! return back!
li $v0, 10
syscall # exit the program via system call
#end of main
MUL3:
# the caller passes the three input arguments
# in $a0, $a1, and $a2 registers
mul $t0, $a0, $a1 # in MUL3()
mul $t0, $t0, $a2
mul $t0, $t0, $a3
mul $t0, $t0, $a4
mul $t0, $t0, $a5
# prepare the output in $v0 for the caller
add $v0, $zero, $t0
# the return address in main is stored in $ra
jr $ra
#end of add
#end of program

