题 MIPS加载字语法


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

lw  $s2, $a1($t2)

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


12
2018-02-22 22:55


起源




答案:


你不能这样做,因为没有支持这种事情的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


14
2018-02-22 23:03



我爱mips ...这么简单 - Polaris878
@ Polaris878,Yay for RISC! - Carl Norum