位运算
sll rd,rs1,rs2
x[rd] = x[rs1] << x[rs2]
逻辑左移(空位补零)
slli rd,rs1,shamt
立即数逻辑左移
sr1 rd,rs1,rs2
x[rd] = (x[rs1] >> u x[rs2])
逻辑右移(空位补零)
srli rd,rs1,shamt
立即数逻辑右移
sra rd,rs1,rs2
x[rd] = (x[rs1] >> s x[rs2])
算术右移(空位用最高位填充)
srai rd,rs1,shamt
立即数逻辑右移
not td,rs1
x[rd] = ~x[rs1]
把寄存器x[rs1] 对于1的补码(即按位取反的值)写入x[rd].实际扩展为xori rd,rs1,-1.
条件控制指令
beg rs1,rs2,offset
if(rs1 == rs2) pc+= sext(offset)
若寄存器x[rs1]和寄存器x[rs2]的值相等,把pc的值设为当前值加上符号位扩展的偏移offset
bge rs1,rs2,offset
if(rs1 >= rs2) pc += sext(offset)
若寄存器x[rs1]的值大于寄存器x[rs2]的值(均视为二进制补码),把pc的值设为当前值加上符号位扩展的偏移offset
bit rs1,rs2,offset
if(rs1 <s rs2) pc += sext(offset)
若寄存器x[rs1]的值小于寄存器x[rs2]的值(均视为二进制补码),把pc的值设为当前值加上符号位扩展的偏移offset
bne rs1,rs2,offset
if(rs1 != rs2) pc += sext(offset)
若寄存器x[rs1]和寄存器x[rs2]的值不相等,把pc的值设为当前值加上符号位扩展的便宜offset
|