Arrays 5阵列联合MIPS

Arrays 5阵列联合MIPS,arrays,mips,Arrays,Mips,我得写一个程序。它最多从输入中获取5个字符数组(逐字符,使用字符“0”和序列)打印它们,并打印并集和交集数组。 我在编写创建联合数组的函数时遇到一些问题。这是我写的代码。(程序创建的所有数组中都存在Mind char“0”,但我尝试不在union数组中插入任何“0”。) unite:#参数baseAddressVetUnion=$a1,baseAddressvectorToUn=$a2,v.length=$a3) 移动$t2,$0#int i=0, forIparte1: beq$t2,$a3,

我得写一个程序。它最多从输入中获取5个字符数组(逐字符,使用字符“0”和序列)打印它们,并打印并集和交集数组。 我在编写创建联合数组的函数时遇到一些问题。这是我写的代码。(程序创建的所有数组中都存在Mind char“0”,但我尝试不在union数组中插入任何“0”。)

unite:#参数baseAddressVetUnion=$a1,baseAddressvectorToUn=$a2,v.length=$a3)
移动$t2,$0#int i=0,
forIparte1:
beq$t2,$a3,uscitaUnione#se i==v.length ha finito e torna al main
lbu$t0,0($a1)#v[i]=$t0
beq$t0,$s0,updateForI#v[i]==0,不考虑此元素
移动$t3,$0#int j=0
forJ:
blt$s3,$t3,用于iParte2#如果k
“一些问题”。你的代码会产生什么错误?它不能编译吗?运行失败?如果出现任何错误,程序在打印“Union Array:[”后将循环运行
unite: # PARAM baseaddressvetUnione= $a1, baseAddressvectorToUn=$a2, v.length=$a3)

move $t2, $zero                  # int i=0, 


forIparte1:
beq $t2, $a3, uscitaUnione       # se i==v.length ha finito e torna al main

lbu $t0, 0($a1)                  # v[i] = $t0
beq $t0, $s0, updateForI         # v[i] == 0, not considers this element

move $t3, $zero                  # int j=0

forJ:
blt $s3, $t3, forIparte2         # if k < j exit from j loop

lbu $t1, 0($a2)                  # unione[j] = $t1
beq $t0, $t1, updateForI         # if v[i]==unione[j], it doesn't store v[i]

addi $a2, $a2, 1                 # 
addi $t3, $t3, 1                 # j++

j forJ

forIparte2:
sb $t0, vettoreUnione($s3)       # vettoreUnione[k] = v[i]
addi $s3, $s3, 1                 # k++

beq $s2, $s3, printUnione        # if 49==k (vettoreUnione is full) go to print

updateForI:
addi $a1, $a1, 1                 # incremento il puntatore a v[i]
addi $t2, $t2, 1                 # i++
j forIparte1

uscitaUnione:
jr $ra