如何在RISC上执行右移

时间:2014-07-19 12:47:37

标签: microprocessors risc

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

RISC仅提供:

ADD 
NOT
NXOR (XOR)
AND (NAND)

所以ORNOR都可以通过多个(N)ANDNOT操作进行模拟。

1 个答案:

答案 0 :(得分:2)

下面的C程序仅使用授权指令和条件跳转,并将input转换为output 1。

如果您尝试模拟的指令是“移位n”,那么您应该从c开始等于2 n

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;
}