本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。
RV32M指令集很简单,指令条数很少,主要包含乘法、除法两类指令。
RV32M具备的所有指令,如下所示:
1 乘法指令
乘法指令,有mul、mulh、mulhsu、mulhu,其指令形式与含义,如下所示:
指令形式 | 功能说明 |
---|---|
mul rd,rs1,rs2 | rd = rs1 * rs2,表示rs1与rs2相乘,结果存入rd |
mulh rd,rs1,rs2 | 表示有符号rs1与有符号rs2相乘,并将结果的高XLEN位写入寄存器rd |
mulhsu rd,rs1,rs2 | 表示无符号rs1与有符号rs2相乘,并将结果的高XLEN位写入寄存器rd |
mulhu rd,rs1,rs2 | 表示无符号rs1与无符号rs2相乘,并将结果的高XLEN位写入寄存器rd |
这里,“XLEN”表示处理器的字长,例如在32位处理器中,XLEN为32;在64位处理器中,XLEN为64。
2 除法指令
除法指令,有div、divu、rem、remu,其指令形式与含义,如下所示:
指令形式 | 功能说明 |
---|---|
div rd, rs1, rs2 | rd = rs1 ÷ rs2,表示rs1与rs2相除,结果存入rd |
divu rd, rs1, rs2 | rd = rs1 ÷ rs2,表示rs1与rs2相除,将这些数视为无符号数,结果存入rd |
rem rd, rs1, rs2 | rd = rs1 % rs2,表示rs1与rs2相除,余数存入rd |
remu rd, rs1, rs2 | rd = rs1 % rs2,表示rs1与rs2相除,都视为无符号数,余数存入rd |