RISC-V ISA 学习笔记(2) 乘除法标准扩展“M”和原子扩展“A” v2.0

  

1. 整数乘除法的标准扩展“M”

  整数乘法和除法的指令扩展“M”包含对两个整数寄存器中的值做乘、除法的指令。而之所以把乘除法单独列出来,是为了简化低端硬件的实现,毕竟某些场景极少用到整数乘除法,不用单独实现。

(1) 乘法操作

   MUL/MULH[S][H]/MULW
乘法操作
  MUL执行一次两个XLEN位的带符号乘法rs1×rs2,并将结果的低XLEN存到rd中,忽略溢出。
MULH、MULHU、MULHSU执行相同的乘法,分别针对的对象为有符号×有符号、无符号×无符号、 有符号×无符号乘法,并将运算结果2×XLEN位中的高XLEN位返回。
  如果同时需要结果的高、低XLEN位,一般代码顺序为:
    MULH[[S]U] rdh,rs1,rs2 ;
    MUL rdl,rs1,rs2;
  (源寄存器区分符必须按照同样的顺序,并且 rdh 不能是 rs1 或者 rs2 )。允许硬件实现时将其融合为单一操作,而不是分两次操作。MULW属于RV64I暂不表(>_< 暂时用不到,就不写了)。

(2) 除法操作

   DIV/DIVU/REM/REMU
除法操作
  DIV/DIVU分别做带符号和无符号的整数除法,REM/REMU分别做带符号和无符号的取余。
  如果同时要商和余数,建议代码为
    DIV[U] rdq,rs1,rs2;
    REM[U] rdq,rs1,rs2;
  同样建议硬件实现能够把这两个操作融合为单一操作。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值