ARM-进入和退出异常中断的过程(六)

这篇具有很好参考价值的文章主要介绍了ARM-进入和退出异常中断的过程(六)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ARM 处理器对异常中断的响应过程

ARM 指令为三级流水线:取地,译码和执行

进入中断的时候 LR = PC -4
ARM-进入和退出异常中断的过程(六)
当出现异常时,ARM 内核自动执行以下操作

  • 将 cpsr 寄存器的值保存到 spsr_mode 寄存器中,备份寄存器指明了当前处理器的操作模式
  • 将程序返回地址存放在 lr_mode 寄存器中
  • 将CPSR模式位修改为与异常类型相关联的模式
    • CPSR 寄存器的其他位取决于 CP115 控制寄存器设置的值
    • T bit 位被设置为 CP15 TE bit
    • J bit 被清零,E bit 被设置为 EE bit
  • 将 PC 指向异常向量表对应的地址
    ARM-进入和退出异常中断的过程(六)

从异常中断处理程序中返回

中断向量表
ARM-进入和退出异常中断的过程(六)
链接寄存器(LR)用于在异常处理后存储适当的PC 地址,当程序返回时,LR 应该做出相应的调整。
从表中可以看到 ARM 共有 7 中异常,其中断向量表如下:

    ldr     pc, =Reset_Handler           /* Reset                  */
    ldr     pc, =Undefined_Handler       /* Undefined instructions */
    ldr     pc, =SVC_Handler             /* Supervisor Call        */
    ldr     pc, =PrefAbort_Handler       /* Prefetch abort         */
    ldr     pc, =DataAbort_Handler       /* Data abort             */
    .word   0                            /* RESERVED               */
    ldr     pc, =IRQ_Handler             /* IRQ interrupt          */
    ldr     pc, =FIQ_Handler             /* FIQ interrupt          */

ARM-进入和退出异常中断的过程(六)
异常程序返回有两个事情要做:

  • 从 spsr_mode 寄存器中恢复 cpsr 寄存器
  • 将程序返回地址写到 pc 寄存器

ARM-进入和退出异常中断的过程(六)文章来源地址https://www.toymoban.com/news/detail-511413.html

到了这里,关于ARM-进入和退出异常中断的过程(六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ARM处理器概述

    RISC处理器和CISC处理器 首先了解一下两种处理器名字: RISC(Reduced Instruction Set Computer): 精简指令集 处理器 与之相对应的是: CISC(Complex Instruction Set Computer): 复杂指令集 处理器 顾名思义,RISC比CISC更加简单,那么对于处理器来说什么能称为简单呢?可以联想为生活中可

    2024年02月13日
    浏览(57)
  • SSM整合(三) | 异常处理器 - 项目异常的处理方案

    异常处理器快速入门 程序开发过程中不可避免的会遇到异常现象 出现异常现象的常见位置与常见原因如下 : 框架内部抛出的异常:因使用不规范导致 数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超时) 业务层抛出的异常:因业务逻辑书写错误导致(例如

    2024年02月02日
    浏览(48)
  • Spring异常处理器

     问题:   程序允许不免的在各层都可能会产生异常,我们该如何处理这些异常? 如果只是在方法里面单独使用 try… catch… 语句去一个一个的进行捕捉处理的话,那毫无疑问是不现实的,因为异常数量是非常庞大的并且对于异常的出现种类是不可预料的,于是我们可以使用

    2024年02月13日
    浏览(46)
  • 全局异常处理器

    前言:由于 Controller 调用 Services ,最后调用 Mapper 来操作数据库,若 Mapper 操作数据库出问题了,此时页面报错会按照调用的原路径层层上报,最后未经处理的异常会上报至框架,最后服务器会向前端返回一个 JSON 的报错数据,而前端接收的是对 Result 封装过的 data 对象中的

    2024年02月11日
    浏览(49)
  • 除法的效率 arm处理器

    除法的效率 性能结论: 除法:545ms 乘法:93ms 差了3倍 代码: 测试结果 : void fun(Pack1* restrict in, Pack2* restrict out) ; __restrict__ 申明该指针为唯一的访问该内存的指针 优化成果: 时间优化为原来的82% 指令优化为74% cache miss 没有变化 优化对比 测试平台 MTK arm天机 8000

    2024年02月10日
    浏览(59)
  • SpringMVC之异常处理器

    SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver。 HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver(默认的)和 SimpleMappingExceptionResolver(自定义的)。 这里配置了两个异常,出现其中一个异常后跳转到error页面。 以上就是异

    2024年02月10日
    浏览(38)
  • 13、SpringMVC之异常处理器

    创建名为spring_mvc_exception的新module,过程参考9.1节和9.5节 SpringMVC 提供了一个处理控制器方法执行异常的接口:HandlerExceptionResolver HandlerExceptionResolver 接口的实现类有:DefaultHandlerExceptionResolver 和 SimpleMappingExceptionResolver 实际工作中,有时使用 SimpleMappingExceptionResolver 异常解析器

    2024年02月05日
    浏览(46)
  • Spring MVC 异常处理器

    如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: 编写controller 在index.jsp里面定义超链接

    2024年01月22日
    浏览(45)
  • ARM微处理器体系架构

    ARM(Advanced RISC Machine)微处理器体系架构是一种广泛应用于嵌入式系统和移动设备的处理器架构。它以其低功耗、高性能和高度可定制化等特点而闻名。本文将深入探讨ARM微处理器体系架构的原理、特点和应用场景。 以下是我整理的关于嵌入式开发的一些入门级资料,免费分

    2024年03月26日
    浏览(66)
  • 一文深入搞懂ARM处理器架构

    典型的微处理器由控制单元、程序计数器(PC)、指令寄存器(IR)、数据通道、存储器等组成 。 指令执行过程一般分为:   取指: 从存储器中获得下一条执行的指令读入指令寄存器; PC: 程序计数器, 总是指向下一条将要执行的指令; IR: 指令寄存器,用于保持已取得指令

    2024年04月28日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包