2014-07-19 62 views
0

我想知道如何在自己不提供此操作的精簡指令集計算機上執行右移。
左移可以簡單地通過向自己添加寄存器來完成,但右移是多少?如何在RISC上執行右移

唯一的RISC報價:

ADD 
NOT 
NXOR (XOR) 
AND (NAND) 

所以ORNOR都可以通過幾個(N)ANDNOT操作進行仿真。

+0

它可以乘以2還是除以2? –

+0

兩個乘法可以完成,但這是左移。 RISC本身不支持部分和算法,因爲它相當複雜。 – xuma202

回答

2

C程序下面僅使用授權的指令以及條件跳轉,它由1

如果你試圖仿效的指令是「移乘N」轉變成inputoutput,那麼你應該用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; 
} 
相關問題