【问题标题】:How to perform right shift on RISC如何在 RISC 上执行右移
【发布时间】:2014-07-19 12:47:37
【问题描述】:

我想知道如何在本身不提供此操作的精简指令集计算机上执行右移。
左移可以简单地通过向自身添加一个寄存器来完成,但是右移呢?

RISC 仅提供:

ADD 
NOT
NXOR (XOR)
AND (NAND)

所以ORNOR 都可以通过几个(N)ANDNOT 操作来模拟。

【问题讨论】:

  • 它可以乘以2还是除以2?
  • 可以乘以二,但那是左移。 RISC 本身不支持除法,而且算法相当复杂。

标签: microprocessors risc


【解决方案1】:

下面的 C 程序只使用授权指令和条件跳转,它将input 移动 1 到 output

如果您要模拟的指令是“shift by n”,那么您应该以等于 2nc 开头。

unsigned int shift_right(unsigned int input) {
  unsigned int d = 1;
  unsigned int output = 0;
  for (unsigned int c = 2; c <= 0x80000000; c += c)
  {
    if (c & input) 
      output |= d;
    d += d;
  }
  return output;
}

【讨论】:

    猜你喜欢
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2011-01-09
    相关资源
    最近更新 更多