RISCV指令集体系简读之RV32M

2024-04-16 01:44

本文主要是介绍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。

                        

这篇关于RISCV指令集体系简读之RV32M的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907496

相关文章

C++系统相关操作4 - 获取CPU(指令集)架构类型

1. 关键词2. sysutil.h3. sysutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 关键词: C++ 系统调用 CPU架构 指令集 跨平台 实现原理: Unix-like 系统: 可以通过 uname -m 命令获取 CPU 架构类型。Windows 系统: 可以通过环境变量 PROCESSOR_ARCHITECTURE 获取 CPU 架构类型。

告别繁琐邀请码,Xinstall助你轻松搭建高效App推广体系!

随着互联网流量的不断变迁,App推广和运营面临着前所未有的挑战。如何快速搭建起满足用户需求的运营体系,成为众多企业亟待解决的问题。在这个背景下,Xinstall凭借其强大的功能和灵活的解决方案,成为了App推广的得力助手。 一、传统营销与获客痛点 传统企业营销依赖现有的流量池与少量获客渠道,但当互联网流量红利衰退,仅依靠少量渠道和简单的数据分析显然不现实。企业需要提高获客转化的效率和用户留存

17-云原生监控体系-metrics-server

1. 关于监控 Kubernetes 如果想让 Prometheus 监控 Kubernetes 集群,首先需要明确集群中需要监控哪些对象,也就是需要收集哪些监控指标,如下是总结 Kubernetes 集群中大概有三类指标需要收集: 集群中每个节点服务器的指标,就是每台服务器的CPU,内存等这些级别信息,可以使用之前学习到的 node_exporter 实现。Kubernetes 集群组件的指

Spring自定义标签体系和应用

我们知道,在使用Dubbo框架时,需要指定配置文件中的application、protocol、registry、provider、service等服务器端和客户端的配置项,典型的配置方法如下所示。通过这些配置项,我们可以基于Spring容器来启动Dubbo服务。 <!-- 提供方应用信息,用于计算依赖关系 -->   <dubbo:application name="demo-provi

算法体系-23 第二十三节:暴力递归到动态规划(五)

一 求K次打击之后,英雄把怪兽砍死的概率 1.1 描述 给定3个参数,N,M,K 怪兽有N滴血,等着英雄来砍自己 英雄每一次打击,都会让怪兽流失[0~M]的血量 到底流失多少?每一次在[0~M]上等概率的获得一个值 求K次打击之后,英雄把怪兽砍死的概率 1.2 分析 尝试 第一砍可能让他掉0滴血到m滴血,就是0到m的展开,k次的话就是有(1+m)有k个相乘 math.pow(m+1,

利用软件工具高效实施推行CMMI体系

CMMI过程域RDM功能CMMI L2MA(100%满足)1.    项目仪表盘(工作量统计、进度统计、缺陷统计、评审统计、问题统计、风险统计等)2.    业务流程效率统计(自动统计业务流程每个步骤的停留时间)3.    灵活自定义统计报表(支持用户灵活定义统计图表,支持饼图、柱状图、条形图、折线图等)4.    Jasper多维度报表自定义CM(100%满足)1.    灵活定义文档归档审计

01_RISC-V 入门及指令集学习

参考文档 risc-v入门:https://blog.csdn.net/bebebug/article/details/128039038RISC-V OS:https://blog.csdn.net/bebebug/article/details/130551378riscv-spec文档:https://riscv.org/wp-content/uploads/2019/12/riscv-s

APM Profile 在系统可观测体系中的应用

引言 应用程序性能分析(Application Performance Management,APM)是一个广泛的概念,涉及应用程序运行时各种性能指标的监测、诊断和优化。在可观测体系建设中,APM 是保障系统业务运行性能的关键技术,确保用户可以借助可观测技术手段,感知并发现以往监控工具难以发现的应用运行过程中隐藏的问题。 应用性能分析的主要场景 当我们应用观测云系统进行分析和监控时,采集到的

如何实现各种行业各种类型会员卡体系的设计

背景:目前很多的公司都有自己的会员体系,那么如何让用户成为会员呢?增加用户的粘性。如果你是一个架构师如何长远的设计整体的方案,从而兼容各种业务场景的使用?比如淘宝的88vip会员卡,肯德基的会员卡,麦当劳的会员卡,鲜丰水果的会员卡,京东会员卡,等等各种电子会员卡,有的是收费的,有的是免费的。 设计:

18-云原生监控体系-kube-state-metrics

文章目录 1. 介绍2. kube-state-metrics vs. metrics-server3. 安装3.1. 拉取镜像3.2. 部署到 kubernetes 集群3.2.1 Kubernetes Deployment 3.3. 配置到 Prometheus3.3. 自己构建 Docker 镜像3.4. 对于 prometheus-operator/kube-prometeus st