【读书】《RISC-V开放架构设计之道》3.乘法和除法指令集RV32M
<div class='showpostmsg'><p><span style="font-size:16px;">这一篇帖子简单说下RV中的乘除法,RV32M是RISC-V架构中的一个标准扩展指令集,它为RV32I基础整数指令集添加了乘法和除法操作。RV32M扩展包含了一系列用于执行乘法、除法和相关运算的指令,这些指令对于执行算术密集型任务非常有用。乘法和除法指令集(RV32M)作为RV32I的扩展指令集,指令相对较少,如图:</span></p><p><span style="font-size:18px;"> </span></p>
<h3>指令格式</h3>
<p>RV32M指令通常使用R型(Register)格式,该格式包含三个寄存器操作数(rs1、rs2和rd),以及一个操作码,用于指示要执行的具体乘法或除法操作。</p>
<p>这个用法我推荐看老狼的帖子:<a href="https://www.cnblogs.com/mikewolf2002/p/9872287.html" target="_blank">https://www.cnblogs.com/mikewolf2002/p/9872287.html</a>写的更详细,我这里不再赘述</p>
<h3>指令列表</h3>
<p><strong>乘法指令</strong></p>
<p>mul rd, rs1, rs2 ,用法是寄存器 乘以寄存器 ,乘积写入寄存器x中。</p>
<p>乘法指令有:</p>
<p><code class="hljs">mul</code></p>
<p>:无符号乘法,结果为32位。</p>
<p><code class="hljs">mulh</code></p>
<p>:无符号乘法,结果的高32位。</p>
<p><code class="hljs">mulhsu</code></p>
<p>:一个操作数为无符号,另一个为有符号的乘法,结果的高32位。</p>
<p><code class="hljs">mulhu</code></p>
<p>:两个操作数均为无符号的乘法,结果的高32位。</p>
<p><code class="hljs">mulhusu</code></p>
<p>:32位有符号-无符号乘法,结果为32位。这个比较特殊:<strong> x为无符号数,其他和mulhu相同</strong></p>
<p> </p>
<p><strong>除法指令</strong></p>
<p>div rd, rs1, rs2 ,用法是寄存器 x除以寄存器 x,向零舍入,将这些数视为二进制补码,把商写入 x。</p>
<p>除法指令有:</p>
<p><code class="hljs">div</code></p>
<p>:无符号除法,结果为32位。</p>
<p><code class="hljs">divu</code></p>
<p>:有符号除法,结果为32位。</p>
<p><code class="hljs">rem</code></p>
<p>:无符号除法的余数,结果为32位。</p>
<p><code class="hljs">remu</code></p>
<p>:有符号除法的余数,结果为32位。</p>
<h3> </h3>
<p><span style="font-size:18px;"><strong>结语</strong></span></p>
<p>和ARM不同的是,ARM长久以来只有乘法指令,除法指令到2005年才被添加。乘法指令用于执行快速的硬件乘法操作,这对于数字信号处理、图形处理和其他需要大量乘法的应用至关重要。况且RV32M作为一个扩展指令,可以选择性的添加到RV32I中,这意味着它可以在不需要乘除法操作的场景中省略,以节省硬件资源。</p>
<p> </p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>《RISC-V开放架构设计之道》是本好书</p>
页:
[1]