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

相关文章

Java异常体系----深入讲解

JAVA异常体系 1.error 错误 程序无法处理的异常, 它是由JVM产生和抛出的,比如OutOfMemoryError.ThreadDeath等 示例: public class Test {public static void main(String[] args) {run();}public static void run(){run();}} 堆栈溢出,这是由于JV

软件架构风格: C2体系风格

通俗示例 想象一下你正在使用一套乐高积木来搭建一个复杂的模型。每块乐高积木都是一个独立的部件,而乐高积木之间的接口设计得非常标准化,使得你可以轻松地将不同的积木组合在一起。如果你想要更换掉模型中的某一块积木,你只需要把它拔下来,然后插入新的积木即可,不需要重新设计整个模型。 通俗解释 C2体系风格 C2是一种软件体系结构风格,它强调组件之间的松耦合和高内聚。在C2风格中,软件系统被设计为一

大数据开发体系,进来了解一下?

“5G失败、物联网已死、鼓吹大数据无用论”打开手机又是承接今日份的“丧”, 这种丧味十足的帖子我们已经被投喂得太多了 ,还是原来的配方,还是熟悉的味道,说这些话的人,多少显得无聊而耸人听闻。 有这样一句话叫数据重构商业,流量改变未来。不管怎么唱衰,大数据时代已经向我们滚滚而来,早已成为现代社会不可缺少的一部分。 “不参与大数据建设,10年后一定后悔”。 早在几年前,马云就在某次

Spark 全套知识体系,终于搞到了!

福利手慢无 ☆☞ 廖雪峰的大数据开发必备教程-Spark视频资料终于免费啦!限额领取~ 2019年已过去3/4,年初许下的愿实现了吗?可爱的程序员们都有哪些愿望呢? 找个女朋友。升级电脑、键盘、鼠标等。来一次说走就走的旅行。升职&加薪。…… 说起“升职&加薪”,一向“多金”的程序员们,今年的职场晋升似乎并非那么顺畅。说是大环境所致,这也没错。 但有一部

SaaS系列介绍之十三: SaaS系统体系架构

1 系统体系架构设计   软件开发中系统体系架构决定了一个系统稳定性、健壮性、可扩展性、兼容性和可用性,它是系统的灵魂。体系架构是架构师所关注的核心。良好的体系架构是系统成功的开端,否则,再好的代码与设计也无济于事。   2 当前.net主要的开发框架简介   l Castle   Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、A

Java核心知识体系-并发与多线程:线程基础

1 先导 Java线程基础主要包含如下知识点,相信我们再面试的过程中,经常会遇到类似的提问。 1、线程有哪几种状态? 线程之间如何转变? 2、线程有哪几种实现方式? 各优缺点? 3、线程的基本操作(线程管理机制)有哪些? 4、线程如何中断? 5、线程有几种互斥同步方式? 如何选择? 6、线程之间的协作方式(通信和协调)? 下面我们 一 一 解读。 2

调用云服务认证体系

一、介绍 基于鸿蒙Next实现应用的认证注册流程。二、场景需求 用户注册模块: 邮箱/手机号验证: 密码设置: 个人信息填写: 用户登录模块: 邮箱/手机号与密码登录: 用户输入注册时的邮箱/手机号和密码。 第三方登录选项: 提供使用社交账号(如微信、Facebook、Google等)直接登录的选项。 忘记密码模块: 找回密码流程: 用户输入注册时的邮箱/手机号,系统发送重置链接或

知识体系的构建与总结——前言

经过两年的学习, 知识零碎很杂,很多都是凭一时兴趣去学的,缺少一个完整的知识体系,利用闲暇时间把这两年来所学的知识归纳一下,做个总结,同时也以便日后温习。 一、机器视觉VS计算机视觉 1.1机器视觉与计算机视觉的联系与区别 1.2视觉发展现状及应用 二、机器视觉系统 2.1视觉系统的研究层次:计算机理论层次、表达与算法层次、硬件实现层次。 2.2双目视觉系统:图像采集、相机

Linux:深入剖析计算机软硬件架构与体系

Linux:深入剖析计算机软硬件架构与体系 一、引言 在计算机科学领域,Linux系统以其开源、灵活、高效的特性,成为众多服务器、嵌入式系统以及个人计算机的首选操作系统。深入理解Linux的软硬件体系和架构,对于提升系统性能、优化应用程序、以及进行高效的系统管理至关重要。本文将从冯诺依曼体系结构出发,深入探讨Linux系统的软硬件构成及其工作原理。 二、冯诺依曼体系结构 冯诺依曼体系结构是

王立铭脑科学50讲后续10,自己从课程中提起自己所需的知识,安放到自己的知识体系中。

王立铭脑科学50讲后续10,自己从课程中提起自己所需的知识,安放到自己的知识体系中。 1、大脑功能是由先天、后天两方便共同决定,先天有一堆带电量的开关,后天通过学习不断电量这些开关。 这部分知识放在整个体系中,在需求和动机之内,每个人还有自己不同程度的动机偏好,围绕着动机,产生的一些列奖惩机制、预设的情绪处理算法、语言能力、预测未来的能力等,每个人都有不同程度的差别,同时提醒自己,像价值观、人