ARM处理器共有7种运行模式,如下表:

处理器模式 描述
用户模式(User, usr) 正常程序执行的模式
快速中断模式(FIQ, fiq) 用于高速数据传输和通道处理
外部中断模式(IRQ, irq) 用于通常的中断处理
特权模式(Supervisor, sve) 供操作系统使用的一种保护模式
数据访问中止模式(Abort, abt) 用于虚拟存储及存储保护
未定义指令中止模式(Undefined, und) 用于支持用过软件仿真硬件的协处理器
系统模式(System, sys) 用于运行特权级的操作系统任务

特权模式:除了用户模式之外的其他6种处理器模式统称为特权模式,这些模式下程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换;

异常模式:除了系统模式外的其他5种特权模式又称为异常模式;

处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换:

  • 大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统资源,也不能直接进行处理器模式的切换,当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式的切换;
  • 当应用程序发生异常中断时,处理器进入相应的异常模式,在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保存了运行状态信息)不被破坏;
  • 系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器,但是系统模式属于特权模式,可以访问所用的系统资源,也可以直接进行处理器模式切换,它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏;

ARM体系结构与编程读书笔记——处理器的运行模式的更多相关文章

  1. ARM体系结构与编程读书笔记——处理器的寄存器

    ARM处理器共有37个寄存器,其中包括: 31个通用寄存器,包括程序计数器(PC)在内,寄存器都是32位: 6个状态寄存器,这些寄存器都是32位的,目前只使用了其中12位: 通用寄存器 可以分为下面3 ...

  2. C++Windows核心编程读书笔记

    转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔 ...

  3. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  4. Node.js高级编程读书笔记Outline

    Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...

  5. python高级编程读书笔记(一)

    python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import ...

  6. ARM处理器的运行模式

    ARM处理器的7种运行模式 用户模式( usr ):ARM处理器正常的程序执行状态: 快速中断模式( fiq ):用于高速数据传输或通道处理: 外部中断模式( irq):用于通常的中断处理: 管理模式 ...

  7. unix环境高级编程-读书笔记与习题解答-第一篇

    从这周开始逐渐的进入学习状态,每天晚上都会坚持写c程序,并且伴随对这本书的深入,希望能写出更高质量的读书笔记和程序. 本书的第一章,介绍了一些关于unix的基础知识,在这里我不想去讨论linux到底是 ...

  8. UNIX网络编程--读书笔记

    会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要 ...

  9. MacTalk·人生元编程 - 读书笔记

    简介 <MacTalk·人生元编程>是一本随笔文集,主要内容来自作者的微信公众平台"MacTalk By 池建强".本书撰写于2013年,书中时间线却不止于此.作者以一 ...

随机推荐

  1. 使用注解和xml两种方式整合Activemq与spring(gradle工程)

    一.新建gradle工程 1.1 使用intellij新建gradle工程步骤省略 二.导入依赖,配置build.gradle plugins { id 'java' } group 'com.bdh ...

  2. Windows系统Python直接调用C++ DLL

    环境:Window 10,VS 2019, Python 2.7.12, 64bit 1,打开 VS 2019,新建C++ Windows 动态链接库工程 Example,加入下列文件,如果Pytho ...

  3. spring的控制器如何获取参数

    1.控制器代码 获取参数的注解 @RequestParam(name="name", required=false, defaultValue="World") ...

  4. Upgrading CentOS 6 to CentOS 7

    Upgrading CentOS 6 to CentOS 7 November 15th, 2018 — whplus PRE TASKS There are some tasks you can d ...

  5. java学习(东软睿道)2019-09-07(预课html基础)《随堂笔记》

    1. 文件名称.html 2. 后缀表示文件类型.txt .doc .ppt 3. 标签<html> <head> <body> 显示内容 <font siz ...

  6. ThreadLocal,Lock的事儿

    ThreadLocal作用 防止线程间的干扰 public interface Sequence { int getNumber(); } public class ClientThread exte ...

  7. 2.3负载均衡:Ribbon

    基于上一篇文章的工程,启动eureka-server 工程:启动service-hi工程,它的端口为8765:将service-hi的配置文件的端口改为8763,并启动,这时你会发现:service- ...

  8. 关于Linux fontconfig 字体库的坑

    01.安装字体软件 yum -y install fontconfig 然后把字体拷过去就行了 cd /usr/share/fonts fc-list 这是查看 02.拷贝字体到指定目录 cp sim ...

  9. 作业1:java虚拟机内存模型图示

    看了很多篇文章,整理成一幅图,但仍然有许多不解的地方,以后再接着完善,哪位大神看到不正确的地方,请指出,谢谢.

  10. request.getScheme() 使用方法(转)

    今天在看代码时,发现程序使用了 request.getScheme() .不明白是什么意思,查了一下.结果整理如下: 1.request.getScheme() 返回当前链接使用的协议:一般应用返回h ...