0

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

RISC优惠仅限:

ADD 
NOT
NXOR (XOR)
AND (NAND)

soORNOR都可以通过几个(N)ANDandNOT操作来模拟。

4

1 回答 1

2

下面的 C 程序仅使用授权指令和条件跳转,并且它input移入output1。

如果您要模拟的指令是“shift by 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;
}
于 2014-07-19T12:58:24.233 回答