2012-04-06 123 views
0

我正在处理涉及MIPS和矩阵的学校项目。基本上我必须写一个程序,给定一个N参数的输入(这应该是我的平方N×N矩阵的大小),并且里面的所有元素(再次,通过来自用户的输入插入)应该计算点积的这两个矩阵,并将结果输入第三个。MIPS和矩阵

我第一次来到这个代码,它做点积,但在两个静态矩阵之后。不是通过输入。 两件事。我应该如何改变它以使用户插入两个矩阵(以及N大小),并且大部分是我的矩阵初始化是正确的? 我没有这样做过,“[(我* 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

没有太多的人可以做给你展示如何完成比指导你学习语言的好一点。当你遇到麻烦,张贴你有什么其他的任务和问题,有人会帮助。这是一个框架,可能有助于说明如何启动

.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 
+0

谢谢先生,这的确是一个 好的开始。我是这种语言的初学者,但突然不得不面对这些问题。在Java中,我会解决它没有大麻烦,但在MIPS上,像我这样的初学者处理数组/矩阵初始化是一个大问题。无论如何,我会从你展示给我的形状开始建立我的项目。谢谢。 – Rickenbacker 2012-04-06 20:37:52