RV32I指令集

RV32I指令集

  • 一、简介
    • 指令集总览:
    • 扩展指令集:提供整数乘法/除法(M)、原子操作(A)以及单精度(F)和双精度浮点(D)还有压缩指令集(C)
    • 内存:
  • 二、操作数相关
    • 常见操作数类型
    • 汇编代码分段
      • 文本段(text section)
      • 数据段(data section)
      • BSS段
  • 三、RV32I
    • 寄存器
    • 基础指令格式
    • 立即数变体指令
      • B是S格式的变体:
      • J是U格式的变体
      • 不同指令格式的立即数区别:
    • 整数指令
    • Control Transfer Instructions
    • Load and Store Instructions
    • Memory Ordering Instructions
    • Environment Call and Breakpoints
    • HInt指令

一、简介

如果一个组件包含一个独立的指令获取单元,则它被称为核心。
RISC-V兼容核心可能支持多个 RISC-V 兼容的硬件线程,或 harts,通过多线程。

执行环境包括:

  • Bare metal:harts直接由物理处理器实现,线程和指令可以直接访问物理地址空间。
  • RISC-V操作系统:通过多路复用提供多个用户级执行环境的,RISC-V 操作系统用户级 harts 到可用的物理处理器线程并通过控制访问通过虚拟内存到内存
  • RISC-V 虚拟机管理系统,提供多个主管级执行环境操作系统(一种虚拟化技术,在宿主操作系统上运行多个独立的Riscv操作系统实例)
  • RISC-V 仿真环境,例如 Spike、QEMU 或 rv8,它们在底层上模拟RISC-V hartsx86 系统(将Riscv处理器的指令集模拟在计算机的一种环境),可以提供用户级或主管级执行环境。

指令集总览:

RISC-V的基本ISA于RISC架构处理器相似,主要区别在于没有分支延迟槽,支持可选的可变长度的指令编码
RISC-V基本指令集包括:RV32I(32位整型运算)、RV64I(64位整型运算)、RV32E(RV32I 基本指令集的 RV32E
子集变体,主要支持小型嵌入式,整型寄存器只有16个)、RV128I(128位整型位运算)
RISC-V基本指令和指令集扩展的命名有一定的约定

扩展指令集:提供整数乘法/除法(M)、原子操作(A)以及单精度(F)和双精度浮点(D)还有压缩指令集(C)

标准整数乘法和除法扩展名为“M”,并且添加指令以乘除整数寄存器中保存的值。

标准原子指令扩展,用“A”表示,添加了原子读取、修改和写入的指令用于处理器间同步的内存。

标准单精度浮点扩展,用“F”表示,增加了浮点寄存器、单精度计算指令和单精度加载​​和存储。

标准双精度浮点扩展,表示为通过“D”,扩展了浮点寄存器,并增加了双精度计算指令,加载和存储。

标准的“C”压缩指令扩展提供了更窄的16位形式的通用指令。

内存:

RISC-V hart 具有用于所有内存访问的 2^XLEN
字节的单字节可寻址地址空间。

二、操作数相关

在RISC-V中,操作数是指计算机指令中用于进行操作的数据。它可以是寄存器、立即数或内存地址等形式。不同的操作数类型和寻址方式对应不同的指令格

常见操作数类型

以下是RISC-V中常见的操作数类型:

  • 寄存器操作数:指令将读取或写入寄存器中的数据。寄存器操作数通常包括源寄存器(source register)和目标寄存器(destination register),分别表示输入和输出的寄存器。

  • 立即数操作数:指令将使用一个固定的数字作为操作数。立即数操作数可以通过指令本身的二进制编码来表示,也可以在指令中以参数的形式传递给处理器。立即数操作数通常用于表示常量值或偏移量等。

  • 存储器操作数:指令将读取或写入存储器中的数据。存储器操作数需要指定存储器地址,该地址有时由寄存器提供,有时由立即数提供。

以下是RISC-V中常见的操作数寻址方式:

  • 直接寻址方式:直接从寄存器或立即数中获取操作数值。例如,addi rd, rs1, imm 将寄存器rs1中的值与立即数imm相加,并将结果存储到寄存器rd中。

  • 寄存器间接寻址方式:通过寄存器来存储一个地址,从该地址读取操作数。例如,lw rd, 0(rs1) 将以rs1为基址、偏移量为0的存储单元中的数据加载到寄存器rd中。

  • 基址寻址方式:通过寄存器和立即数相加得到一个地址,从该地址读取或写入操作数。例如,sw rs2,offset(rs1) 将寄存器rs2中的值存储到以rs1为基址、偏移量为offset的存储单元中。

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

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

相关文章

sm2证书生成(openssl3.0)

1、下载安装包 https://www.openssl.org/source/openssl-3.0.14.tar.gz 2、解压到指定位置 /appserver/openssl-3.0.14 3、安装依赖包 yum -y install gcc perl make zlib-devel perl-CPAN 4、编译 ./config shared --prefix/appserver/SM make depend make make install 5…

A52 STM32_HAL库函数 之 TIM通用驱动 -- B -- 所有函数的介绍及使用

A53 STM32_HAL库函数 之 TIM通用驱动 -- B -- 所有函数的介绍及使用 1 该驱动函数预览1.12 HAL_TIM_OC_DeInit1.13 HAL_TIM_OC_MspInit1.14 HAL_TIM_OC_MspDeInit1.15 HAL_TIM_OC_Start1.16 HAL_TIM_OC_Stop1.17 HAL_TIM_OC_Start_IT1.18 HAL_TIM_OC_Stop_IT1.19 HAL_TIM_OC_St…

Java学习-JDBC(三)

JDBC扩展 实体类和ORM 在使用JDBC操作数据库时,会发现数据是零散的,明明在数据库中是一行完整的数据,到了Java中变成一个个变量,不利于维护和管理,Java是面向对象的,一个表对应一个类,一行数据…

激活乡村振兴新动能:推动农村产业融合发展,打造具有地方特色的美丽乡村,实现乡村全面振兴

目录 一、推动农村产业融合发展 1、农业产业链条的延伸 2、农业与旅游业的结合 二、挖掘地方特色,打造美丽乡村 1、保护和传承乡村文化 2、发展特色农业 三、加强基础设施建设,提升乡村品质 1、改善农村交通条件 2、提升农村水利设施 四、促进…

使用【AbortController】终止请求

AbortController 是一个 Web API,用于终止一个或多个 Web 请求。当你使用 fetch API 发送异步请求时,你可能需要在某些情况下主动终止这些请求。使用 AbortController 可以实现这一功能。 基本用法: 创建一个 AbortController 实例: const co…

JavaEE——声明式事务管理案例:实现用户登录

一、案例要求 本案例要求在控制台输入用户名密码,如果用户账号密码正确则显示用户所属班级,如果登录失败则显示登录失败。实现用户登录项目运行成功后控制台效果如下所示。 欢迎来到学生管理系统 请输入用户名: zhangsan 请输入zhangsan的密…

吴恩达2022机器学习专项课程C2W2:2.23 选修_反向传播算法的工作原理(什么是导数图计算大型神经网络)

目录 引言一.导数的计算1.epsilon与导数的关系2.其它导数符号形式3.导数小结 二.小型神经网络的计算图1.什么是计算图(前向传播过程)2.反向传播计算过程3.验证反向传播的计算结果4.为什么用反向传播计算导数? 三.扩大神经网络的计算图1.计算反…

笔记本充电出现了问题。

不知道为什么。电池充电图片一直显示的空。谁能救救我!

C51学习归纳9 --- I2C通讯学习(重点)

首先,我自己学习过以后的直观感觉,通信协议是单片机的灵魂之一,只有规定好了通信协议我们才能够正确的接收到信息,才能实现更加深入的研究。所以这一部分是需要好好学习的。 本节借助一个可存储的芯片AT24C02,进行在I2…

docker国内被墙,有什么可以平替的公有云仓库?

目前有两个: 1、一个是红帽 quay.io 2、一个是Github的仓库 ghcr.io 红帽的不是那么全, Github的比较全,基本满足日常使用。

C语言怎样初始化图形模式?

一、问题 在C语⾔中,initgraph( ) 函数⽤于初始化图形模式。初始化时,那么多参数都是⼲什么的?怎样设置? 二、解答 initgraph( ) 函数⽤于初始化图形模式,其语法格式如下。 void far initgraph(int far * gdriver, i…

ACM算法学习路线、清单

入门 模拟、暴力、贪心、高精度、排序 图论 搜索 BFS、DFS、IDDFS、IDA*、A*、双向BFS、记忆化 最短路 SPFA、bellman-fort(队列优化)、Dijkstra(堆优化)、Johnson、Floyd、差分约束、第k短路 树 树的重心和直径、dfs序、树链刨分与动态树、LCA、Prufer编码及Cayley定理…

对象存储OSS 客户端签名直传的安全风险和解决方法

1. 前言 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面…

mysql批量修改列备注

--把表名,字段名,备注导入到这个表里,表明和字段名一定要一致!!! CREATE TABLE supplement_clumn_comment ( table varchar(200) DEFAULT NULL COMMENT 表名, columns varchar(200) DEFAULT NULL COMME…

11.链表

数组的分类:便于遍历 静态数组:int arr[10]数据过多造成空间溢出,数据过小空间浪费 动态数组:malloc calloc realloc 合理利用空间不能快捷的插入或删除数据(会涉及到大量的数据移动) 知识点一&#xff1…

玉米粒计数检测数据集VOC+YOLO格式107张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):107 标注数量(xml文件个数):107 标注数量(txt文件个数):107 标注类别…

如何快速入门Element-UI:打造高效美观的前端界面

Element-UI 是一款基于 Vue.js 的开源组件库,提供了丰富的 UI 组件,可以帮助开发者快速构建美观、响应式的前端界面。本文将详细介绍如何快速入门 Element-UI,包括环境搭建、组件使用、样式定制及常见问题解决方法,帮助你高效地使用 Element-UI 进行前端开发。 一、环境搭…

Spring (48)Feign

Feign是一个声明式的Web服务客户端,它让编写Web服务客户端变得更加容易。它的目标是通过简化HTTP API客户端的编码工作来减少开发人员的负担。使用Feign可以创建一个接口,并在接口上声明方法与远程服务上的一个HTTP资源相绑定。Spring Cloud整合了Feign&…

ABC351

C 栈的应用 #include<bits/stdc.h>using namespace std;stack<int>stk;int main() {int n;cin>>n;for(int i1;i<n;i){int a;cin>>a;while(!stk.empty()&&astk.top()){stk.pop();a;}stk.push(a);}cout<<stk.size()<<endl;retur…

java面试题: HashMap、HashSet 和 HashTable 的区别

HashMap 常用方法 HashMap 是一个基于哈希表的 Map 接口的实现。它允许使用 null 值和 null 键。 java 复制 // 创建一个HashMap HashMap<KeyType, ValueType> map new HashMap<>(); // 添加元素 map.put(key, value); // 获取元素 ValueType value map.get…