【ARM64 常见汇编指令学习 21 -- ARM RET 与 ERET】


请阅读【嵌入式开发学习必备专栏 】


文章目录

    • ARM RET 与 ERET
      • ARMv8 ERET 指令
      • RET 与 ERET 的区别

ARM RET 与 ERET

在 ARMv8 架构中,RET 指令用于从函数或者过程返回。它主要负责从当前过程跳转回调用者,并恢复调用者的程序计数器 (PC) 的值。

语法:

RET {Xn} 

Xn 是一个可选的寄存器,通常为 X30(也称为 LR,链接寄存器),其中包含返回地址。如果没有指定寄存器,则默认为 X30

工作原理:

  1. Xn(通常是 LR)寄存器中的值加载到程序计数器 PC 中,从而跳回到调用过程之后的地址。
  2. 根据需要更新程序状态,如堆栈指针 SP 和其他调用约定相关的寄存器。

示例:

func: // 函数内容 RET // 返回到调用者,等同于 RET X30 another_func: // 另一个函数内容 RET X29 // 如果X29寄存器中存放了返回地址,则使用它返回 

ARMv8 ERET 指令

ERET 指令用于从异常返回,特别是从中断或陷阱处理程序返回到之前的执行上下文。ERET 还原 Exception Level (EL) 发生变化前的程序状态,它通常在处理操作系统级别的代码中使用。
语法:

ERET 

ERET 指令没有操作数。

工作原理:

  1. ELR_ELx(Exception Link Register)恢复程序计数器 PC
  2. SPSR_ELx(Saved Program Status Register)恢复程序状态寄存器 CPSR(Current Program Status Register),包括标志位和执行状态(例如 ARM 或 Thumb 模式)。

示例:

// 假设处于异常处理程序内部 
// 执行 ERET 会返回到触发异常的指令之后的程序地址 ERET 

RET 与 ERET 的区别

  • RET 用于标准的函数返回,而 ERET 用于从异常或中断处理程序返回。
  • RET 只是简单地将链接寄存器 LR 的值加载到程序计数器 PC 中,不会改变当前的执行级别或恢复程序状态。
  • ERET 会加载 ELR_ELx 中的值到 PC,并从 SPSR_ELx 恢复状态寄存器。它会改变处理器的执行级别,通常是从更高的异常级别(EL1, EL2, EL3)返回到较低的应用级别(EL0)。
  • ERET 是一个更复杂的指令,它用于在更严格和受控的环境中切换上下文,如操作系统的中断处理。

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

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

相关文章

【数据结构】——栈与队列(附加oj题详解)深度理解

栈 1.栈的定义 栈:栈是仅限与在表尾进行插入或者删除的线性表 我们把允许一端插入和删除的一端叫做栈顶,另一端叫栈底,不含任何元素的栈叫做空栈,栈又叫做后进先出的线性表,简称LIFO结构 2.栈的理解 对于定义里面…

机器学习导论:概念、分类与应用场景

​​​​​​​目录 1.引言 2. 机器学习基本概念与分类方法 2.1. 基本概念 1.2. 分类方法 3.主要应用场景与现实案例剖析 3.1. 推荐系统 3.2. 金融风控 3.3. 医学诊断 3.4. 自然语言处理 4.结束语 1.引言 在数字化时代,数据已成为驱动社会进步的关键要素。…

面向对象的学习

封装 //用来描述一类事物的类,专业叫做:javabean类 //在javabean类是不写main方法的//一个java文件中可以定义多个类,且只能一个类是public修饰,而且public修饰的类名必须成为代码的文件名 ://在类中一般无需指定初始化值 存在默…

CleanMyMac X 4.15.1 for Mac 最新中文破解版 系统优化垃圾清理工具

CleanMyMac X for Mac 是一款功能更加强大的系统优化清理工具,相比于 CleanMyMac 4.15.1来说,功能增加了不少,此版本为4.15.1官方最新中英文正式破解版本,永久使用,解决了打开软件崩溃问题,最新版4.15.1版本…

centos7 安装es8.12.0

在CentOS操作系统上安装Elasticsearch(ES)通常涉及以下步骤。虽然您提供的信息中包含了多个不同时间点和版本的安装指南片段,但这里我会为您概述一个通用且适用于较新版本Elasticsearch(如7.x或8.x)的安装流程。请根据…

MYSQL数字函数实操宝典:场景化SQL语句一网打尽

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 MYSQL数字函数:不可不知的数据处理利器 文章目录 Part 1: 准备 &#x…

node.js 常见命令

1. npm init: 初始化一个新的Node.js项目,创建一个package.json文件。 2. npm install: 安装项目所需的所有依赖项。 3. npm run: 运行在package.json文件中定义的脚本。 4. node index.js: 运行一个Node.js文件。 5. node -v: 查看当前安装的Node.js版本号。 6. np…

3723. 字符串查询:做题笔记

目录 思路 代码 注意点 3723. 字符串查询 思路 这道题感觉和常见的前缀和问题不太一样,前缀和的另一种应用:可以统计次数。 这道题我们想判断一个单词的其中一段子序列A是否可以通过重新排列得到另一段子序列B。 我看到这道题的时候想着可能要判…

算法日记————对顶堆(4道题)

对顶堆的作用主要在于动态维护第k大的数字,考虑使用两个优先队列,一个大9999999999根堆一个小根堆,小根堆维护大于等于第k大的数字的数,它的堆顶就是堆内最小,第k大的数字,另外一个大根堆维护小于等于k的数…

FFTW算法库实现DCT变换

FFTW库安装与使用(3.3.5版本)_jhon-ranble-GitCode 开源社区 信号处理算法(4):全球最快的傅里叶变换算法(FFTW)-CSDN博客

资讯头条P3自媒体搭建

自媒体素材管理与文章管理 一.后台搭建 1.1 搭建自媒体网关 导入网关模块>>>在网关模块的pom.xml文件中添加该子模块>>>刷新maven <modules><module>heima-leadnews-app-gateway</module><!--新增--><module>heima-leadnew…

使用 Vue 框架踩过最大的坑是什么?怎么解决的?

在使用Vue框架开发过程中&#xff0c;开发者可能会遇到各种各样的问题。以下是一些常见的坑及其解决方法&#xff1a; 1. 数据响应式问题 问题描述&#xff1a;当我们向Vue实例的数据对象添加新的属性时&#xff0c;这些属性不会自动变成响应式的。 解决方法&#xff1a;使用…

虚幻C++

虚幻C 蓝图调用C中的函数和变量UPROPERTY 宏参数 蓝图调用C中的函数和变量 UPROPERTY 宏参数 //蓝图中调用函数 (蓝图可调用&#xff0c;显示名称) UFUNCTION(BlueprintCallable,Category"MyFunction") void MyFunction();//蓝图中调用参数 (蓝图中可编辑&#x…

大学生租房系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 系统功能…

【ppt技巧】给PPT添加打开加密密码的方法

PPT文件制作完成之后&#xff0c;为了保证内容泄露或者修改&#xff0c;我们可以给PPT文件设置一个打开密码来保护文件&#xff0c;今天分享PPT加密方法给大家。希望能够帮助大家保护好自己的PPT文件。 如果想要其他人需要输入正确的密码才能够打开文件查看并编辑&#xff0c;…

如何在CentOS使用Docker搭建Rsshub服务并实现无公网IP远程访问

文章目录 1. Docker 安装2. Docker 部署Rsshub3. 本地访问Rsshub4. Linux安装Cpolar5. 配置公网地址6. 远程访问Rsshub7. 固定Cpolar公网地址8. 固定地址访问 Rsshub是一个开源、简单易用、易于扩展的RSS生成器&#xff0c;它可以为各种内容生成RSS订阅源。 Rsshub借助于开源社…

Python-VBA编程500例-024(入门级)

字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有&#xff1a; 1、文本编辑及处理&#xff1a;在编写或编辑文本文件时&#xff0c;如使用文本编辑器或文本处理器&#xff0c;经常需要处理字符串并确定其在文件中的行数。这…

C#开发者必备!快速掌握onnxruntime实现YOWOv2视频动作检测技术!

C#开发者必备&#xff01;快速掌握onnxruntime实现YOWOv2视频动作检测技术&#xff01; 目录 介绍 效果 模型信息 项目 代码 Form1.cs YOWOv2.cs 下载 介绍 YOWOv2: A Stronger yet Efficient Multi-level Detection Framework for Real-time Spatio-temporal Action…

持续集成流水线介绍(CI)

目录 一、概述 二、持续集成的典型操作流程 2.1 概述 2.2 持续集成的操作流程图 2.3 持续集成关键流程说明 三、构建持续集成流水线的方式 3.1 依托云厂商能力 3.2 采用开源产品 3.3 企业自研 四、构建持续化集成流水线 4.1 基于GitHub的持续集成流水线&#xff08;公…

【氮化镓】GaN器件中关态应力诱导的损伤定位

概括总结&#xff1a; 这项研究通过低频1/f噪声测量方法&#xff0c;探究了在关态&#xff08;OFF-state&#xff09;应力作用下&#xff0c;AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;中由应力引起的损伤的定位。研究中结合了电致发光&#xff08;EL&#xf…