【ARM】-数据访问中止异常中断处理程序的返回

这篇具有很好参考价值的文章主要介绍了【ARM】-数据访问中止异常中断处理程序的返回。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

处理流程

当发生数据访问中止异常中断时,程序要返回到该有问题的数据指令处,重新访问该数据。因此数据访问中止异常中断程序应该返回到该数据访问中止异常中断的指令处,而不是像前面两种情况下返回到发生中断的指令的下一条指令。
数据访问中止异常中断是由数据访问指令产生的,当数据访问中止异常中断产生时,程序计数器 PC 的值已经更新,它指向当前指令的后 3 条指令(对于 ARM 系统来说它指向当前指令地址加 12 个字节的位置,对于 Thumb 指令来说,它指向当前指令加 6 个字节的位置)。
当数据访问中止异常中断发生时,处理器将 PC-4 的值保存到异常模式下的寄存器 LR_mode 中,这是 LR_mode 中的值 即为PC-4 ,即指向当前指令后的第二条指令。因此返回操作需要将 LR_mode - 8(指向当前指令) 赋给 PC,可以通过下面的指令来实现:

SUBS PC, LR, #8  // 注意 S ,指定了 S 意味着同时将SPSR 拷贝到 CPSR

该指令将寄存器 LR 中的值减 8 后,复制到程序计数器 PC 中,实现程序返回,同时将 SPSR_mode 寄存器内容复制到 CPSR 中。
当异常中断处理程序中使用了数据栈时,可以通过下面的指令在异常中断处理程序时保存被中断程序的执行现场,在退出异常中断处理程序时恢复被中断程序的执行现场。异常中断处理程序中使用的数据栈由用户提供。

subs lr, lr, #8
stmdb sp!, {r0-r12, lr}   // 保存现场 r0-r12 - reg_list
// user code
ldmia sp!, {r0-r12, pc}^  // 恢复现场 r0-r12 - reg_list

在上述指令中,reg_list 是异常中断处理程序中使用的寄存器列表。标识符 ^ 指示将 SPSR_mode 寄存器内容复制到 CPSR 寄存器中,该指令只能在特权模式下使用

示例

【ARM】-数据访问中止异常中断处理程序的返回,# qemu-ARM篇,arm,数据访问中止异常中断处理
1、假设instruction+0 指令地址,发生了数据访问中止异常中断
2、此时 PC 的值已经更新指向 instruction+3
3、进入指令预取中止异常中断处理程序后,LR_mode = PC -4,所以此时 LR 指向 instruction+2
4、数据访问中止异常中断处理完成之后,程序需要返回到有问题的数据指令处,即 instruction+0 处执行,所以将此时的 LR_mode 寄存器的值 -8 赋给 PC。文章来源地址https://www.toymoban.com/news/detail-532391.html

到了这里,关于【ARM】-数据访问中止异常中断处理程序的返回的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么?ARM异常中断处理流程?

    快速学习嵌入式开发其他基础知识? 返回专栏总目录 《嵌入式工程师自我修养/C语言》 Tip📌:鼠标悬停双虚线/句,可获得更详细的描述   ARM处理器有多种工作模式,如下表所示。应用程序正常运行时,ARM处理器工作在 用户模式(User mode) ,当程序运行出错或有中

    2024年02月21日
    浏览(133)
  • [ARM 汇编]进阶篇—数据处理指令—2.2.3 子程序调用和返回指令

    在 ARM 汇编中,子程序(也称为函数)是一段可重用的代码,用于执行特定任务。子程序调用和返回指令用于控制程序从一个位置跳转到子程序,执行子程序后再返回到跳转前的位置继续执行。在本节中,我们将详细介绍 ARM 汇编中的子程序调用和返回指令,并通过实例帮助你

    2024年02月07日
    浏览(54)
  • ARM实验6-基于中断的按键处理程序实验

    一、实验名称:基于中断的按键处理程序实验 二、实验目的:         1.掌握ARM处理器的中断处理过程。         2.掌握ARM处理器中断服务程序的编写方法。         3.通过该编程实验,进一步巩固和强化学生ARM汇编编程的能,ARM应用程序框架,培养学生实际应用的

    2024年02月08日
    浏览(43)
  • SpringMVC之JSON数据返回与异常处理机制

    目录 一.SpringMVC的JSON数据返回 1.导入Maven依赖 2.配置spring-mvc.xml 3.@ResponseBody注解的使用 3.1案例演示 1.List集合转JSON  2.Map集合转JSON  3.返回指定格式String 4. @ResponseBody用法  5.Jackson 5.1介绍 5.2常用注解 二.异常处理机制  1.为什么要全局异常处理 2.异常处理思路 3.SpringMVC异常分类

    2024年02月08日
    浏览(42)
  • 【ARM】-异常与中断

    中断(Interrupt)机制,即处理器在顺序执行程序指令流的过程中突然被别的请求打断而中止执行当前的程序,转而去处理别的事情,待其处理完了别的事情,然后重新回到之前程序中断的点继续执行之前的程序指令流,其要点如下 中断请求、中断源 打断处理器执行程序指令流的

    2024年02月12日
    浏览(39)
  • Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

            在我们的项目开发中,我们都会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,当然除了正常流程的数据返回格式需要统一以外,我们也需要对异常的情况进行统一的处理,以及项目必备的日志。         在项目开发中返回的是json格式的数据

    2024年01月19日
    浏览(43)
  • “深入理解SpringMVC的JSON数据返回和异常处理机制“

    在现代Web开发中,SpringMVC是一个广泛使用的框架,它提供了丰富的功能和灵活的配置选项。本文将深入探讨两个重要的主题:SpringMVC中的JSON数据返回和异常处理机制。我们将逐步介绍相关的配置和使用方法,并通过案例和综合实例来加深理解。 1.1 导入依赖 1.2 配置弹簧-MVC

    2024年02月08日
    浏览(34)
  • Wincc flexible 2008软件打开时提示“无法连接到SQL服务器”或异常中止时的处理对策

    使用 WinCC flexible 2008 (含WinCC flexible 2008 SP4)安装 Microsoft SQL Server 2005 Express 的问题。 说明 : 使用 WinCC flexible 安装程序卸载和重新安装 SQL server。 可能的原因 : SQL Server 2005 Express 的用户数据可能被损坏。 补救措施 : 先卸载 SQL Server 再重新安装 SQL Server。 步骤 : • 卸载“控制

    2024年02月06日
    浏览(58)
  • SpringMVC之JSON数据返回与异常处理机制---全方面讲解

         在Spring MVC中,当需要将数据 以JSON格式返回给客户端时 ,可以使用 @ResponseBody注解或@RestController注解将Controller方法的返回值直接转化为JSON格式并返回 。这使得开发者可以方便地将Java对象转换为JSON,并通过HTTP响应返回给客户端。Spring MVC框架会自动地处理这一转换过程

    2024年02月07日
    浏览(40)
  • 【ARM】-进入和退出异常中断的过程

    ARM 指令为三级流水线:取地,译码和执行 进入中断的时候 LR = PC -4 当出现异常时,ARM 内核自动执行以下操作 将 cpsr 寄存器的值保存到 spsr_mode 寄存器中,备份寄存器指明了当前处理器的操作模式 将程序返回地址存放在 lr_mode 寄存器中 将CPSR模式位修改为与异常类型相关联的

    2024年02月14日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包