MIPS и матрицы

Я имею дело с проектом для школы, который включает в себя MIPS и матрицы. По сути, мне нужно написать программу, которая, учитывая N-параметр на входе (и это должен быть размер моей квадратной матрицы NxN) и все элементы внутри (опять же, вставленные пользователем), должна вычислить скалярное произведение из этих двух матриц и поместите результат в третью.

Я впервые пришел к этому коду, который выполняет скалярное произведение, но после двух статических матриц. Не по вводу. Две вещи. Как я должен изменить его, чтобы обе матрицы были вставлены пользователем (также для размера 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

person Rickenbacker    schedule 06.04.2012    source источник


Ответы (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
person blackcompe    schedule 06.04.2012
comment
Спасибо, сэр, это действительно хорошее начало. Я новичок в этом языке, но внезапно мне пришлось бороться с такими проблемами. В Java я бы решил это без особых проблем, но в MIPS для новичка, такого как я, большая проблема иметь дело с инициализацией массивов/матриц. В любом случае, я собираюсь построить свой проект, начиная с формы, которую вы мне показали. Спасибо. - person Rickenbacker; 07.04.2012