逻辑操作指令

移位

移位shift):包括左移、右移、算数右移。

对于立即数的左移逻辑操作slli右移逻辑操作srli使用I型格式(不适用于对一个64位寄存器移动大于63位操作),假设初始值位于寄存器x19中移位后存入x11,其中immediate字段中只有低6位被实际使用,高6位被用作funct6

slli x11, x19, 4	; reg x11 = reg x19 << 4 bits

算术右移srai:不用0填充空出位,用原符号位填充。

三个变体sllsrlsra从寄存器中取出移位的位数,而不是立即数。

与 或 非

and:两个操作数的逻辑按位操作,只有在两个操作数中的对应位都是1时,结果的对应位才是1。

or:两个操作数的逻辑按位操作,如果两个操作数中的对应位有一个为1,则结果的对应位为1。

not:一个操作数的逻辑按位取反操作,也即是说,把每个1替换为0,把每个0替换为1。

xor:两个操作数的逻辑按位操作,用于计算两个操作数的异或。也就是说,只有两个操作数的对应位不同时,它才会计算为1。