RV32M指令集

Risc-V定义了可选的RV32M,它定义了整数乘法除法指令。

总共8条指令。

Category Fmt RV32I base machine code(bin) comment mul 整数乘法 R mul rd, rs1, rs2 0000001[24-20,rs2][19-15,rs1]000[11-7,rd] 0110011 rd=rs1*rs2, 将结果的低32位写入rd,对于有符号数和无符号数相乘,结果低32位是相同的,所以只有一条指令,取低32位 整数乘法 R mulh rd, rs1, rs3 0000001[24-20,rs2][19-15,rs1]001[11-7,rd] 0110011 rd=rs1*rs2, rs1,rs2被当作有符号数,结果高32位写入rd 整数乘法 R mulhu rd, rs1, rs4 0000001[24-20,rs2][19-15,rs1]010[11-7,rd] 0110011 rd=rs1*rs2, rs1,rs2被当作无符号数,结果高32位写入rd 整数乘法 R mulhsu rd, rs1, rs5 0000001[24-20,rs2][19-15,rs1]011[11-7,rd] 0110011 rd=rs1*rs2, rs1当作有符号数,rs2被当作无符号数,结果高32位写入rd div 整数除法 R div rd, rs1, rs2 0000001[24-20,rs2][19-15,rs1]100[11-7,rd] 0110011 rd=rs1/rs2,rs1,rs2都被当作有符号数,将除法的商写回寄存器rd中。 整数除法 R divu rd, rs1, rs3 0000001[24-20,rs2][19-15,rs1]101[11-7,rd] 0110011 rd=rs1/rs2,rs1,rs2都被当作无符号数,将除法的商写回寄存器rd中。 整数除法 R rem rd, rs1, rs4 0000001[24-20,rs2][19-15,rs1]110[11-7,rd] 0110011 rd=rs1/rs2,rs1,rs2都被当作有符号数,将除法的余数写回寄存器rd中。 整数除法 R remu rd, rs1, rs5 0000001[24-20,rs2][19-15,rs1]111[11-7,rd] 0110011 rd=rs1/rs2,rs1,rs2都被当作无符号数,将除法的余数写回寄存器rd中。

image

如果希望得到两个32位整数相乘;的完整的64位结果,Risc-V推荐使用下面的指令:

mulh[s|u] rdh,rs1, rs2;

mul rdl rs1,rs2

其中要求:两条指令的源操作数索引号和顺序必须完全相同。第一条指令的rdh索引必须不能与rs1,rs2索引号相同。处理器实现的微架构可以把两条指令融合成一条指令执行,从而提高性能。


如果希望同时得到两个32位数相除的商和余数,Risc-V推荐用以下指令:

div[u] rdq, rs1, rs2;

rem[u] rdr,rs1,rs2;

其中要求:两条指令的源操作数索引号和顺序必须完全相同。第一条指令的rdh索引必须不能与rs1,rs2索引号相同。处理器实现的微架构可以把两条指令融合成一条指令执行,从而提高性能。

Risv-V中除以0,并不会产生异常,仍会产生一个特殊的结果。

image






  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值