ARM体系中的3种控制程序执行的方式

  1. 正常执行过程中,每执行1条ARM指令,PC的值加4个字节;每执行1条Thumb指令,PC的值加2个字节。整个过程按照顺序执行。
  2. 通过跳转指令,调到特定的地址开始执行或者特定的子程序出执行。B指令用于执行跳转;BL指令在执行跳转的同时,还保存了子程序的返回地址;BX指令在执行跳转的同时,根据目标地址的最低位可以将程序状态切换到Thumb状态;BLX指令等同于BL和BX指令的集合。
  3. 当异常中断发生时,系统执行完当前的指令后,将跳转到中断处理程序处。执行完毕后,返回到中断的指令的下一条指令开始继续执行。

异常中断的响应过程

  1. 保存处理器的状态、中断屏蔽位和各条件标志位。
  2. 设置CPSR让处理器进入对应的状态。
  3. 设置LR寄存器的返回地址。
  4. 设置PC寄存器为中断向量的地址,跳转到异常处理程序。

从异常处理程序返回

  1. 恢复处理器的状态:将SPSR的数据复制到CPSR中
  2. 返回到产生异常中断的指令的下一条指令处开始执行:将LR寄存器的数据复制到PC中

2—ARM中的异常中断的更多相关文章

  1. ARM体系的异常中断

    在ARM体系中,通常有3种方式控制处理器的流程  1:在正常执行过程中,每执行一条ARM指令,程序计数器寄存器PC的值加四个字节,在每执行一条Thumb指令,程序计数器寄存器PC的值加两个字节,整个过 ...

  2. ARM 中必须明白的几个概念

    文章具体介绍了关于ARM的22个常用概念. 1.ARM中一些常见英文缩写解释 MSB:最高有效位: LSB:最低有效位: AHB:先进的高性能总线: VPB:连接片内外设功能的VLSI外设总线: EM ...

  3. ARM异常中断返回的几种情况

    在学习韦老师视频中中断异常部分时候,对于发生中断时需要执行的#保存异现场 #恢复现场 中的“返回”弄不清楚,查阅网络文章后,发现一篇概述我觉得我能理解的一篇如下:   重要基础知识:R15(PC)总是 ...

  4. uboot中添加FIQ中断及相关问题

    本文主要说明了在uboot中添加FIQ中断时遇到的问题以及对应的解决办法. 首先交代一下项目的软硬件环境.硬件方面,使用s3c2440作为主控芯片,外接串口.网卡等设备.软件方面,主控芯片上电后运行u ...

  5. RTT之内存管理及异常中断

    内存管理分静态内存管理和动态内存管理(根据大小又分2种) 静态内存管理:创建.删除.初始化.解绑.申请和释放.初始化内存池是属于静态内存管理,与创建内存池不同的是,此处内存池对象所使用的内存空间是由用 ...

  6. 夯实Java基础系列10:深入理解Java中的异常体系

    目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...

  7. s3c2440裸机-异常中断(一. 异常、中断的原理与流程)

    1.异常中断概述 在arm架构的处理器中,cpu有7中工作模式,2中工作状态. 1.CPU模式(Mode): 7种Mode: 除了usr/sys,其他5种都是异常模式.我们知道中断属于异常的2中,中断 ...

  8. 如何将已部署在ASM的资源迁移到ARM中

    使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到AR ...

  9. TMS320C64X+ 中使用EDMA3中断

    关于EDMA3,TI的文档有详细的介绍.园子里的文章 http://www.cnblogs.com/fpga/archive/2009/10/13/1582516.html,http://www.cn ...

随机推荐

  1. C++ 基本数据类型,常量,变量

    基本数据类型 整数类型 基本的整数类型(int) 按符号分 符号的 (signed) 无符号的(unsigned) 按照数据范围分 短整数(short) 长整数(long) 长长整数(long lon ...

  2. 换工作之后需要兼容ie8的我

    以下是我ie8踩得坑,总结了一下,以免以后会遇到,虽然有的度娘也能搜到但是偶尔看看自己的文章也能学到很多(后续如有添加继续补上) 1,ie8 input框建议不要使用line-height去撑高度,在 ...

  3. web.xml 设置字符编码

    个人理解  就是为了防止在前端输入的数据到了后台发生乱码 直接复制到web.xml里面就可以使用 亲测 能用!!! <!-- 前端过滤器设置字符编码 --> <filter> ...

  4. WebvirtCloud安装(CentOS7)

    1.安装依赖包wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum -y install p ...

  5. Vue2.0增删改查案例(Vue+Less+LocalStorage)

    本人写的小程序,功能还在完善中,欢迎扫一扫提出宝贵意见!           Vue+Less+LocalStorage 安装Less:npm install less less-loader --s ...

  6. word中一页中添加两种不同的页码

    ,在文档编写的过程中,可能一个页面需要编写两个不同的页码,举个例子,在页脚有一个页码是整个文档的页码,页眉有一个页码,是每个章节的页码: 设置如下: 此处选中这个图标是为了能够看到分节符和其他的符号 ...

  7. C# 异步(上)

    新进阶的程序员可能对async.await用得比较多,却对之前的异步了解甚少.本人就是此类,因此打算回顾学习下异步的进化史. 本文主要是回顾async异步模式之前的异步,下篇文章再来重点分析async ...

  8. 配置rpm本地源及局域网环境下使用

    LInux个人开发过程中可以直接连到公网,所以想要安装各种软件时直接安装即可,但工作环境往往很让人头疼. 如果应用场景是没法链接外网的,公司内部绝大多数情况下是在自己的局域网下玩,这时候想装个软件是相 ...

  9. 深度学习硬件:CPU、GPU、FPGA、ASIC

    人工智能包括三个要素:算法,计算和数据.人工智能算法目前最主流的是深度学习.计算所对应的硬件平台有:CPU.GPU.FPGA.ASIC.由于移动互联网的到来,用户每天产生大量的数据被入口应用收集:搜索 ...

  10. WinHex18.4算法分析

    经过分析,注册码分为六个部分: Name: "xxx" Addr1: "yyy" Addr2: "zzz" 这三个字符不代表长度 Key1: ...