Assembly MIPS程序集分配-加载字问题

Assembly MIPS程序集分配-加载字问题,assembly,mips,Assembly,Mips,以下代码用于实现该指令 sllv $s0, $s1, $s2 它使用寄存器$s2中值的最低有效5位 要指定寄存器$s1应向左移位的金额: .data mask: .word 0xfffff83f .text start: lw $t0, mask lw $s0, shifter and $s0,$s0,$t0 andi $s2,$s2,0x1f

以下代码用于实现该指令

sllv $s0, $s1, $s2
它使用寄存器$s2中值的最低有效5位 要指定寄存器$s1应向左移位的金额:

          .data
   mask:  .word  0xfffff83f
          .text
  start:  lw     $t0, mask
          lw     $s0, shifter
          and    $s0,$s0,$t0
          andi   $s2,$s2,0x1f
          sll    $s2,$s2,6
          or     $s0,$s0,$s2
          sw     $s0, shifter
shifter:  sll    $s0,$s1,0

我知道这些指令中的大部分都在做什么

然而,我不明白第二个加载字是如何从移位器加载内容的,移位器本身就是一条指令,而不是一个字


此外,当转换为二进制时,十六进制掩码的值在至少5个有效位置没有零,正如问题所说,因此我不确定它将如何屏蔽至少5个sig位置。

这是一种迂回的方法。它实际上是在修改内存中的指令来执行移位!如果您按照代码进行操作,您将看到加载了
sll$s0,$s1,0
指令,其
sa
字段从
0
修改为
$s2
,然后保存回内存并执行。

您需要告诉我们这是用于什么体系结构和什么处理器。如果没有这些,我们就无法告诉你它的作用。如果你把问题说得更具体,你可能会得到更多的帮助。是否有您难以理解的特定说明?您是否熟悉其中的任何说明?真诚地尝试尽可能多地进行翻译将大有帮助。对于MIPS体系结构,我知道这些指令中的大多数都在做什么。然而,我不明白第二个加载字是如何从移位器加载内容的,移位器本身就是一条指令,而不是一个字。此外,当转换为二进制时,十六进制掩码的值在至少5个有效位置没有零,正如问题所说,因此我不确定它将如何屏蔽至少5个sig位置