【问题标题】:MIPS and matricesMIPS 和矩阵
【发布时间】:2012-04-06 11:05:20
【问题描述】:

我正在处理一个涉及 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

【问题讨论】:

    标签: assembly matrix mips dot-product


    【解决方案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
    

    【讨论】:

    • 谢谢先生,这确实是一个好的开始。我是这种语言的初学者,但突然不得不与这些问题作斗争。在 Java 中,我会毫不费力地解决它,但在 MIPS 上,对于像我这样的初学者来说,处理数组/矩阵初始化是一个大问题。无论如何,我将从你展示给我的形状开始构建我的项目。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    相关资源
    最近更新 更多