我正在处理涉及MIPS和矩阵的学校项目。基本上我必须编写一个程序,通过输入给出一个N参数(这应该是我的方形NxN矩阵的大小)和内部的所有元素(再次,由用户的输入插入)应该计算点积在这两个矩阵中,将结果放到第三个矩阵中。
我第一次看到这个代码,它代替了dot产品但是在两个静态矩阵之后。不是通过输入。 两件事情。我应该如何更改它以便用户插入两个矩阵(以及N大小),并且主要是我的矩阵初始化是否正确? 我没有做过这样的段落“[(i * num_columns + j)* 4]而且我想知道我得到的只是纯粹的运气而不是合理化。 提前感谢任何想要帮助我的人,并对任何语言错误表示抱歉。
.data
v1: .word 1,2,3,4
.word 5,6,7,8
.word 9,10,11,12
v2: .word 10,20,30,40
.word 10,10,10,10
.word 10,10,10,10
v3: .word 0:12
c: .word 4
space: .asciiz "\n"
.text
main:
li $t0, 0
li $t2, 12
la $t9, c
li $t8, 0
loop:
lw $t3, v1($t0)
lw $t4, v2($t0)
mul $t3, $t3, $t4
addi $t2, $t2, -1
li $v0, 1
move $a0, $t3
syscall
li $v0, 4
la $a0, space
syscall
sw $t3, v3($t0)
addi $t0, $t0, 4
addi $t8, $t8, 1
bne $t2, $zero, loop
li $v0, 10
syscall
答案 0 :(得分:0)
除了指导您更好地学习语言之外,没有什么可以告诉您如何完成作业。当你遇到麻烦,发布你所拥有的和问题,有人会帮助你。这是一个骨架,可能有助于阐明如何开始。
.text
main:
#call prompt_size
#s0 = return val = N
#a0 = s0: arg = N
#call new_matrix
#s1 = return val = address of matrix
#repeat that two more times
#call fill_matrix 3 times, sending each matrix address
#calcuate dot product
#exit
prompt_size:
#output prompt
#read integer
#return
new_matrix:
#t0 = (arg)^2
#call sbrk(t0)
#return
fill_matrix:
#for each byte, prompt for an integer, and insert it
prompt_matrix_element:
#output_prompt
#read integer
#return
exit:
#exit