逻辑操作指令
移位
移位(shift):包括左移、右移、算数右移。
对于立即数的左移逻辑操作slli
和右移逻辑操作srli
使用I型格式(不适用于对一个64位寄存器移动大于63位操作),假设初始值位于寄存器x19
中移位后存入x11
,其中immediate
字段中只有低6位被实际使用,高6位被用作funct6
:
slli x11, x19, 4 ; reg x11 = reg x19 << 4 bits
算术右移srai
:不用0填充空出位,用原符号位填充。
三个变体sll
,srl
,sra
从寄存器中取出移位的位数,而不是立即数。
与 或 非
and
:两个操作数的逻辑按位操作,只有在两个操作数中的对应位都是1时,结果的对应位才是1。
or
:两个操作数的逻辑按位操作,如果两个操作数中的对应位有一个为1,则结果的对应位为1。
not
:一个操作数的逻辑按位取反操作,也即是说,把每个1替换为0,把每个0替换为1。
xor
:两个操作数的逻辑按位操作,用于计算两个操作数的异或。也就是说,只有两个操作数的对应位不同时,它才会计算为1。