【问题标题】:MIPS array iteration notation?MIPS 数组迭代表示​​法?
【发布时间】:2013-10-23 03:56:36
【问题描述】:

我有一个关于 MIPS 的一些关于数组的符号的快速问题,我对此感到困惑。

假设我在 $t0 中有一个值。它可以是任何东西,我们会说 3。

我想要做的是将数组中存储在该索引处的值(保存在 $t0 中的值)增加 1。

符号是否正确:addi array($t0), array($t0), 1

还是:addi $t0($s7), $t0($s7), 1 #assuming the array has been loaded into register $s7

例如,如果 $t0 中有 3,那么我想将 array[3] 的值增加 1。

【问题讨论】:

    标签: arrays mips


    【解决方案1】:

    MIPS 是一个load/store architecture,所以你必须把这个值加载到一个寄存器中,增加它,然后再把它存回去:

    sll $t1, $t0, 2     # $t1 = index * sizeof(word)
    add $t1, $s7, $t1   # $t1 = &array[index]
    lw $t2, ($t1)       # $t2 = array[index]
    addi $t2, $t2, 1    # $t2++
    sw $t2, ($t1)       # array[index] = $t2
    

    【讨论】:

    • 没想到答案会这么复杂。但经过一番思考,这是有道理的,谢谢迈克尔!唯一我可能会挑剔的是,当你 lw $t2, ($t1) 时,$t1 前面没有 0,但我猜这是简写?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    相关资源
    最近更新 更多