【问题标题】:Can someone explain the following MIPs code?有人可以解释以下 MIP 代码吗?
【发布时间】:2018-09-18 00:28:21
【问题描述】:

f,g,h,i,j == $s0-$s4。 数组 A 和 B 的基地址分别是 $s6 和 $s7

sll $t0, $s0, 2
add $t0, $s6, $t0
sll $t1, $s1, 2
add $t1, $s7, $t1
lw $s0, 0($t0)

据我了解,第一行取 f*4 的值并将其存储在 $t0 中。我被告知我们有第一行,因为数组包含 4 字节的值。请解释其余部分。我知道程序正在某处访问数组,但我不理解语法,它看起来就像数组 A 的基本情况被添加到 f*4 中。谢谢。

【问题讨论】:

    标签: arrays mips sll


    【解决方案1】:

    sll 是左移逻辑 -- 所以sll $t0, $s0, 2$s0 (f) 中的值,并将其左移 2 位,结果是$t0。这与乘以 4 相同,但要快得多。

    add 是加法——所以add $t0, $s6, $t0$s6(A 的基地址)中的值,并将上面刚刚计算的$t0 值相加,将结果粘贴在$t0 中(替换旧值)。这给了你 A[f]

    的地址

    lw 是加载字——所以lw $s0, 0($t0) 在距$t0 0 字节偏移处加载4 字节值并将其粘贴到$s0 中。给定前两条指令,这是 A[f]

    的值

    另外两条指令正在计算$t1中B[g]的地址

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 2023-04-02
      • 2016-11-21
      • 2020-05-29
      • 1970-01-01
      • 2023-02-08
      • 2016-09-28
      相关资源
      最近更新 更多