MIPS装配分配 - 加载字的问题

时间:2009-06-02 03:36:25

标签: 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
          sll    $s2,$s2,6
          or     $s0,$s0,$s2
          sw     $s0, shifter
shifter:  sll    $s0,$s1,0

我知道大多数指示正在做什么。

但我不明白第二个加载词是如何从移位器加载某些东西的,而移位器本身就是一个指令,而不是一个单词。

当转换为二进制时,十六进制掩码的值在至少5个重要位置没有零,因为问题所以我不确定它将如何掩盖至少5个sig位置。

1 个答案:

答案 0 :(得分:2)

这是一种圆满的方式。它实际上是修改内存中的指令来执行转换!如果您遵循代码,您将看到加载了sll $s0,$s1,0指令,将sa字段从0修改为$s2,然后保存回内存并执行。