RV32M指令集
Risc-V定义了可选的RV32M,它定义了整数乘法除法指令。
总共8条指令。
| Category | Fmt | RV32I base | machine code(bin) | comment | |
| mul | 整数乘法 | R | mul rd, rs1, rs2 | 0000001[24-20,rs2][19-15,rs1]000[11-7,rd]0110011 | rd=rs1*rs2, 将结果的低32位写入rd,对于有符号数和无符号数相乘,结果低32位是相同的,所以只有一条指令,取低32位 |
| 整数乘法 | R | mulh rd, rs1, rs3 | 0000001[24-20,rs2][19-15,rs1]001[11-7,rd]0110011 | rd=rs1*rs2, rs1,rs2被当作有符号数,结果高32位写入rd | |
| 整数乘法 | R | mulhu rd, rs1, rs4 | 0000001[24-20,rs2][19-15,rs1]010[11-7,rd]0110011 | rd=rs1*rs2, rs1,rs2被当作无符号数,结果高32位写入rd | |
| 整数乘法 | R | mulhsu rd, rs1, rs5 | 0000001[24-20,rs2][19-15,rs1]011[11-7,rd]0110011 | rd=rs1*rs2, rs1当作有符号数,rs2被当作无符号数,结果高32位写入rd |
|
| div | 整数除法 | R | div rd, rs1, rs2 | 0000001[24-20,rs2][19-15,rs1]100[11-7,rd]0110011 | rd=rs1/rs2,rs1,rs2都被当作有符号数,将除法的商写回寄存器rd中。 |
| 整数除法 | R | divu rd, rs1, rs3 | 0000001[24-20,rs2][19-15,rs1]101[11-7,rd]0110011 | rd=rs1/rs2,rs1,rs2都被当作无符号数,将除法的商写回寄存器rd中。 | |
| 整数除法 | R | rem rd, rs1, rs4 | 0000001[24-20,rs2][19-15,rs1]110[11-7,rd]0110011 | rd=rs1/rs2,rs1,rs2都被当作有符号数,将除法的余数写回寄存器rd中。 | |
| 整数除法 | R | remu rd, rs1, rs5 | 0000001[24-20,rs2][19-15,rs1]111[11-7,rd]0110011 | rd=rs1/rs2,rs1,rs2都被当作无符号数,将除法的余数写回寄存器rd中。 | |

如果希望得到两个32位整数相乘;的完整的64位结果,Risc-V推荐使用下面的指令:
mulh[s|u] rdh,rs1, rs2;
mul rdl rs1,rs2
其中要求:两条指令的源操作数索引号和顺序必须完全相同。第一条指令的rdh索引必须不能与rs1,rs2索引号相同。处理器实现的微架构可以把两条指令融合成一条指令执行,从而提高性能。
如果希望同时得到两个32位数相除的商和余数,Risc-V推荐用以下指令:
div[u] rdq, rs1, rs2;
rem[u] rdr,rs1,rs2;
其中要求:两条指令的源操作数索引号和顺序必须完全相同。第一条指令的rdh索引必须不能与rs1,rs2索引号相同。处理器实现的微架构可以把两条指令融合成一条指令执行,从而提高性能。
Risv-V中除以0,并不会产生异常,仍会产生一个特殊的结果。

RV32M指令集的更多相关文章
- Risc-V指令集
https://riscv.org/specifications/ Risc-V文档包括:用户层指令集文档和特权架构文档,下面这两个文件的官网链接. User-Level ISA Specificat ...
- SSE指令集学习:Compiler Intrinsic
大多数的函数是在库中,Intrinsic Function却内嵌在编译器中(built in to the compiler). 1. Intrinsic Function Intrinsic Fun ...
- ARM-汇编指令集(总结)
ARM汇编指令集 指令.伪指令 (汇编)指令: 是机器码的助记符,经过汇编器编译后,由CPU执行. (汇编)伪指令:用来指导指令执行,是汇编器的产物,最终不会生成机器码. 有两种不同风格的ARM指 ...
- iOS------苹果设备处理器指令集(iPhone初代到iPhone5s)
(via 雅香小筑) Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7 ...
- SSE指令集优化学习:双线性插值
对SSE的学习总算迈出了第一步,用2天时间对双线性插值的代码进行了优化,现将实现的过程梳理以下,算是对这段学习的一个总结. 1. 什么是SSE 说到SSE,首先要弄清楚的一个概念是SIMD(单指令多数 ...
- RISC指令集的五个周期
RISC指令集的五个周期 RISC(reduced instruction set computer,精简指令集计算机)简称为精简指令集.RISC把执行指令的精力主要放在了经常使用的指令上面.本文主要 ...
- x86指令集同频性能提升
x86近5000条指令,迄今为止最复杂的指令集.这里不研究CISC & RISC,也不考虑process制程变化,主要是看最近几代IA架构对于同频率下性能的提升. x86指令集nasm文档 h ...
- CPU指令集
cpu作为一台电脑中的核心,它的作用是无法替代的.而cpu本身只是在块硅晶片上所集成的超大规模的集成电路,集成的晶体管数量可达到上亿个,是由非常先进复杂的制造工艺制造出来的,拥有相当高的科技含量. C ...
- 在UWP应用中加入Cortana语音指令集
本文介绍小娜语音指令集的使用场景,如何将UWP应用接入小娜的语音指令集,使用户直接通过小娜启动应用并使用应用中 一些轻量级的功能.文中以必应词典作为实例讲解必应词典UWP版本是如何接入小娜语音功能的. ...
随机推荐
- C++ 大学课堂知识点总结
一.从C到C++1.引用int b;int &a = b;//a是引用类型 定义的时候加& 表示引用 其余都是取地址 a是b别名 使用a和使用b是一样的 主要用于 ...
- VScode 光标乱跳
JS-CS_html formatter 卸载这个插件 如果没有,或者卸载跟这个类似的,如果还是没有就忽略这个 如果设置过自动保存 在配置上修改为 "files.autoSaveDelay& ...
- Web Service(二):cxf 实现
1. cxf简介 Web Services 的一种实现方式. Apache CXF = Celtix + XFire,后更名为 Apache CXF ,简称为 CXF. CXF 继承了 Celtix ...
- BZOJ2190 [SDOI2008]仪仗队 [欧拉函数]
题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...
- P4810 A’s problem(a)
P4810 A’s problem(a)From: admin 时间: 1000ms / 空间: 65536KiB / Java类名: Main 背景 清北NOIP春季系列课程 描述 这是一道有背景的 ...
- Codeforces Round #258 (Div. 2) D. Count Good Substrings 水题
D. Count Good Substrings 题目连接: http://codeforces.com/contest/451/problem/D Description We call a str ...
- IBM MR10i阵列卡配置Raid0/Raid1/Raid5(转)
RAID5配置: 其实RAID0/RAID1都基本一致,只是选择的类型不同. 1. 开机看到ctrl+h的提示按下相应的键,等ServerRaid 10-i卡初始化完成则进入WebBIOS 配置界面: ...
- WAP 2.0开发XHTML MP语法及常用功能
XHTML Mobile Profile 的基本结构 <?xml version="1.0" encoding="utf-8"?> <!DOC ...
- BrowserLog——使用Chrome控制台作为Log查看器
Chrome控制台是十分强大的,即使将它作为一个log查看器也是非常强大的,BrowserLog就是一个.net下的把Chrome作为log输出的程序包. 原理非常简单,server端将log数据通过 ...
- oracle like 条件拼接
(1) ibatis xml配置:下面的写法只是简单的转义 namelike '%$name$%' (2) 这时会导致sql注入问题,比如参数name传进一个单引号“'”,生成的sql语句会是:nam ...