RISC-V中检测乘法是否溢出的方法
RISC-V有四种乘法指令分别是:
mul:乘
mulh:乘后取高位
mulhu:无符号数乘法取高位, 64bit * 64bit其128bit结果中的前64bit的值
mulhsu: 有符号和无符号数乘法取高位
如果想得到比如128位积中的高64位,且两个操作数都是有符号的,则应使用mulh。mulhu和mulhsu则各自对应各自定义中的操作数。
所以软件上可以采用乘法取高位的方法来测试是否出现溢出:
如果mulhu的结果为0,那么必然是没有发生溢出。
如果mulh的结果都是mul结果的符号位的复制,那么显然也没有发生溢出。
Comments
Post a Comment