【问题标题】:MIPS assembly assignment - issue with a load wordMIPS 程序集分配 - 加载字问题
【发布时间】:2009-06-02 03:36:24
【问题描述】:

以下代码用于实现指令

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 位置。

【问题讨论】:

  • 你需要告诉我们这是什么架构和处理器。没有它,我们无法告诉您它的作用。
  • 如果您的问题更具体,您可能会获得更多帮助。您是否有难以理解的特定说明?
  • 您熟悉这些说明吗?真诚地尝试尽可能多地进行翻译会大有帮助
  • 它适用于 MIPS 架构 en.wikipedia.org/wiki/MIPS_architecture
  • 我知道这些指令中的大多数在做什么。然而,我不明白第二个加载字是如何从移位器加载一些东西的,它本身是一个指令而不是一个词。此外,当转换为二进制时,十六进制掩码的值在至少 5 个重要位置没有零,正如问题所说,所以我不确定它将如何屏蔽至少 5 个 sig 位置

标签: assembly mips


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多