机器模式下mret和ret指令有什么区别?

2024-03-04

当RISC-V核心工作在机器模式时,mret和ret指令有什么区别吗?


  1. ret is a pseudoinstruction, which actually is a jalr instruction, while mret is a real instruction. enter image description here
  1. 它们用于不同的情况。ret用于从普通函数返回,而mret用于从陷阱(异常或中断)返回,但有一些副作用。 从RISC-V特权文档来看,

MRET、SRET 或 URET 指令用于从 M 模式、S 模式或 分别为U型。当执行xRET指令时,假设xPP保存值y,x IE 设置为 x PIE;特权模式改为y; x PIE 设置为 1; xPP 设置为 U(或 M,如果 不支持用户模式)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器模式下mret和ret指令有什么区别? 的相关文章

  • 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六)

    优化七 编译器优化 降低miss率 处理器和主内存之间不断扩大的性能差距促使编译器编写者仔细检查内存层次结构 看看编译时优化是否可以提高性能 再次 研究分为指令缺失的改进和数据缺失的改进 接下来介绍的优化可以在许多现代编译器中找到 有些程序
  • RISC-V新进展!deepin 成功适配VisionFive 2

    RISC V指令集是基于精简指令集计算 RISC 原理建立的开放指令集架构 ISA RISC V则是在指令集不断发展和成熟的基础上建立的全新指令 RISC V指令集完全开源 设计简单 拥有模块化的设计 完整的工具链 易于移植Unix系统 以
  • 第十六章 Chisel入门——搭建开发环境

    用于编写Chisel的Scala内容已经全部讲完了 下面就可以正式进入Chisel的学习之旅了 有兴趣的读者也可以自行深入研究Scala的其它方面 不管是日后学习 工作 或是研究Chisel发布的新版本 都会有不少的帮助 在学习Chisel
  • RISC-V IDE MRS使用笔记(八):实现局域网下的远程调试功能

    RISC V IDE MRS使用笔记 八 实现局域网下的远程调试功能 1 原理介绍 MRS调试时上位机与硬件的通信基于gdb客户端与服务端的连接 调试时 首先启动openocd以挂载gdbserver的服务到指定端口上 通信建立后 监听到界
  • 和你一起从零开始写RISC-V处理器(1)

    RISC V加法指令的实现 文章目录 RISC V加法指令的实现 前言 一 RISC V简介 二 指令实现的前期准备 1 指令 2 ADD指令和ADDI指令 3 三级流水线结构 4 一个需要注意的点 5 再来一个需要注意的点 6 环境搭建
  • RISC-V from scratch 5:机器模式

    RISC V from scratch 5 机器模式 接上一篇博客 我今天继续写 RISC V from scratch 系列博客 原本我打算将该英文系列全部翻译成中文 但原作者貌似没有把这一系列完成就咕咕了 因此本文的内容是我自己实践的内
  • 沁恒CH32V307以及CH32VF103中断只能进一次的解决方法

    文章背景 笔者最近使用沁恒CH32V307处理器进行应用开发 基于RT Thread实时操作系统和LWIP做TCP和CAN的透传 因为官方BSP并没有适配RT Thread的CAN驱动 暂时将RT Thread作为普通实时系统使用 先不对C
  • 单周期RISC-V架构CPU的设计---设计篇

    目录 一 模块设计 1 pc reg v 1 1 功能说明 1 2 整体框图 1 3 接口列表 1 4 内部信号说明 1 5 关键电路 2 id v 2 1 功能说明 2 2 整体框图 2 3 接口列表 2 4 内部信号说明 2 5 关键电
  • Chisel 手册 英文版

    Chisel Manual Jonathan Bachrach Huy Vo Krste Asanovi EECS Department UC Berkeley jrb huytbvo krste eecs berkeley edu Apr
  • 从零开始设计CPU——DEILT_RISCV

    目录 前言 相关资料参考 Deilt RISC Introduction 1 feature 2 Architecture 3 工程目录文件说明 4 仿真编译环境及工具 进程 2023 03 01 2023 03 08 03 13 2023
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • 八、RISC-V SoC外设——GPIO接口 代码讲解

    前几篇博文中注释了RISC V的内核CPU部分 从这篇开始来介绍RISC V SoC的外设部分 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 目录 0 RISC V SoC注解系列文章目录 1 结构
  • 吃透Chisel语言.18.Chisel模块详解(五)——Chisel中使用Verilog模块

    Chisel模块详解 五 Chisel中使用Verilog模块 上一篇文章讲述了用函数实现轻量级模块的方法 可以大幅度提升编码效率 Chisel中也提供了一些好用的函数 方便我们编写代码 也方便Chisel编译器优化生成的硬件电路 在Chi
  • 基于rCore的试点班lab1 实现一个系统调用

    实现一个属于你的系统调用 并写一个用户进程来调用该系统调用 该系统调用的功能为 输出你的名字 拼音即可 和学号 相关知识 系统调用 是操作系统提供给应用程序使用的接口 可以理解为一种可供应用程序调用的特殊函数 应用程序可以发出系统调用请求来
  • 如何用GDB调试交叉编译的QEMU程序?

    我在使用 GDB 调试 QEMU 中运行的简单程序时遇到问题 GDB似乎无法找到我在程序中的位置 因为它总是显示 作为我当前的位置 并且它永远不会达到我设置的任何断点 在一个终端中 我运行 QEMU cat add c int main i
  • Risc-V:能够利用 GCC 的简单 RV32I 实现的最低 CSR 要求

    对于能够运行 GCC 生成的机器代码的 RV32I 最低的 CSR 要求是什么 我正在考虑一个简单的基于 fpga 嵌入式 的实现 不需要虚拟内存或 Linux 支持 另外 我应该使用什么 GCC 标志来防止它使用未实现的 CSR 相关指令
  • RISC-V 使用 LUI 和 ADDI 构建 32 位常量

    LUI 加载立即数 用于构建32位常量并使用U型格式 LUI 将 U 立即数放入目标寄存器 rd 的高 20 位 并用零填充最低 12 位 我在手册中找到了这个 但是如果我想将 0xffffffff 移动到寄存器 我需要的所有代码是 LUI
  • 为什么 RV64 为 32 位操作而不是 64 位操作引入新的操作码

    在浏览 RISC V 规范时 我注意到 64 位版本与 32 位版本的不同之处在于 它 将寄存器扩展至 64 位 更改了指令以作用于整个 64 位范围 添加了执行 32 位操作的新指令 这使得 RV32 代码与 RV64 不兼容 但是 如果
  • RISC-V指令集中的FENCE指令是什么意思?

    在浏览 RISC V ISA 时 我在内存模型部分看到了一条指令 FENCE 指令 它到底是什么意思 RISC V ISA 使用宽松的内存模型 其中一个线程执行的加载和存储的顺序在另一个线程看到时可能不同 这样做是为了启用提高内存系统性能的
  • GDB 中断命令不会在命令文件中执行

    我有一个调试脚本 它执行以下操作 设置两个断点 让我们称呼他们吧start and end断点 启动后 脚本将继续执行 直到start命中断点 once start命中断点 我执行单步执行 直到end命中断点 这是我的命令文件 end br

随机推荐

  • 使用 EF Core 7 的 .NET 7 控制台应用程序为什么没有 OnConfiguring?

    我首先构建了数据库 NET 7 和 EF Core 7 应用程序 并使用 EF Power Tools 创建上下文和模型类 我继续阅读有关OnConfiguring 在上下文类中 我只有OnModelCreating 我做错了什么 谢谢 道
  • Clojure:转换 Varargs 但保留 Varargs

    我正在用 Clojure 开发一个小宠物项目 我有一个传递可变参数的函数 defn foor bar args let new args custom transform args do something new args But do
  • 从 UITapGestureRecognizer 中删除目标

    我已将操作作为匿名方法添加到我的手势识别器中 UITapGestureRecognizer tapGesture new UITapGestureRecognizer tapGesture AddTarget gt HandleTap ta
  • .Net Core 3.0 Nginx 不提供静态文件

    我有一个 net core 3 0 Web 应用程序 我想在 Debian Buster 服务上运行 我按照微软的说明进行操作发现Here https learn microsoft com en us aspnet core host a
  • 特定递归函数的增长顺序

    以下函数的增长顺序是什么 static int counter 0 static void Example int n if n 1 return for int i 0 i lt n i counter Example n 2 为了解决这
  • 如何在给定的绘图上绘制垂直线

    给定时间表示中的信号图 如何绘制标记相应时间索引的线 具体来说 给定一个时间索引范围从 0 到 2 6 秒 的信号图 我想绘制垂直红线来指示列表的相应时间索引 0 22058956 0 33088437 2 20589566 我该怎么做 添
  • 如何检查Google用户的图片是默认的还是上传的?

    如何检查用户的个人资料图片是默认的还是上传到 Google 的 Note 当您从 API 获取用户详细信息时 所有默认个人资料图片都有以下 URL https lh3 googleusercontent com XdUIqdMkCWA AA
  • 适用于 Safari 浏览器的类似 Firebug 的插件

    Safari 是否有一个开发工具插件 就像 Firefox 的 Firebug 插件一样 Firebug 很棒 但 Safari 提供了自己的内置开发工具 如果您还没有尝试过 Safari 的开发工具包 请转到 Safari gt 首选项
  • Vim 的 Clang 完整版

    我复制了clang complete vim插件 但是当我输入 在一些变量之后 它说 未找到模式 我搜索了这个问题 有人说我应该配置g clang complete auto and g clang complete copen 我怎样才能
  • Swift 从对象数组映射到异步函数数组并等待它们全部

    我刚刚更新到 Xcode 13 2 1 现在可以访问异步等待 并且我正在尝试找到可以从合并 转换 为异步等待的地方 我想实现以下目标 给定一个像 的类型 struct Person let name String func fetchAva
  • React Native 地图:在react-native-maps 中使用自定义标记时,标记图像不显示

    我在用着react native maps但我遇到了一个问题 经过大量谷歌搜索后没有答案让我在这里问它 我正在尝试使用自定义标记作为地图中的标记 如下图所示 当我搜索时我发现需要使用自定义标记来完成创客的设计 然后我创建了一个自定义标记组件
  • 如何将 Jsoup(Java html 解析器)中生成的文档转换为字符串

    我有一个用 jsoup 制作的文档 如下所示 Document doc Jsoup connect http en wikipedia org get 我该如何转换它doc成字符串 你有没有尝试过 Document doc Jsoup co
  • JavaFX RotateTransition 无限期停止

    下面代码的问题在于两个动画之间有大约半秒的暂停 我希望节点不断旋转 RotateTransition rt new RotateTransition Duration seconds 2 syncNode rt setFromAngle 0
  • 如何停止反应原生动画

    我试图在本机反应中停止动画 但它不起作用 我尝试这样做停止动画方法 https facebook github io react native docs animated html stopanimation 这是我的代码 construc
  • 如何使用 Spark 查找中位数和分位数

    我怎样才能找到一个中位数RDD使用分布式方法 IPython 和 Spark 计算整数 这RDD大约有 700 000 个元素 因此太大而无法收集和查找中位数 这个问题与这个问题类似 如何使用 Apache Spark 计算精确中位数 ht
  • 如何在新窗口中打开链接?

    我有一个特定链接的点击处理程序 在其中我想做类似以下的事情 window location url 我需要这个才能在新窗口中实际打开网址 我该怎么做 您可以喜欢 window open url window name window sett
  • Java 并行流的性能影响

    使用的最佳实践是什么 stream parallel 例如 如果您有一堆阻塞 I O 调用 并且您想要检查是否 anyMatch 并行执行此操作似乎是明智的做法 示例代码 public boolean hasAnyRecentReferen
  • 在 C# 中删除继承对象的属性

    如果我有一个复杂的对象 我可以继承它并remove or ignore某些属性 如果你不在乎why我想这样做 请随意提交答案 如果您关心的话 可以阅读这个问题 https stackoverflow com questions 860786
  • 无法让 php exec 工作

    我已经为此奋斗了几个小时 但似乎无法解决 尝试了 exec shell exec 和 system 什么都不起作用 我有这个 exec usr bin php var www vhosts domain com httpdocs shell
  • 机器模式下mret和ret指令有什么区别?

    当RISC V核心工作在机器模式时 mret和ret指令有什么区别吗 ret is a pseudoinstruction which actually is a jalr instruction while mret is a real