MIPS由变量srl

时间:2015-10-23 22:56:48

标签: assembly mips mips32

我做了一些搜索,但似乎无法找到答案。很可能是因为我不确定如何说出来。

如果我有以下代码

for (i = 0; i < 10; i++) {
    x = y >> i
    ...
}

有没有办法实现y&gt;&gt;我没有另一个循环的指示?

我知道这不起作用,但是说i的值存储在$ s1中,做了一些事情

srl $t3, $s5, $s1

而不是必须将$ t3设置为$ s5的值,然后循环遍历此语句

srl $t3, $t3, 1

希望这是有道理的。

基本上我每次都要通过for循环来获得y * 2 ^ -i。

感谢您提供任何帮助,或者甚至只是对这是一个重复问题的一些评论,我可以阅读充满羞耻感并得到答案。

1 个答案:

答案 0 :(得分:1)

面向程序员的 MIPS32™架构 第二卷:MIPS32™指令集列出了以下移位指令:

  • SLL Shift Word Left Logical
  • SLLV Shift Word Left Logical Variable
  • SRA Shift Word Right Arithmetic
  • SRAV Shift Word Right算术变量
  • SRL Shift Word Right Logical
  • SRLV Shift Word Right Logical Variable

您感兴趣的是名称中带有 Variable 的人,他们的工作方式如下:

SLLV rd, rt, rs :  rd ← rt << rs
SRAV rd, rt, rs :  rd ← rt >> rs (arithmetic)
SRLV rd, rt, rs :  rd ← rt >> rs (logical)

仅使用rs的低位5位,为您提供0-31范围内的移位金额。