算术运算 | add rd, rs1, rs2 | 将 rs1 和 rs2 相加,结果存入 rd |
| sub rd, rs1, rs2 | 将 rs1 减去 rs2 ,结果存入 rd |
| mul rd, rs1, rs2 | 将 rs1 和 rs2 相乘,结果存入 rd |
| div rd, rs1, rs2 | 将 rs1 除以 rs2 ,结果存入 rd |
| rem rd, rs1, rs2 | 将 rs1 除以 rs2 的余数,结果存入 rd |
逻辑运算 | and rd, rs1, rs2 | 将 rs1 和 rs2 按位与,结果存入 rd |
| or rd, rs1, rs2 | 将 rs1 和 rs2 按位或,结果存入 rd |
| xor rd, rs1, rs2 | 将 rs1 和 rs2 按位异或,结果存入 rd |
| sll rd, rs1, rs2 | 将 rs1 左移 rs2 位,结果存入 rd |
| srl rd, rs1, rs2 | 将 rs1 右移 rs2 位,结果存入 rd |
| sra rd, rs1, rs2 | 将 rs1 算术右移 rs2 位,结果存入 rd |
比较指令 | slt rd, rs1, rs2 | 如果 rs1 < rs2 ,则 rd = 1,否则 rd = 0 |
| sltu rd, rs1, rs2 | 无符号比较,如果 rs1 < rs2 ,则 rd = 1,否则 rd = 0 |
分支指令 | beq rs1, rs2, offset | 如果 rs1 == rs2 ,则跳转到 PC + offset |
| bne rs1, rs2, offset | 如果 rs1 != rs2 ,则跳转到 PC + offset |
| blt rs1, rs2, offset | 如果 rs1 < rs2 ,则跳转到 PC + offset |
| bge rs1, rs2, offset | 如果 rs1 >= rs2 ,则跳转到 PC + offset |
| bltu rs1, rs2, offset | 无符号比较,如果 rs1 < rs2 ,则跳转到 PC + offset |
| bgeu rs1, rs2, offset | 无符号比较,如果 rs1 >= rs2 ,则跳转到 PC + offset |
跳转指令 | jal rd, offset | 跳转到 PC + offset ,并将返回地址存入 rd |
| jalr rd, rs1, offset | 跳转到 rs1 + offset ,并将返回地址存入 rd |
加载指令 | lw rd, offset(rs1) | 从内存地址 rs1 + offset 加载一个字到 rd |
| lh rd, offset(rs1) | 从内存地址 rs1 + offset 加载半个字到 rd |
| lb rd, offset(rs1) | 从内存地址 rs1 + offset 加载一个字节到 rd |
存储指令 | sw rs2, offset(rs1) | 将 rs2 的值存储到内存地址 rs1 + offset |
| sh rs2, offset(rs1) | 将 rs2 的低半字存储到内存地址 rs1 + offset |
| sb rs2, offset(rs1) | 将 rs2 的低字节存储到内存地址 rs1 + offset |
立即数指令 | addi rd, rs1, imm | 将 rs1 加上立即数 imm ,结果存入 rd |
| slti rd, rs1, imm | 如果 rs1 < imm ,则 rd = 1,否则 rd = 0 |
| sltiu rd, rs1, imm | 无符号比较,如果 rs1 < imm ,则 rd = 1,否则 rd = 0 |
| andi rd, rs1, imm | 将 rs1 和立即数 imm 按位与,结果存入 rd |
| ori rd, rs1, imm | 将 rs1 和立即数 imm 按位或,结果存入 rd |
| xori rd, rs1, imm | 将 rs1 和立即数 imm 按位异或,结果存入 rd |
| slli rd, rs1, imm | 将 rs1 左移 imm 位,结果存入 rd |
| srli rd, rs1, imm | 将 rs1 右移 imm 位,结果存入 rd |
| srai rd, rs1, imm | 将 rs1 算术右移 imm 位,结果存入 rd |
系统指令 | ecall | 触发系统调用 |
| ebreak | 触发断点异常 |