RISCV指令集体系简读之RV32M

RV32M向RV32I中添加了整数乘法和除法指令;

  • RV32M具有有符号和无符号整数的除法指令:divide(div)和divide unsigned(divu),它们将 商放入目标寄存器。
  • 在少数情况下,程序员需要余数而不是商,因此RV32M提供 remainder(rem)和 remainder unsigned(remu),它们在目标寄存器写入余数,而不是商。
  • 要测试除数是否为零,只需要在除法操作之前加入一条用于测试的beqz指令。RV32I不会 因为除零操作而trap,因为极少数程序需要这种行为,而且在那些软件中可以很容易地检查 是否除零。当然,除以其它常数永远不需要检查。
  • 乘法比除法要更为复杂,是因为积的长度是乘数和被乘数长度的和。
    • 将两个32位数相乘得到 的是64位的乘积。为了正确地得到一个有符号或无符号的64位积,RISC-V中带有四个乘 法指令。
    • 要得到整数32位乘积(64位中的低32位)就用mul指令。
    • 要得到高32位,如果 操作数都是有符号数,就用mulh指令;
    • 如果操作数都是无符号数,就用mulhu指令;
    • 如 果一个有符号一个无符号,可以用mulhsu指令。
    • 在一条指令中完成把64位积写入两个32 位寄存器的操作会使硬件设计变得复杂,所以RV32M需要两条乘法指令才能得到一个完整 的64位积。

附录:除以零的行为;

原文链接:https://blog.csdn.net/weixin_44013026/article/details/132846103

riscv架构
当发生除零操作时,不会触发异常,硬件会返回一个默认的特殊值,该特殊值由硬件设计确定。可以通过查看FS/FD寄存器查看是否发生除零操作,FS寄存器用于表示浮点运算的状态,其中第1位和第2位分别表示除以0和无效操作的错误标志。如果除零操作发生了错误,这些位将被设置为1。FD寄存器用于表示定点运算的状态,其中第1位和第2位分别表示除以0和无效操作的错误标志。如果除零操作发生了错误,这些位也将被设置为1。

                        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/621128.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对用户上传图片进行压缩

前端图片压缩主要利用 HTML5 中的 Canvas 对象来处理图片。用户上传的图片先在客户端进行压缩,然后再上传到服务器。这种方法可以减少服务器的负担和节省带宽。 步骤如下: 用户选择图片后,在前端使用 JavaScript 将图片绘制到 Canvas 元素上…

Semaphore

Semaphore 翻译: 信号量 解释: 信号量通常用于限制线程数,而不是访问某些(物理或逻辑)资源。 例如,这是一个使用信号量来控制对一个项目池的访问的类 用法 可以限制线程的使用次数 public static vo…

软考126-上午题-【软件工程】-测试方法

一、测试方法 在软件测试过程中,应该为定义软件测试模板,即将特定的测试方法和测试用例设计放在一系列的测试步骤中。 软件测试方法分为:静态测试和动态测试。 1-1、静态测试。 静态测试是指被测试程序不在机器上运行,而是采用…

应对中年危机-高效学习

兴致勃勃的打开一本书,从第一行,第一个字开始,十分钟later……两眼皮一塌,哎,想睡觉了,真助眠。但其实我并不懒啊。 过去我是上诉这样,现在有了改善。如果你也是这样,希望看完了本文…

Pytorch - 张量转换拼接

目录 张量转换为 numpy 数组 numpy 转换为张量 标量张量和数字的转换 张量拼接操作 张量索引操作 😆😆😆感谢大家的观看😆😆😆 张量转换为 numpy 数组 🔎使用 Tensor.numpy 函数可以将张量…

JAVAEE——网络初始

文章目录 网络发展史独立模式网络模式局域网LAN路由器的诞生 网络通信的基础IP地址端口号 认识协议OSI七层模型TCP/IP五层模型 网络发展史 独立模式 在原始的年代中电脑间想要通信需要两台电脑连接一根网线,但是一台电脑基本上只有一个接口。因此想要链接更多的电…

论文速读:Do Generated Data Always Help Contrastive Learning?

在对比学习领域,最近很多研究利用高质量生成模型来提升对比学习 给定一个未标记的数据集,在其上训练一个生成模型来生成大量的合成样本,然后在真实数据和生成数据的组合上执行对比学习这种使用生成数据的最简单方式被称为“数据膨胀”这与数据…

在Windows上配置VS Code GO语言开发环境

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…