2012-04-06 24 views
0

私はMIPSと行列を含む学校のプロジェクトを扱っています。基本的には、入力によるNパラメータ(これは正方形のNxN行列のサイズでなければなりません)とその内部のすべての要素(やはり、ユーザからの入力によって挿入される)を与えて、ドット積それらの2つの行列のうちの1つを計算し、結果を第3の行列に入れる。MIPSと行列

私はドットプロダクトを実行しますが、2つの静的マトリックスの後にこのコードを作成しました。入力ではありません。 2つのもの。どのように私は両方の行列を(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

ずっと1は、あなたがトラブルに遭遇したとき。ビットより良い言語を勉強するためにあなたを演出以外の自分の割り当てを完了する方法をお見せするために行う、あなたが持っているものを投稿することができますがありませんそして、誰かが助けになる問題が。ここで起動する方法についていくつかの光を当てるに役立つかもしれスケルトンです。

.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