RISC-V 整型通用寄存器介绍
简介
RISC-V64位/32位提供了32个整型通用寄存器,编号是x0~x31,这些整型通用寄存器的宽度与架构位数一致。
浮点数寄存器与整形寄存器一样也提供了32个:f0~f31,位数与架构位数一致。
通用寄存器介绍
零寄存器
x0/zero
x0寄存器又被称为zero寄存器,它的读写是无效的,它的值只能为0,这是为了让编译器进行优化
比如当进行一些运算时:
add x1, x2 , x3
上面这段汇编的作用是进行相加运算,将x2和x3寄存器的值相加的结果并放入x1寄存器,但是如果x3寄存器的值为0
处理器仍然需要去读取一次x3寄存器的值,所以编译器可以进行这样的优化:
add x1, x2, x0
当RISC-V处理器执行这条指令的时不会去读取x0寄存器的值,会直接按0来运算,这样就可以省去与0做运算时读取的步骤。
RISC-V处理器在设计时只要涉及到x0寄存器的读取一律按0来处理不会去读取x0的寄存器,这么做的目的是为了方便编译器优化某些运算。
返回地址寄存器
x1/ra
x1寄存器也称为RA寄存器,意为Return Address。当一个函数被调用时,RA寄存器会被自动保存下来,以便在函数执行完毕后能够返回调用该函数的位置。因此,在函数执行过程中,RA寄存器也可以被用来存储函数的返回地址。它也时常被用来函数传参。
栈指针寄存器
x2/sp
通常用于存储栈指针(stack pointer)。在RISC-V中,栈是一种先进后出(Last-In-First-Out)的数据结构,常用于函数调用时的变量保存和程序现场保护等操作。
全局寄存器
x3/gp
x3寄存器是RISC-V架构中的通用寄存器之一,通常用于存储全局指针(global pointer)。在RISC-V中,全局指针是一个特殊的指针,指向全局变量和静态数据区(static data region)的起始地址。
全局变量是在程序启动时就已经被分配好的变量,它们通常存储在静态数据区中,其内存地址在编译时就已经确定。全局指针GP通常指向静态数据区的起始地址,用于访问和管理全局变量。
线程寄存器
x4/tp
x4寄存器是RISC-V架构中的通用寄存器之一,通常用于存储线程指针(thread pointer),也称为线程局部存储器指针(thread-local storage pointer)。
在线程级别的编程中,线程指针是一个非常重要的概念。它是一个指针,指向当前线程的局部存储器(thread-local storage),也就是线程私有的数据区域。在多线程编程中,每个线程都有自己独立的线程指针,并且可以在其对应的局部存储器中存储和管理线程私有的数据。
临时寄存器
x5/t0、x6/t1、x7/t2、x28/t3、x29/t4、x30/t5、x31/t6
这些寄存器是一个临时寄存器,通常用于临时存储计算中的中间结果或临时变量。
函数调用寄存器
x8/ra
x8是一个通用寄存器,主要用于存储数据和地址。
x8通常被称为ra寄存器,它有一个特殊的作用,即用于存储函数返回地址,因此也被称为返回寄存器。在函数调用时,调用者将函数返回地址压入栈中,然后调用函数时将返回地址存储在ra寄存器中,函数执行完毕后再从ra寄存器中取出返回地址并跳转回调用者。X8寄存器还可以被用作普通的通用寄存器,存储数据和地址。
x9/s1
x9寄存器是RISC-V CPU的一个通用寄存器,通常被称为s1(scratch register 1)。
由于RISC-V代码遵循RISC(Reduced Instruction Set Computing,精简指令集计算机)原则,所以寄存器数量比较有限,因此x9寄存器通常被用作一个通用寄存器,多种指令都会使用到它,比如函数调用时用于保存函数调用者的栈指针,或者作为全局指针等。除此之外,x9寄存器也可以用于实现一些特殊指令的优化,比如乘法指令的高32位运算或者计算指令的中间结果等。
x18/s2
它的作用是用于执行指令时暂存临时数据,比如保存函数调用时的参数、局部变量等等。由于它是一个特殊寄存器,因此在CPU中还有一些特殊的用途。
x18寄存器还可以用于执行一些特殊操作,比如RISC-V CPU中的原子操作。原子操作需要在保证操作的原子性的同时,还需要快速地完成,因此x18寄存器就成了很好的选择。此外,x18寄存器还可以用于实现一些编译器优化,比如进行指令选取、指令调度等等。因此,x18寄存器可以看做是一个非常重要的寄存器,在程序运行过程中扮演着举足轻重的角色。
x19/s3、x20/s4、x21/s6、x22/s7、x24/s8、x25/s9、x26/s10、x27/s11
这些寄存器可以用来存储临时变量或者函数参数等数据。在函数调用时,这些寄存器通常被用来存储调用者保存的寄存器、返回地址或者参数值,具体使用方式取决于编程语言规范和系统调用规范。
传参寄存器
x10/a0
x10 寄存器通常被称为 a0 寄存器,在程序中,a0寄存器通常被用于存储函数的输入参数,也可以用于存储函数的返回值。当函数被调用时,输入参数的值被加载到a0寄存器中,并通过函数调用将参数传递给被调用的函数。被调用的函数可以将返回值存储在a0寄存器中,并通过函数调用返回给调用方。
x11/a1、x12/a2、x13/a3、x14/a4、x15/a5、x16/a6、x17/a7
x11 ~ x17用于传递函数参数,从x11到x17分别对应函数第一个参数和第七个参数
相关文章:
RISC-V 整型通用寄存器介绍
简介 RISC-V64位/32位提供了32个整型通用寄存器,编号是x0~x31,这些整型通用寄存器的宽度与架构位数一致。 浮点数寄存器与整形寄存器一样也提供了32个:f0~f31,位数与架构位数一致。 通用寄存器介绍 零寄存器 x0/zero x0寄存…...
学习Vue:【性能优化】异步组件和懒加载
在Vue.js应用开发中,性能优化是一个至关重要的主题,而异步组件和懒加载是提升性能的有效方法之一。本文将介绍什么是异步组件和懒加载,以及如何在Vue.js中应用这些技术来提升应用性能。 异步组件和懒加载 异步组件 异步组件是指在需要的时候…...
pdf格式文件下载不预览,云存储的跨域解决
需求背景 后端接口中返回的是pdf文件路径比如: pdf文件路径 (https://wangzhendongsky.oss-cn-beijing.aliyuncs.com/wzd-test.pdf) 前端适配是这样的 <ahref"https://wangzhendongsky.oss-cn-beijing.aliyuncs.com/wzd-test.pdf&…...
httplib + nlohmann::json上传数据时中文乱码解决
1、nlohmann::json 1.1 编码格式使用UTF-8 参考 nlohmann::json 中文乱码解决方案 (1)将数据先转为UTF-8格式 2、httplib 2.1 上传数据前 (1)调用httplib::Response对象的set_header()方法来设置编码格式 httplib::Response res…...
JavaScript中的设计模式之一--单例模式和模块
虽然有一种疯狂天才的感觉可能很诱人,但重新发明轮子通常不是设计软件的最佳方法。很有可能有人已经遇到了和你一样的问题,并以一种聪明的方式解决了它。这样的最佳实践在形式化后被称为设计模式。今天我们来看看它们的概念,并检查单例模式和…...
回归预测 | MATLAB实现GAM广义加性模型多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现GAM广义加性模型多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GAM广义加性模型多输入单输出回归预测(多指标,多图)效果一览基本介绍程序设计参考资料 效果一览 基本…...
css学习4(背景)
1、CSS中,颜色值通常以以下方式定义: 十六进制 - 如:"#ff0000"RGB - 如:"rgb(255,0,0)"颜色名称 - 如:"red" 2、background-image 属性描述了元素的背景图像. 默认情况下,背景图像进…...
二、SQL,如何实现表的创建和查询
1、新建表格(在当前数据库中新建一个表格): (1)基础语法: create table [表名]( [字段:列标签] [该列数据类型] comment [字段注释], [字段:列标签] [该列数据类型] comment [字段注释], ……,…...
大数据及软件教学与实验专业实训室建设方案
一 、系统概述 大数据及软件教学与实验大数据及软件教学与实验在现代教育中扮演重要角色,这方面的教学内容涵盖了大数据处理、数据分析、数据可视化和大数据应用等多个方面。以下是大数据及软件教学与实验的一般内容:1. 数据基础知识:教授学生…...
信创办公–基于WPS的EXCEL最佳实践系列 (公式和函数)
信创办公–基于WPS的EXCEL最佳实践系列 (公式和函数) 目录 应用背景相关知识操作步骤1、认识基本的初级函数2、相对引用,绝对引用,混合引用3、统计函数4、文本函数 应用背景 熟练掌握Excel的函数工具能让我们在日常的使用中更加方…...
【Apollo】自动驾驶感知——毫米波雷达
作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖…...
SpringBoot部署到腾讯云
SpringBoot部署到腾讯云 此处默认已经申请到腾讯云服务器,因为本人还没有申请域名,所以就直接使用的ip地址 XShell连接到腾讯云 主机中填写腾讯云的公网ip地址 公网ip地址在下图中找到 接下来填写服务器的用户名与密码 一般centOS用户名为rootÿ…...
Git 设置代理
Git 传输分两种协议,SSH和 http(s),设置代理也需要分两种。 http(s) 代理 Command Line 使用 命令行 模式,可以在Powershell中使用以下命令设置代理: $env:http_proxy"http://127.0.0.1:7890" $env:https_proxy&quo…...
基于Spring Boot的机场VIP客户管理系统的设计与实现(Java+spring boot+MySQL)
获取源码或者论文请私信博主 演示视频: 基于Spring Boot的机场VIP客户管理系统的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java s…...
图数据库_Neo4j学习cypher语言_使用CQL_构建明星关系图谱_导入明星数据_导入明星关系数据_创建明星关系---Neo4j图数据库工作笔记0009
首先找到明星数据 可以看到有一个sheet1,是,记录了所有的关系的数据 然后比如我们搜索一个撒贝宁,可以看到撒贝宁的数据 然后这个是构建的CQL语句 首先我们先去启动服务 neo4j console 然后我们再来看一下以前导入的,可以看到导入很简单, 就是上面有CQL 看一下节点的属性...
恒运资本:算力概念强势拉升,亚康股份“20cm”涨停,首都在线等大涨
算力概念21日盘中强势拉升,到发稿,亚康股份“20cm”涨停,首都在线、汇金股份涨逾11%,鸿博股份亦涨停,南凌科技涨近9%,科创信息、神州数码、铜牛信息等涨超7%。 音讯面上,8月19日,202…...
Neo4j之union基础
UNION 用于将多个 MATCH 或 RETURN 子句的结果合并为一个结果集。它可以用来合并不同模式的节点和关系,或者将多个查询的结果合并在一起。以下是一些常用的示例和解释: 基本用法: MATCH (p:Person) WHERE p.age > 30 RETURN p.name AS n…...
搭建:基于nginx的上传功能
搭建:基于nginx的上传功能 文章目录 搭建:基于nginx的上传功能一、准备二、安装nginx1.1 解压nginx和nginx插件1.2 编译并安装nginx 三、启动一个python后台服务,用于上传到临时路径文件,转移到正式路径四、添加nginx配置…...
JavaScript高级
1、JavaScript面向对象 1.1、面向对象介绍 在 Java 中我们学习过面向对象,核心思想是万物皆对象。在 JavaScript 中同样也有面向对象。思想类似。 1.2、类的定义和使用 结构说明 代码实现 <!DOCTYPE html> <html lang"en"> <head>…...
隔断让你的办公室变得更加智能、环保、人性化
隔断可以在办公室中起到多种重要作用,使办公室更加智能、环保和人性化。以下是一些可能的方式: 1. 智能办公室控制系统:可以通过隔断集成智能办公室控制系统,实现办公室照明、温度和空调等设备的自动调节,提高能效和舒…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
