0

私は MIPS と行列を含む学校のプロジェクトを扱っています。基本的に、入力によってNパラメータが与えられた場合(これは私の正方形のNxN行列のサイズである必要があります)、内部のすべての要素(ユーザーからの入力によって挿入されます)が内積を計算するプログラムを作成する必要があります。これらの 2 つの行列を計算し、その結果を 3 つ目の行列に入れます。

私は最初にこのコードにたどり着きました。これは内積を行いますが、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
4

1 に答える 1

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
于 2012-04-06T18:27:17.660 に答える