【问题标题】:MIPS load word syntaxMIPS 加载字语法
【发布时间】:2023-03-03 13:47:02
【问题描述】:

如果我想从基地址为 $a0 且偏移量为 $t2 的内存中加载一个值,为什么不能执行以下操作:

lw  $s2, $a1($t2)

那么与上面的表达式等价的是什么?

【问题讨论】:

    标签: assembly mips


    【解决方案1】:

    你不能这样做,因为没有支持这种事情的 MIPS 指令编码。您需要自己添加:

    add $a2, $a1, $t2
    lw  $s2, 0($a2) 
    

    lw 指令编码如下所示:

    1000 11ss ssst tttt iiii iiii iiii iiii
    

    其中sssss 是源寄存器号,ttttt 是目标寄存器号,iiiiiiiiiiiiiiii 是立即数。使用两个寄存器生成内存地址的编码(也没有替代指令编码)没有空间。从上面的例子中得到编码的具体机器指令是:

    1000 1100 1101 0010 0000 0000 0000 0000
    

    因为立即数是0,所以$s2 是寄存器18$a2 是寄存器6

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多