), также исправляя ситуацию переполнения:
жен рассчитать сумму квадратов массива в сборке Mips. Я искал обратную связь для моего кода. Приведенный ниже код является лишь началом и не учитывает возможные ситуации переполнения. Тем не менее, я просто хочу убедиться, что этот основной блок кода работает как ожидалось
# Function to calculate squared sum
#
# Inputs:
# $a0: address of array in memory (*a)
# $a1: array size (n)
#
# Outputs:
# $v0: low 32 bytes of result
# $v1: high 32 bytes of result
#
# If the array is empty, then the function returns zero.
#
squareSum:
Loop:
sltu $t5,$t4,$a1 # if(i<n)
beq $t5,$zero,Exit # if ($t5 == 0)
sll $t0,$t4,2 # προσωρινος καταχωρητης 4 * i
addu $t0,$t0,$a0 # ο καταχωρητης $t0 δειχνει στη διευθυνση μνημης του array προστιθεμενο με το 4 * i, αρα εχουμε παρει το array[i]
lw $t1,0($t0) # φορτωση στον καταχωρητη $t1 της τιμη του πινακα που θελουμε καθε στιγμη
multu $t1,$t1 # array[i] * array[i]
mflo $v0 # 32 least significant bits of multiplication to $v0
mfhi $v1 # 32 most significant bits of multiplication to $v1
addu $t2,$t2,$v0
addu $t3,$t3,$v1
addiu $v0,$zero,0
addiu $v1,$zero,0
addiu $t4,$t4,1 # i += 1
j Loop
Exit:
add $v0,$zero,$t2
add $v1,$zero,$t3
jr $ra
Я не уверен, что именно так я должен справляться со всем этим умножением, поэтому я хочу услышать некоторые предложения и советы