0
我想知道如何在自己不提供此操作的精簡指令集計算機上執行右移。
左移可以簡單地通過向自己添加寄存器來完成,但右移是多少?如何在RISC上執行右移
唯一的RISC
報價:
ADD
NOT
NXOR (XOR)
AND (NAND)
所以OR
和NOR
都可以通過幾個(N)AND
和NOT
操作進行仿真。
我想知道如何在自己不提供此操作的精簡指令集計算機上執行右移。
左移可以簡單地通過向自己添加寄存器來完成,但右移是多少?如何在RISC上執行右移
唯一的RISC
報價:
ADD
NOT
NXOR (XOR)
AND (NAND)
所以OR
和NOR
都可以通過幾個(N)AND
和NOT
操作進行仿真。
C程序下面僅使用授權的指令以及條件跳轉,它由1
如果你試圖仿效的指令是「移乘N」轉變成input
output
,那麼你應該用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;
}
它可以乘以2還是除以2? –
兩個乘法可以完成,但這是左移。 RISC本身不支持部分和算法,因爲它相當複雜。 – xuma202